Чому виникають віруси на сайті та як їх позбутись
Щодня тисячі сайтів на 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-аудит — перевірю технічний стан, безпеку і дам план дій.