Безпека сайтуБлог

Як ми рятували сайт від хакерської атаки

Захист серверів від кібератаки: адміністратор налаштовує безпеку, що блокує шкідливий трафік.
Безпека сайтів · Реальний кейс

Як ми рятували сайт від хакерської атаки

Одного дня клієнт отримав листа від хостингової компанії: «Ваш сайт споживає критично більше ресурсів процесора, ніж передбачено тарифом». Для більшості власників сайтів це виглядає як технічна дрібниця. Насправді це є перший дзвіночок, що щось серйозно пішло не так. Ми одразу взялись за роботу.

01 Лист від хостингу — перший сигнал тривоги

Хостинг-компанія надіслала автоматичний лист із попередженням: навантаження на процесор HTTP-сервера різко вистрибнуло вгору і тримається на аномальному рівні. Такі листи хостери зазвичай надсилають, коли сайт починає заважати іншим клієнтам на shared-хостингу або коли ресурс наближається до межі тарифного плану.

Перша реакція багатьох — «напевно, трафік виріс» або «оновилась якась тема». Але ми знаємо: нормальний органічний трафік дає рівне, передбачуване навантаження. Різкий стрибок — це або бот-атака, або щось заражено на самому сайті.

Графік навантаження на процесор HTTP-сервера (%)
Місяцями — стабільний фон. Наприкінці червня — різкий пік до ~55%, після якого видно вжиті заходи.

Графік процесорного навантаження на HTTP-сервері — пік атаки наприкінці червня
Графік процесорного навантаження на HTTP-сервері — пік атаки наприкінці червня

02 Аналіз HTTP-логів: підтверджуємо атаку

Першим ділом — HTTP access logs. Це сирий журнал усіх запитів до сервера: IP-адреса, час, URL, статус відповіді. Якщо вміти їх читати то вони розкажуть все.

Що ми побачили: сотні тисяч запитів з кількох IP-адрес за лічені хвилини. Однакові URL — переважно сторінки авторизації адмін-панель. Патерн типовий: brute force attack — автоматичний перебір паролів. Зловмисники намагались отримати доступ до панелі управління сайтом.

Паралельно — аномальне навантаження на базу даних. Кожен запит до сторінки входу — це запит до БД. Тисячі запитів за хвилину — і сервер лягає.

Кількість операцій на сервері баз даних
У пік атаки — близько 4,5 мільярда умовних одиниць навантаження. Після блокування — повернення до норми.

Графік навантаження на сервер баз даних — пік атаки близько 4,5 млрд операцій
Графік навантаження на сервер баз даних — пік атаки близько 4,5 млрд операцій

03 Миттєве блокування: .htaccess як перший рубіж

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

Крок перший: блокуємо IP-адреси зловмисників на рівні веб-сервера через файл .htaccess. Це найшвидший спосіб — запит просто не доходить до PHP і бази даних, а відповідає сам Apache.

.htaccess — блокування IP
# Блокування зловмисних 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 — він упереться у другу стіну.

.htaccess — захист wp-login.php
<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 і бази даних:

.htaccess — статичні сторінки помилок
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html

Тепер на кожен заблокований запит сервер витрачає мінімум ресурсів — просто повертає готовий HTML-файл. Навантаження на процесор і БД різко падає навіть при тривалій атаці.

05 Cloudflare: фінальний захисний екран

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

Підключили домен до Cloudflare. Сервіс виступає проксі між відвідувачем і сервером: фільтрує підозрілий трафік, розпізнає ботів, блокує відомі шкідливі IP на рівні мережі. При цьому реальним відвідувачам сайт відкривається ще швидше — завдяки CDN-кешуванню.

🛡️ Що дає Cloudflare безкоштовно:
  • DDoS-захист і фільтрація ботів
  • SSL-сертифікат і примусове HTTPS
  • CDN-кешування статичних ресурсів
  • Гео-блокування підозрілих країн
  • Правила файрволу для конкретних URL

Після підключення Cloudflare навантаження на сервер повернулось до норми. Погляньте на графіки — чіткий пік атаки і плавне повернення до звичного фону після вжитих заходів.

Результат: від аварії до спокою

< 2 год від першого листа хостера до повного вирішення проблеми
0 успішних входів зловмисників — панель управління не була скомпрометована
↓ 95% зниження навантаження на процесор і базу даних після комплексних заходів

Що зробити прямо зараз — наші рекомендації

Ця ситуація ще раз показує, що більшість проблем із безпекою можна або попередити, або виявити дуже рано знатючи на що дивитись. Ось практичний чекліст.

📊 Підключіть щоденний звіт про навантаження

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

🔔 Увімкніть моніторинг змін файлів на сервері

Це критично важливо. Якщо зловмисник завантажив shell або змінив файли ви дізнаєтесь про це одразу, а не через тиждень. Більшість хостингових панелей (cPanel, ISPmanager) мають такий інструмент. Використовуйте його.

🔐 Захистіть панель управління додатковою авторизацією

Два рівні захисту — HTTP Basic Auth плюс складний пароль адміністратора — різко знижують шанси на злом навіть при тривалій атаці.

☁️ Підключіть Cloudflare

Cloudflare дає суттєвий захист від DDoS і ботів. 

📋 Читайте HTTP-логи при будь-якій аномалії

Логи це чесний запис того, що відбувається з вашим сайтом. Навчіться відрізняти нормальний трафік від підозрілого. Або звертайтесь до нас, розберемось разом.

Висновок 

Хакерські атаки  це не лише про великий бізнес. Під удар потрапляють звичайні сайти малого бізнесу: інтернет-магазини, корпоративні сайти, блоги. Часто мета не вкрасти дані, а використати ресурси сервера для подальших атак або розсилки спаму.

Гарна новина: від переважної більшості атак можна захиститись простими методами. Але, якщо не моніторити сервер то можна не помітити проблему тижнями.

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

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

Найчастіші ознаки: сайт сповільнився або лягає, хостинг надсилає попередження про перевантаження, різко виросли запити до бази даних, з’явились незнайомі файли на сервері. Аналіз HTTP-логів підтвердить або спростує підозри протягом кількох хвилин.

Cloudflare  потужний перший рубіж, але не єдиний. Ефективний захист це комплекс: Cloudflare + правильно налаштований .htaccess + захищена панель управління + моніторинг змін файлів + регулярні оновлення CMS і плагінів. Один інструмент не закриє всі вразливості.

Brute force це автоматичний перебір паролів. Боти надсилають тисячі запитів на сторінку входу, намагаючись підібрати вірну комбінацію логіну і пароля. Небезпека подвійна: по-перше, може вдатись підібрати пароль і отримати доступ до сайту; по-друге, навіть невдала атака вбиває сервер потоком запитів до бази даних.

Базовий захист  .htaccess, HTTP-авторизація, підключення Cloudflare  від 2500 грн. Потрібен лише час фахівця на налаштування. Платні інструменти (Cloudflare Pro, спеціалізовані плагіни безпеки) додають можливості, але для більшості малих і середніх сайтів безкоштовного набору достатньо.