Як ми рятували сайт від хакерської атаки
Одного дня клієнт отримав листа від хостингової компанії: «Ваш сайт споживає критично більше ресурсів процесора, ніж передбачено тарифом». Для більшості власників сайтів це виглядає як технічна дрібниця. Насправді це є перший дзвіночок, що щось серйозно пішло не так. Ми одразу взялись за роботу.
01 Лист від хостингу — перший сигнал тривоги
Хостинг-компанія надіслала автоматичний лист із попередженням: навантаження на процесор HTTP-сервера різко вистрибнуло вгору і тримається на аномальному рівні. Такі листи хостери зазвичай надсилають, коли сайт починає заважати іншим клієнтам на shared-хостингу або коли ресурс наближається до межі тарифного плану.
Перша реакція багатьох — «напевно, трафік виріс» або «оновилась якась тема». Але ми знаємо: нормальний органічний трафік дає рівне, передбачуване навантаження. Різкий стрибок — це або бот-атака, або щось заражено на самому сайті.
Графік навантаження на процесор HTTP-сервера (%)
Місяцями — стабільний фон. Наприкінці червня — різкий пік до ~55%, після якого видно вжиті заходи.

02 Аналіз HTTP-логів: підтверджуємо атаку
Першим ділом — HTTP access logs. Це сирий журнал усіх запитів до сервера: IP-адреса, час, URL, статус відповіді. Якщо вміти їх читати то вони розкажуть все.
Що ми побачили: сотні тисяч запитів з кількох IP-адрес за лічені хвилини. Однакові URL — переважно сторінки авторизації адмін-панель. Патерн типовий: brute force attack — автоматичний перебір паролів. Зловмисники намагались отримати доступ до панелі управління сайтом.
Паралельно — аномальне навантаження на базу даних. Кожен запит до сторінки входу — це запит до БД. Тисячі запитів за хвилину — і сервер лягає.
Кількість операцій на сервері баз даних
У пік атаки — близько 4,5 мільярда умовних одиниць навантаження. Після блокування — повернення до норми.

03 Миттєве блокування: .htaccess як перший рубіж
Коли діагноз поставлено — діяти треба без зволікань. Кожна хвилина атаки — це навантаження на сервер, ризик блокування хостером і потенційна загроза злому.
Крок перший: блокуємо IP-адреси зловмисників на рівні веб-сервера через файл .htaccess. Це найшвидший спосіб — запит просто не доходить до PHP і бази даних, а відповідає сам Apache.
# Блокування зловмисних IP-адрес
<RequireAll>
Require all granted
Require not ip 185.220.101.0/24
Require not ip 45.155.204.0/24
</RequireAll>
Крок другий: захищаємо панель управління від подальшого перебору паролів. Для WordPress додаткова HTTP-авторизація перед wp-login.php. Для інших CMS аналогічний механізм. Навіть якщо зловмисник оминув блокування IP — він упереться у другу стіну.
<Files wp-login.php>
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/user/.htpasswd
Require valid-user
</Files>
04 Оптимізація сервера: статичні сторінки помилок
Навіть заблоковані IP продовжували долбитись у сервер і отримували відповідь 401 або 403 все одно генерувалась PHP, що давало зайве навантаження. Вирішення просте й ефективне: прописати статичні HTML-сторінки для помилок.
Створили мінімалістичні сторінки 401.html і 403.html і налаштували Apache обслуговувати їх напряму, без залучення PHP і бази даних:
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
Тепер на кожен заблокований запит сервер витрачає мінімум ресурсів — просто повертає готовий HTML-файл. Навантаження на процесор і БД різко падає навіть при тривалій атаці.
05 Cloudflare: фінальний захисний екран
Блокування на рівні .htaccess це ефективно, але реактивно: спочатку атака доходить до сервера, потім ми її блокуємо. Правильне рішення це зупинити зловмисний трафік ще до того, як він торкнеться вашого хостингу.
Підключили домен до Cloudflare. Сервіс виступає проксі між відвідувачем і сервером: фільтрує підозрілий трафік, розпізнає ботів, блокує відомі шкідливі IP на рівні мережі. При цьому реальним відвідувачам сайт відкривається ще швидше — завдяки CDN-кешуванню.
- DDoS-захист і фільтрація ботів
- SSL-сертифікат і примусове HTTPS
- CDN-кешування статичних ресурсів
- Гео-блокування підозрілих країн
- Правила файрволу для конкретних URL
Після підключення Cloudflare навантаження на сервер повернулось до норми. Погляньте на графіки — чіткий пік атаки і плавне повернення до звичного фону після вжитих заходів.
Результат: від аварії до спокою
Що зробити прямо зараз — наші рекомендації
Ця ситуація ще раз показує, що більшість проблем із безпекою можна або попередити, або виявити дуже рано знатючи на що дивитись. Ось практичний чекліст.
Якщо ваш хостинг надає графіки CPU і DB — увімкніть щоденну розсилку або перевіряйте раз на тиждень. Аномалія завжди видна заздалегідь, ще до того як проблема стане критичною.
Це критично важливо. Якщо зловмисник завантажив shell або змінив файли ви дізнаєтесь про це одразу, а не через тиждень. Більшість хостингових панелей (cPanel, ISPmanager) мають такий інструмент. Використовуйте його.
Два рівні захисту — HTTP Basic Auth плюс складний пароль адміністратора — різко знижують шанси на злом навіть при тривалій атаці.
Cloudflare дає суттєвий захист від DDoS і ботів.
Логи це чесний запис того, що відбувається з вашим сайтом. Навчіться відрізняти нормальний трафік від підозрілого. Або звертайтесь до нас, розберемось разом.
Висновок
Хакерські атаки це не лише про великий бізнес. Під удар потрапляють звичайні сайти малого бізнесу: інтернет-магазини, корпоративні сайти, блоги. Часто мета не вкрасти дані, а використати ресурси сервера для подальших атак або розсилки спаму.
Гарна новина: від переважної більшості атак можна захиститись простими методами. Але, якщо не моніторити сервер то можна не помітити проблему тижнями.
Якщо ваш сайт поводиться дивно, хостинг скаржиться на навантаження або ви просто хочете перевірити безпеку — напишіть нам. Ми подивимось на ваші логи і скажемо, що відбувається.
Часті запитання
Найчастіші ознаки: сайт сповільнився або лягає, хостинг надсилає попередження про перевантаження, різко виросли запити до бази даних, з’явились незнайомі файли на сервері. Аналіз HTTP-логів підтвердить або спростує підозри протягом кількох хвилин.
Cloudflare потужний перший рубіж, але не єдиний. Ефективний захист це комплекс: Cloudflare + правильно налаштований .htaccess + захищена панель управління + моніторинг змін файлів + регулярні оновлення CMS і плагінів. Один інструмент не закриє всі вразливості.
Brute force це автоматичний перебір паролів. Боти надсилають тисячі запитів на сторінку входу, намагаючись підібрати вірну комбінацію логіну і пароля. Небезпека подвійна: по-перше, може вдатись підібрати пароль і отримати доступ до сайту; по-друге, навіть невдала атака вбиває сервер потоком запитів до бази даних.
Базовий захист .htaccess, HTTP-авторизація, підключення Cloudflare від 2500 грн. Потрібен лише час фахівця на налаштування. Платні інструменти (Cloudflare Pro, спеціалізовані плагіни безпеки) додають можливості, але для більшості малих і середніх сайтів безкоштовного набору достатньо.
