дДос – команды, полезные для отражения флуд и ддос-атаках

Список команд, полезных для определения ддоса (dDos – отказ в обслуживании) или флуда, а так же для отражения нераспределенных атак.

Сколько апачей:

ps aux | grep httpd  |wc -l 

Cколько коннектов на 80 порт:

netstat -na | grep ":80\ " | wc -l

SYN

netstat -na | grep ":80\ " | grep syn

Пример SYN-флуда:

netstat -na | grep ":80\ " | grep SYN | wc -l
767

Что и откуда на 80 порту.
Откуда, сколько и что:

netstat -anp | grep ":8080" | more

Сколько:

netstat -anp | grep ":8080" | wc -l

или просто

netstat -anp | grep ":8080"

Посмотреть много ли разных ай-пи:

netstat -na | grep ":80\ " | grep SYN | sort  -u | more

На какой домен чаще всего идут запросы:

tcpdump -npi eth0 port domain

Статус апача:

apachectl status

Посмотреть откуда IP:

whois xxx.xxx.xxx.xxx

или

jwhois xxx.xxx.xxx.xxx

где xxx.xxx.xxx.xxx IP атакующего

Просниферить траф идущий на domain.ru (атакуемый домен) с записью в файл output.txt:

tcpdump -n -i eth0 -s 0 -w output.txt dst port 80 and host domain.ru

dst также можно поменять на src:

tcpdump -n -i eth0 -s 0 -w output.txt src port 80 and host domain.ru

Допустим нашли IP (xxx.xxx.xxx.xxx) с которого много запросов:
tcpdump и там где был атакуемый домен вводим этот IP:

tcpdump -n -i eth0 -s 0 -w output.txt src port 80 and host xxx.xxx.xxx.xxx

С какого IP сколько запросов:

netstat -ntu | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr | more

Только 80-ый порт:

netstat -ntu | grep ":80\ " | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr | more

или просто

netstat -na | grep :80 | sort | uniq -c | sort -nr | more

Посмотреть на какие порты:

netstat -na | grep xxx.xxx.xxx.xxx

где xxx.xxx.xxx.xxx IP атакующего

и блочить начиная с тех, где больше коннектов.

Закрыть доступ для целой подсети IP (xxx.xxx.xxx.xxx), на конкретный протокол(-p) порт(–destination-port) в конкретном направлении(-d или -s:
В одном направлении (-d):

iptables -A INPUT -d xxx.xxx.0.0/16 -p tcp --destination-port http -j DROP

В другом направлении (-s):

iptables -A INPUT -s xxx.xxx.0.0/16  -p tcp --destination-port http -j DROP

Тоже самое, но для конкретного IP (xxx.xxx.xxx.xxx)

iptables -A INPUT -s xxx.xxx.xxx.xxx  -p tcp --destination-port http -j DROP
iptables -A INPUT -d xxx.xxx.xxx.xxx -p tcp --destination-port http -j DROP

Блокировка по всем протоколам и портам, в направления -s и -d:

iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP
iptables -A INPUT -d xxx.xxx.xxx.xxx -j DROP

Если установлен файрвол APF, можно блочить с его помощью:

apf -d xxx.xxx.xxx.xxx

Где xxx.xxx.xxx.xxx IP атакующего.

Опубликовано 28 августа 2008 - информация могла устареть.

комментариев 5

  1. А в идеале вообще блокировку делать на фаерволле перед сервером, поскольку как только пакет попадает на интерфейс, загружая ресурсы сервера, локальный фильтр не спасает (хотя бы взять SYN flood), т.к. стек/сокеты будут забиты полностью при грамотной атаке мелкими пакетами, не говоря даже об атаках со спуфом.

  2. > Лучше бы пользовать | grep “:80\ ” |wc -l и т.д., чтобы быть точным ;)

    Ну в данном случае, как в командах приведенных в начале, точность достигается вполне нормальная.

    > А в идеале вообще блокировку делать на фаерволле перед сервером, поскольку как только пакет попадает на интерфейс, загружая ресурсы сервера, локальный фильтр не спасает (хотя бы взять SYN flood), т.к. стек/сокеты будут забиты полностью при грамотной атаке мелкими пакетами, не говоря даже об атаках со спуфом.

    Согласен, но это не всегда возможно или рентабельно, а приведенные способы от мелких напастей помогают :)

  3. 3.> Лучше бы пользовать | grep “:80\ ” |wc -l и т.д., чтобы быть точным ;)

    >> Ну в данном случае, как в командах приведенных в начале, точность достигается вполне нормальная.
    T.e. если висит что-либо на порту 8080,8081,8082 это нормально? :)

  4. > T.e. если висит что-либо на порту 8080,8081,8082 это нормально? :)

    Соглашусь, в этой ситуации лучше уточнять. Просто привык, что все ненужные порты по дефолту закрыты, проксей и т.п. нет, таки не подумал, что у других бывает иначе.
    Примеры в статье отредактировал.

Ответить