DDoS-атака перевантажує один з обмежених ресурсів — пропускну здатність каналу, кількість відкритих з'єднань чи процесорний час застосунку. Сайт падає не «від злому», а від вичерпання одного з цих ресурсів.
Чим DDoS відрізняється від DoS і від злому
Три терміни часто плутають, хоча в них різна механіка і різна мета. Таблиця показує різницю за трьома ознаками.
| Термін | Мета | Джерело | Що залишається після |
|---|---|---|---|
| DoS | Зробити сайт недоступним | Одне джерело трафіку | Доступність відновлюється одразу після зупинки джерела |
| DDoS | Зробити сайт недоступним | Безліч розподілених джерел одночасно | Доступність відновлюється після фільтрації трафіку |
| Злом | Отримати доступ до даних чи керування | Один зловмисник, який використовує вразливість | Викрадені дані або змінені файли сайту |
Три рівні, на яких перевантажують
Перевантажити можна різні ресурси, і кожен рівень має власні ознаки в логах і метриках.
| Рівень | Що вичерпується | Як це видно |
|---|---|---|
| Канал | Пропускна здатність мережі | Різке зростання вхідного трафіку на графіку каналу |
| Транспорт | Кількість відкритих мережевих з'єднань | Багато напіввідкритих з'єднань у стані очікування |
| Застосунок | Процесорний час і пам'ять застосунку | Зростає час відповіді за звичайного рівня трафіку |
Чому атака розподілена
Одне джерело трафіку легко зупинити: правило фаєрвола блокує конкретну адресу, і атака припиняється. З тисячами джерел це не працює — заблокувати кожне окремо не встигають.
Джерелами зазвичай служать заражені пристрої, об'єднані в мережу під спільним керуванням (ботнет). Їхні власники найчастіше не знають, що пристрій бере участь в атаці.
Що відбувається з сайтом за кроками
З погляду власника сайту перевантаження розвивається передбачувано, і кожен крок видно у власних метриках сервера.
- Зростає час відповіді сервера на звичайні запити.
- Черга необроблених запитів збільшується швидше, ніж застосунок встигає її розбирати.
- Застосунок впирається в ліміт одночасних з'єднань чи процесів.
- Сервер починає відповідати помилкою або не відповідає зовсім, навіть на запити звичайних відвідувачів.
Як відрізнити атаку від напливу реальних відвідувачів
Сплеск навантаження не завжди означає атаку — іноді це реальний наплив відвідувачів. У логах є ознаки, які відрізняють одне від іншого.
- Запити надходять з незвично великої кількості різних адрес одночасно.
- Запити одноманітні: той самий шлях, метод і майже однакові параметри.
- Майже немає запитів статики — стилів, скриптів, зображень, які зазвичай завантажує браузер.
- У заголовках запиту відсутні поля, звичні для справжнього браузера, або вони виглядають однаково в усіх.
Чому захист будується шарами
Кожен рівень перевантаження потребує власного захисту: фільтрація на межі мережі не рятує від перевантаження самого застосунку, і навпаки. Тому одного фаєрвола недостатньо.
Як влаштований захист на різних рівнях, розібрано в статтях про захист від DDoS і про захист засобами Nginx і Cloudflare.
Що зробити до атаки
Частина підготовки не потребує спеціальних інструментів — лише порядок і увага до звичайного стану сервера.
- Знати нормальні показники навантаження свого сайту, щоб помітити відхилення швидко.
- Тримати під рукою контакти підтримки хостингу і держателя DNS-зони домену.
- Зберігати логи сервера за розумний період — без них розбір атаки постфактум неможливий.
- Не розкривати публічно реальну адресу сервера там, де це не обов'язково.