Чому виникають віруси на сайті та як їх позбутись

Щодня тисячі сайтів на WordPress стають жертвами зловмисників. За різними оцінками, близько 4% активних WordPress-сайтів містять шкідливий код у будь-який момент часу. Для власника бізнесу це означає втрачених клієнтів, падіння в пошуковій видачі Google і пряму загрозу репутації.

Ця стаття — практичний посібник. Розберемо, як виявити зараження, покроково видалити шкідливий код, відновити позиції в Google і побудувати захист, щоб ситуація не повторилась. Інструкція підходить як для WordPress, так і для сайтів на інших CMS чи без CMS взагалі.

Як зрозуміти, що сайт заражений

Часто власник дізнається про зараження від клієнтів або з листа від Google. Щоб не чекати до цього моменту, стежте за такими ознаками:

Google показує попередження

У пошуковій видачі з'являється позначка «Цей сайт може завдати шкоди вашому комп'ютеру», або браузер блокує перехід червоним екраном. Перевірте статус у Google Search Console → розділ «Безпека та заходи, вжиті вручну».

Незнайомі редиректи

Відвідувачі потрапляють на чужі сайти — казино, фармацевтику, фішингові сторінки. Редирект може спрацьовувати тільки з мобільних пристроїв або тільки для нових відвідувачів, тому перевіряйте сайт в режимі інкогніто з різних пристроїв.

Різке падіння трафіку

Якщо Google Analytics показує раптове падіння відвідуваності на 30-70% без видимих причин — це може бути наслідком потрапляння сайту в чорний список Google.

Чужий контент на сторінках

З'являються посилання, банери або цілі сторінки, які ви не створювали. Часто це — «японський SEO-спам»: тисячі сторінок японською з'являються в індексі Google під вашим доменом.

Хостинг блокує акаунт

Хостинг-провайдер відключає сайт через надмірне навантаження, спам-розсилку з вашого сервера або виявлений шкідливий код. Якщо хостинг це зробив — зараження вже серйозне.

Сайт працює повільно без причини

Шкідливий код часто споживає ресурси сервера — майнінг криптовалют, розсилка спаму, участь у DDoS-атаках. Якщо швидкість сайту різко впала — перевірте навантаження на хостингу.

Антивірус блокує сайт у відвідувачів

Клієнти повідомляють, що їх антивірус (Kaspersky, ESET, Norton) не дає відкрити ваш сайт. Це означає, що сайт вже потрапив у бази шкідливих ресурсів.

Невідомі користувачі в адмінці

У WordPress з'являються нові адміністратори, яких ви не створювали. Це перша дія зловмисника після отримання доступу — створити «чорний хід» для повернення.

Що таке шкідливий код

Шкідливий код — це програми або скрипти, створені з метою нанесення шкоди сайту або його користувачам. Він може виконувати різноманітні дії: крадіжка даних, перенаправлення трафіку на фішингові сторінки, розсилка спаму, майнінг криптовалюти за рахунок ресурсів вашого сервера.

Шкідливий код буває різним. Бекдори — приховані точки входу, через які зловмисник повертається навіть після очищення. Вебшелли — скрипти для управління сервером через браузер. Ін'єкції — фрагменти коду, вставлені в існуючі файли теми чи плагінів. Найнебезпечніше — бекдори, бо вони дозволяють заражати сайт повторно.

Причини появи вірусів

Розуміння причин допоможе закрити вразливості ще до зараження. Ось головні шляхи проникнення:

  • Застарілі плагіни та теми — причина ~70% зламів WordPress. Кожне оновлення закриває знайдені вразливості. Пропустили оновлення — залишили відчинені двері. Детальніше — у статті як безпечно оновити WordPress.
  • Піратські (nulled) плагіни та теми — безплатні версії преміальних продуктів майже завжди містять вбудований шкідливий код. Економія $50 на плагіні може коштувати тисячі доларів на відновлення.
  • Слабкі паролі — прості паролі або використання одного пароля для адмінки, FTP і хостингу. Боти перебирають мільйони комбінацій щодобово.
  • SQL-ін'єкції — зловмисники використовують вразливі форми введення для прямого доступу до бази даних. Особливо небезпечно для сайтів з власним кодом без належного екранування запитів.
  • Міжсайтовий скриптинг (XSS) — вставка шкідливого JavaScript у веб-сторінки, що дозволяє виконувати дії від імені користувача, зокрема красти авторизаційні cookie.
  • Ненадійний хостинг — на дешевому shared-хостингу зараження одного сайту може поширитись на сусідні акаунти. Як обрати надійний хостинг.
  • Заражений комп'ютер адміністратора — кейлогер чи троян на вашому ПК перехоплює паролі від FTP, хостингу та адмінки.

Хочете знати що гальмує ваш сайт?

SEO-аудит — знайду технічні проблеми і дам план виправлень

Замовити аудит

Покрокова інструкція з видалення вірусів

Не панікуйте. Дійте послідовно — кожен крок важливий. Пропуск будь-якого етапу може призвести до повторного зараження.

Крок 1. Ізолюйте сайт

Увімкніть режим обслуговування або тимчасово закрийте доступ через .htaccess. Це зупинить поширення шкідливого коду на відвідувачів і збереже репутацію домену. Якщо хостинг ще не заблокував сайт — зробіть це самостійно.

Крок 2. Створіть резервну копію

Зробіть повний бекап файлів і бази даних у поточному стані. Так, з вірусом. Це страховка — якщо під час очищення щось піде не так, ви зможете відкотити зміни. Зберігайте цей бекап окремо від чистих копій і позначте його як заражений.

Крок 3. Проскануйте сайт

Використайте кілька інструментів — жоден сканер не знаходить 100% загроз:

  • Wordfence (плагін WordPress) — глибоке сканування файлів ядра, тем і плагінів
  • Sucuri SiteCheck (онлайн) — перевірка без встановлення на сервер
  • MalCare (сервіс) — автоматичне сканування і видалення
  • ClamAV (серверний) — якщо маєте SSH-доступ

Крок 4. Визначте точки входу

Перевірте логи доступу на хостингу. Шукайте: POST-запити до невідомих файлів, запити до wp-login.php з підозрілих IP, нещодавно змінені файли (команда find . -mtime -7 -type f покаже файли, змінені за останній тиждень). Без визначення точки входу зараження повториться.

Крок 5. Видаліть шкідливий код

Два підходи залежно від масштабу зараження:

Чисте відновлення (рекомендовано): завантажте свіжі файли ядра WordPress з wordpress.org, перевстановіть плагіни та тему з офіційних джерел. Перенесіть тільки wp-config.php (перевіривши на чужий код) і папку uploads (просканувавши на PHP-файли — їх там бути не повинно).

Ручне очищення: якщо є кастомні зміни в темі — порівняйте файли з оригіналом через diff. Шукайте: функції base64_decode, eval, str_rot13, gzinflate в нетипових місцях. Перевірте .htaccess у корені та всіх підкаталогах — зловмисники часто додають редиректи саме сюди.

Крок 6. Очистіть базу даних

Шкідливий код може бути не тільки в файлах. Перевірте таблиці wp_options (підозрілі автозавантажувані опції), wp_posts (ін'єкції JavaScript у контент) і wp_users (невідомі адміністратори). Видаліть усіх користувачів, яких ви не створювали.

Крок 7. Змініть усі паролі

Всі без винятку: адмінка WordPress, FTP/SFTP, панель хостингу, база даних (і оновіть значення в wp-config.php), поштові акаунти, пов'язані з сайтом. Оновіть секретні ключі WordPress — рядки AUTH_KEY, SECURE_AUTH_KEY та інші в wp-config.php. Генератор нових ключів є на api.wordpress.org.

Крок 8. Перевірте результат

Повторно проскануйте сайт усіма інструментами з кроку 3. Перевірте сайт з мобільного, з різних браузерів, через VPN. Переконайтесь, що редиректи зникли, чужий контент не з'являється, хостинг не фіксує аномальне навантаження.

Що робити після очищення

Зняти блокування Google

Якщо Google позначив сайт як небезпечний — подайте запит на повторну перевірку через Google Search Console → «Безпека та заходи, вжиті вручну» → «Запросити перевірку». Google зазвичай розглядає запит протягом 1-3 днів.

Відновити позиції в пошуку

Після зняття блокування трафік повертається поступово — зазвичай протягом 2-4 тижнів. Прискорити процес допоможе повторне надсилання sitemap, перевірка індексації ключових сторінок і базова SEO-оптимізація.

Прибрати зі списків антивірусів

Крім Google, сайт може потрапити в бази Norton, McAfee, ESET, Яндекс. Перевірте через VirusTotal і подайте запити на перевірку в кожному сервісі, де домен позначений як шкідливий.

Моніторинг протягом місяця

Перші 30 днів після очищення — критичний період. Щодня перевіряйте: логи сервера, цілісність файлів, нових користувачів в адмінці. Якщо зараження повториться — ймовірно, залишився бекдор, якого сканер не знайшов.

Як захиститися від атак

  • Двофакторна аутентифікація (2FA) — додатковий рівень захисту через SMS або мобільний додаток. Навіть якщо пароль вкрадено — без другого фактора зловмисник не увійде.
  • Складні унікальні паролі — мінімум 16 символів, різні для кожного сервісу. Використовуйте менеджер паролів (Bitwarden, 1Password).
  • Плагіни безпеки — Wordfence або iThemes Security для WordPress. Базовий захист: файрвол, блокування брутфорсу, моніторинг змін файлів.
  • Обмеження доступу до адмінки — змініть стандартний URL /wp-admin, обмежте доступ за IP або додайте HTTP-аутентифікацію.
  • Моніторинг активності — логування входів в адмінку, відстеження змін файлів, сповіщення про підозрілі дії.
  • HTTPS — обов'язкове шифроване з'єднання через SSL-сертифікат.

Кращі практики безпеки

  • Регулярні оновлення — WordPress, плагіни, теми. Увімкніть автооновлення для мінорних релізів. Великі оновлення — робіть вручну з бекапом. Як оновити WordPress безпечно.
  • Мінімум плагінів — кожен плагін — потенційна вразливість. Видаліть все, що не використовуєте. Це також типова помилка при створенні сайту — ставити десятки плагінів «про запас».
  • Надійний хостинг — з ізоляцією акаунтів, автобекапами і захистом від DDoS. Як обрати хостинг.
  • Web Application Firewall — фільтрація шкідливого трафіку до того, як він досягне сайту. Детальніше про WAF і захист від DDoS.
  • SSL-сертифікат — шифрує з'єднання і підвищує довіру Google. Навіщо потрібен SSL.
  • Регулярна технічна підтримка — моніторинг, бекапи, оновлення безпеки. Що входить у підтримку сайту.
  • Щоденні бекапи — зберігайте копії мінімум за 30 днів. Бекап на тому ж сервері — не бекап.
  • Навчання команди — кожна людина з доступом до адмінки повинна знати основи безпеки: не відкривати підозрілі посилання, не встановлювати невідомі плагіни, не використовувати прості паролі.

Повний перелік кроків — у чеклісті безпеки сайту.

Коли звертатися до спеціаліста

Базове зараження — один заражений плагін, очевидний шкідливий код — можна вирішити самостійно за інструкцією вище. Але є ситуації, де самодіяльність може зробити гірше:

  • Зараження повертається після очищення — залишився бекдор, який ви не знайшли
  • Заражено ядро CMS і базу даних одночасно
  • Сайт використовується для спам-розсилки або DDoS — хостинг загрожує видалити акаунт
  • Google заблокував домен і повторна перевірка не проходить
  • Ви не маєте SSH-доступу і не можете перевірити логи сервера
  • Є підозра на витік клієнтських даних — тут потрібен ще й юридичний аспект

У таких випадках — замовте професійне видалення вірусів. Спеціаліст знайде і закриє всі бекдори, очистить базу, відновить файли і налаштує захист від повторного зараження. Вартість очистки завжди дешевша за наслідки повторного зламу.

Часті запитання

Ознаки: Google показує попередження «Цей сайт може завдати шкоди», з'являються чужі посилання або редиректи, хостинг блокує акаунт, різко впала відвідуваність, антивірус блокує сайт у користувачів, з'явились невідомі адміністратори в панелі WordPress.

Основні шляхи: застарілі плагіни та CMS (близько 70% випадків), піратські (nulled) теми та плагіни, слабкі паролі, заражений комп'ютер адміністратора, ненадійний хостинг, завантаження файлів з неперевірених джерел.

Базове зараження — так, за покроковою інструкцією. Потрібно: ізолювати сайт, створити бекап, просканувати, видалити шкідливий код, оновити всі паролі. Якщо зараження повертається або заражено базу даних — краще звернутись до спеціаліста.

Обов'язковий мінімум: регулярні оновлення CMS та плагінів, складні унікальні паролі, двофакторна автентифікація, щоденні бекапи, файрвол (Wordfence для WordPress), моніторинг змін файлів, надійний хостинг.

Залежить від складності. Базова очистка — від кількох годин роботи. Складні випадки з глибоким зараженням, відновленням репутації в Google та захистом від повторного зараження — значно довше і дорожче. У будь-якому разі профілактика дешевша за лікування.

Після повного очищення сайту подайте запит на повторну перевірку через Google Search Console → розділ «Безпека та заходи, вжиті вручну». Google перевірить сайт протягом 1-3 днів. Позиції в пошуку відновлюються поступово протягом 2-4 тижнів.

WordPress — найпопулярніша CMS у світі (близько 40% всіх сайтів), тому він найчастіша ціль. Але сам WordPress досить безпечний — проблеми створюють застарілі плагіни, піратські теми та слабкі паролі. Правильно налаштований WordPress з оновленнями і безпековими плагінами зламати дуже складно.

Мінімум — щотижня автоматичне сканування через Wordfence або MalCare. Додатково — ручна перевірка після кожного оновлення плагінів, після додавання нових користувачів, після будь-яких підозрілих змін у трафіку або поведінці сайту.

Висновок

Віруси на сайті — не вирок, але проблема, яка вимагає швидкої та системної реакції. Ключові правила: ізолювати → просканувати → очистити → змінити паролі → налаштувати захист. Пропуск будь-якого кроку — ризик повторного зараження.

Найкраща стратегія — профілактика. Регулярні оновлення, складні паролі, надійний хостинг і щоденні бекапи коштують набагато менше, ніж відновлення після зламу. Якщо ваш сайт давно не оновлювався — це перший крок до проблем з безпекою.

Зіткнулися з вірусами або підозрюєте зараження? Замовте професійне видалення вірусів — поверну сайт у безпечний стан і закрию всі вразливості. Хочете переконатися, що ваш сайт захищений? Замовте SEO-аудит — перевірю технічний стан, безпеку і дам план дій.

Читайте також