Защита от DDoS с помощью утилиты tcpdump Защита от DDOS tcpdump - это мощнейшая утилита UNIX, позволяющая перехватывать и анализировать сетевой трафик, проходящий через сетевые интерфейсы. Об установке читайте в документации утилиты или на сайте разработчика, в FreeBSD она есть в портах, в Debian Linux в репозиториях.
Приведу пример как можно использовать tcpdump. Например, на сервере отключены логи, идет легкая ddos атака, происходит что-то не ладное, вы хотите быстро посмотреть масштабность или убедиться, что это DDoS-атака, а не DoS или может это вообще никак не связано с внешним миром? Давайте посмотрим
Код
tcpdump -v -i eth0 dst port 80
После выше набранной команды вы сможете наблюдать список подключений к 80-у порту, чем больше повторных подключений с одинаковых хостов тем вероятнее мы столкнулись с DoS или DDoS атакой. Как вы уже наверное догадались, изменив порт можно проверить есть ли атака на FTP, SSH или другие сервисы которые крутятся на сервере. Добавив ключ -n имена хостов преобразуются в IP адреса.
Глазами все не уследить, при атаке на веб-сервер вывод tcpdump-a сумасшедшей скоростью будет двигаться вдоль окна вывода терминала Поэтому, мы сначала запишем вывод tcpdump-a в файл. Пакетов 200-300 хватит.
Код
tcpdump -v -n -w attack.log dst port 80 -c 250
-v - самый простой уровень логирования, без изысканности. -n - преобразуем имена хостов в IP адреса -w - записываем анализ трафика в файл -c - количество захваченных пакетов
Приступим к анализу полученных данных через tcpdump, отпарсим лог следующей командой
Что бы получить только IP адреса, без первого столбца, нужно убрать ключ -c после uniq Вывод парсинга можно перенаправить в файл, а затем простым bash-скриптом, заблокировать все IP со списка.
Код
#!/bin/bash BLOCKDB="ips.txt" IPS=$(grep -Ev "^#" $BLOCKDB) for i in $IPS do iptables -A INPUT -s $i -j DROP
Очень похожие трюки иногда проделывают с помощью утилиты netstat.