DDoS-атака перегружает один из ограниченных ресурсов — пропускную способность канала, число открытых соединений или процессорное время приложения. Сайт падает не «от взлома», а от исчерпания одного из этих ресурсов.
Чем DDoS отличается от DoS и от взлома
Три термина часто путают, хотя у них разная механика и разная цель. Таблица показывает разницу по трём признакам.
| Термин | Цель | Источник | Что остаётся после |
|---|---|---|---|
| DoS | Сделать сайт недоступным | Один источник трафика | Доступность восстанавливается сразу после остановки источника |
| DDoS | Сделать сайт недоступным | Множество распределённых источников одновременно | Доступность восстанавливается после фильтрации трафика |
| Взлом | Получить доступ к данным или управлению | Один злоумышленник, использующий уязвимость | Украденные данные или изменённые файлы сайта |
Три уровня, на которых перегружают
Перегрузить можно разные ресурсы, и у каждого уровня свои признаки в логах и метриках.
| Уровень | Что исчерпывается | Как это видно |
|---|---|---|
| Канал | Пропускная способность сети | Резкий рост входящего трафика на графике канала |
| Транспорт | Число открытых сетевых соединений | Много полуоткрытых соединений в состоянии ожидания |
| Приложение | Процессорное время и память приложения | Растёт время ответа при обычном уровне трафика |
Почему атака распределённая
Один источник трафика легко остановить: правило фаервола блокирует конкретный адрес, и атака прекращается. С тысячами источников это не работает — заблокировать каждый по отдельности не успевают.
Источниками обычно служат заражённые устройства, объединённые в сеть под общим управлением (ботнет). Их владельцы чаще всего не знают, что устройство участвует в атаке.
Что происходит с сайтом по шагам
С точки зрения владельца сайта перегрузка развивается предсказуемо, и каждый шаг виден в собственных метриках сервера.
- Растёт время ответа сервера на обычные запросы.
- Очередь необработанных запросов увеличивается быстрее, чем приложение успевает её разбирать.
- Приложение упирается в лимит одновременных соединений или процессов.
- Сервер начинает отвечать ошибкой или не отвечает вовсе, даже на запросы обычных посетителей.
Как отличить атаку от наплыва реальных посетителей
Всплеск нагрузки не всегда означает атаку — иногда это реальный наплыв посетителей. В логах есть признаки, которые отличают одно от другого.
- Запросы приходят с необычно большого числа разных адресов одновременно.
- Запросы однообразны: один и тот же путь, метод и почти одинаковые параметры.
- Почти нет запросов статики — стилей, скриптов, изображений, которые обычно загружает браузер.
- В заголовках запроса отсутствуют поля, обычные для настоящего браузера, или они выглядят одинаково у всех.
Почему защита строится слоями
Каждый уровень перегрузки требует своей защиты: фильтрация на границе сети не спасает от перегрузки самого приложения, и наоборот. Поэтому одного фаервола недостаточно.
Как устроена защита на разных уровнях, разобрано в статьях про DDoS-защиту и про защиту средствами Nginx и Cloudflare.
Что сделать до атаки
Часть подготовки не требует специальных инструментов — только порядок и внимание к обычному состоянию сервера.
- Знать нормальные показатели нагрузки своего сайта, чтобы заметить отклонение быстро.
- Держать под рукой контакты поддержки хостинга и держателя DNS-зоны домена.
- Хранить логи сервера за разумный период — без них разбор атаки постфактум невозможен.
- Не раскрывать публично реальный адрес сервера там, где это не обязательно.