• Форум посвящен самостоятельной (бесплатной) защите от ддос атак.
    Есть мануалы по настройке сервера от Ddos для сисадминов и готовые инструменты от ддос-атак для вебмастеров.

    Простое, эффективное, точное и проверенное бесплатное решение от мощных ддос-атак: PHP скрипт + Cloudflare, с панелью управления.

Защита от DDoS с помощью утилиты tcpdump на Unix, FreeBSD, Linux

A

adm

Администратор
Команда форума
Администрация
#1
tcpdump - это мощнейшая утилита UNIX, позволяющая перехватывать и анализировать сетевой трафик, проходящий через сетевые интерфейсы. Об установке читайте в документации утилиты или на сайте разработчика, в FreeBSD она есть в портах, в Debian Linux в репозиториях.

С помощью команды
Код:
tcpdump -v -i eth0 dst port 80
можно вывести список подключений к порту 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
С помощью первой команды мы выводим в файл ddos.log 5000 последних пакетов. Расшифровку директив можно посмотреть тут.
Вторая команда упорядочивает информацию в файле по количеству запросов. Получаем такой вывод:
Код:
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
Самые активные IP можно проверить на территориальную принадлежность с помощью подобного сервиса, чтобы временно перекрыть доступ на сервер для этих стран.

Итак, у нас есть файл 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
Эта команда извлечет только айпишники из файла ddos.log и запишет их в файл ips.txt. Теперь их можно заблокировать с помощью простенького скрипта:
Код:
#!/bin/bash
BLOCKDB="ips.txt"
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
iptables -A INPUT -s $i -j DROP
 
Сверху