A
tcpdump - это мощнейшая утилита UNIX, позволяющая перехватывать и анализировать сетевой трафик, проходящий через сетевые интерфейсы. Об установке читайте в документации утилиты или на сайте разработчика, в FreeBSD она есть в портах, в Debian Linux в репозиториях.
С помощью команды
можно вывести список подключений к порту 80. Слишком большое количество подключений с одинаковых хостов может свидетельствовать о Ддос-атаке.
Для большей наглядности можно использовать следующие команды:
С помощью первой команды мы выводим в файл ddos.log 5000 последних пакетов. Расшифровку директив можно посмотреть тут.
Вторая команда упорядочивает информацию в файле по количеству запросов. Получаем такой вывод:
Самые активные IP можно проверить на территориальную принадлежность с помощью подобного сервиса, чтобы временно перекрыть доступ на сервер для этих стран.
Итак, у нас есть файл ddos.log в котором записаны IP адреса в порядке убывания их активности. У нормальных пользователей будет сильный разрыв по количеству подключений от ддос-ботов, поэтому все айпи с числом подключений, скажем, не больше 30 можно из файла удалять. Сделать это можно за 2 клика мышкой, т.к. нормальные будут находиться внизу.
Теперь приводим лог в порядок командой:
Эта команда извлечет только айпишники из файла ddos.log и запишет их в файл ips.txt. Теперь их можно заблокировать с помощью простенького скрипта:
С помощью команды
Код:
tcpdump -v -i eth0 dst port 80
Для большей наглядности можно использовать следующие команды:
Код:
tcpdump -v -n -w ddos.log dst port 80 -c 5000
tcpdump -nr ddos.log |awk ‘{print $3}’ |grep -oE ‘[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}’ |sort |uniq -c |sort -rn
Вторая команда упорядочивает информацию в файле по количеству запросов. Получаем такой вывод:
Код:
445 32.81.96.0
344 75.172.183.197
342 2.199.211.238
234 223.255.231.88
112 142.141.170.191
Итак, у нас есть файл ddos.log в котором записаны IP адреса в порядке убывания их активности. У нормальных пользователей будет сильный разрыв по количеству подключений от ддос-ботов, поэтому все айпи с числом подключений, скажем, не больше 30 можно из файла удалять. Сделать это можно за 2 клика мышкой, т.к. нормальные будут находиться внизу.
Теперь приводим лог в порядок командой:
Код:
tcpdump -nr ddos.log |awk ‘{print $3}’ |grep -oE ‘[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}’ |sort |uniq |sort -rn > ips.txt
Код:
#!/bin/bash
BLOCKDB="ips.txt"
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
iptables -A INPUT -s $i -j DROP