Security

DDoS-атаки

DDoS — распределённая атака на отказ в обслуживании: сервис заваливают трафиком с тысяч хостов, пока он не перестаёт отвечать нормальным пользователям.

Что такое DDoS-атаки

DDoS расшифровывается как Distributed Denial of Service — «распределённый отказ в обслуживании». По-русски пишут «ддос», «дудос», «ДДоС-атака». Суть: атакующий шлёт на сервис столько запросов или пакетов с множества источников одновременно, что заканчивается какой-то ресурс — полоса канала, CPU, память, лимит соединений — и сервер перестаёт отвечать легитимным пользователям.

Отличие от DoS — в букве D (Distributed). DoS идёт из одной точки и режется одним правилом файрвола. DDoS приходит с десятков тысяч адресов — ботнет, взломанные IoT-устройства, открытые резолверы, — и «забанить IP» уже не работает.

Важно: DDoS не крадёт данные и не даёт несанкционированный доступ. Это атака на доступность — третий элемент триады ИБ рядом с конфиденциальностью и целостностью.

Типы DDoS-атак

Уровень OSI Примеры Что исчерпывают Метрика
L3/L4 объёмные UDP flood, ICMP flood, amplification Полосу канала Гбит/с
L3/L4 протокольные SYN flood, ACK flood, фрагментация Таблицу соединений, CPU пакетов/с
L7 прикладные HTTP flood, Slowloris, дорогие поисковые запросы Воркеры приложения, БД запросов/с

Amplification (усиление) — приём, при котором мелкий UDP-запрос с подменённым адресом жертвы вызывает большой ответ от публичного сервиса. Классические коэффициенты: DNS — десятки раз, NTP с командой monlist — сотни, открытый memcached на UDP-порту 11211 — тысячи. Поэтому свои резолверы и NTP-серверы держат закрытыми: иначе ваш сервер станет орудием чужой атаки.

L7-атаки коварнее объёмных: несколько тысяч «настоящих» HTTP-запросов в секунду к тяжёлой странице кладут сайт без всякого гигабитного флуда, а в логах они выглядят как обычные посетители.

Как защищаются

  • Провайдерская фильтрация. Трафик заворачивается в scrubbing-центр, там отсеивается мусор, чистое отдаётся на сервер. Единственный работающий ответ на объёмный L3/L4: канал жертвы нельзя «расширить» задним числом.
  • CDN и reverse proxy прячут реальный адрес origin-сервера и размазывают нагрузку. Обязательно закройте origin по iptables, иначе атакующий найдёт IP в истории DNS.
  • WAF — против L7: JS-challenge, капча, поведенческий анализ.
  • Rate limiting на Nginx и балансировщике.
  • Тюнинг сетевого стека против SYN flood.
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=conns:10m;

server {
    location /login {
        limit_req zone=perip burst=20 nodelay;
        limit_conn conns 10;
        client_body_timeout 10s;   # против Slowloris
        send_timeout 10s;
    }
}
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=8192
sysctl -w net.ipv4.tcp_synack_retries=2

Что делать во время атаки

  1. Определить уровень: iftop показывает забитый канал — это L3/L4; канал свободен, а RPS в access.log взлетел — это L7.
  2. Включить защиту у провайдера или перевести домен на scrubbing.
  3. Для L7 найти сигнатуру (User-Agent, URI, ASN, гео) и резать точечно, а не рубить всю страну.
  4. Оформить всё как инцидент ИБ: логи нужны и для разбора, и для расчёта нарушенного SLA.

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер