Определение и частичная нейтралицая Dos атак

Подробности статьи
Ссылка: http://support.hitex.by/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=92
Cтатья №: 92
Создано: 09 Mar 2012 9:28 AM

Ответ Данный вариант подходит только для атак типа "отказ в обслуживании". Итак для определения возможно атаки на понадобятся следующие команды:
Кол-во запущенных процессов Apache:
CentOS
ps aux | grep httpd  |wc -l

Debian/Ubuntu
ps aux | grep apache | wc -l

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

Cколько коннектов на 80 порт:
netstat -na | grep ":80\ " | wc -l

На какой домен чаще всего идут запросы:
tcpdump -npi eth0 port domain

Количество соединений с сервером:
cat /proc/net/ip_conntrack | wc -l

IP которые соединены с сервером и какое количество соединений по каждому IP
netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

Статус Apache:
apachectl status

Посмотреть откуда атакующий IP адрес:
whois 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

Посмотреть на какие порты:
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 атакующего.

Данный вариант предусматривает выявление атаки на Вебсервер, ежели атака идет на другой ваш порт то соответственно в данном примере его нужно будет изменить с 80 на тот который вы собираетесь мониторить.