DDoS-атаки: типы и выявление на Linux
| Уровень сложности | Средний |
| Права root | Требуются |
| Требования | Терминал Linux |
| Категория | Безопасность |
| Совместимость с ОС | Debian, Ubuntu, RHEL |
| Примерное время чтения | 1 час |
Введение
DDoS-атака (Distributed Denial of Service) - это попытка сделать сервис недоступным, перегружая сервер большим количеством соединений или сетевого трафика.
Атаки могут происходить на разных уровнях модели OSI. От сетевого уровня до уровня приложений. В этой статье рассмотрим распространённые типы атак, их признаки на Linux-сервере, способы диагностики и частичной защиты стандартными средствами системы.
Виды атак
SYN Flood (L4)
В чем смысл атаки
TCP соединение устанавливается через механизм трёхстороннего рукопожатия:
SYN - SYN-ACK - ACK
При SYN flood атакующий отправляет большое количество SYN-пакетов, но не завершает соединение. Сервер создаёт запись о соединении и ждёт ACK. Когда таких соединений становится слишком много, очередь соединений переполняется, и сервер перестаёт принимать новые подключения.
Как это выглядит на сервере
ss -ant | grep SYN-RECV
Пример:
Что мы видим:
- Цель: 192.168.88.10:22 (SSH-порт)
- Состояние: SYN-RECV - классические «висящие» соединения от SYN Flood
- Source IP: Подменённые случайные адреса (137.107.123.240, 137.204.96.214 и т.д.)
- Порт источника: Случайные порты (1866, 1816, 1777...)
Количество соединений:
ss -ant | grep SYN-RECV | wc -l
Как выглядит в tcpdump
tcpdump -n 'tcp[tcpflags] & tcp-syn != 0'
Пример:
Защита стандартными средствами
sysctl -w net.ipv4.tcp_syncookies=1
Увеличить очередь соединений
sysctl -w net.core.somaxconn=65535
Ограничить новые соединения
iptables -A INPUT -p tcp --syn --dport 80 -m limit --limit 20/s -j ACCEPT
iptables -A INPUT -p tcp --syn --dport 80 -j DROP
UDP Flood (L3/L4)
В чем смысл атаки
UDP не требует установки соединения. Атакующий может отправлять огромное количество UDP-пакетов на случайные порты, заставляя сервер обрабатывать их.
Как выглядит на сервере
netstat -su
Пример:
Что мы видим:
- Общее количество полученных UDP-пакетов: 108 434.
- Пакеты, пришедшие на закрытые порты: 1 927 0




