blog.serverclub.ru
Блог компании ServerClub

ddos

Блокирование DDoS атаки на Apache(большого числа TIME_WAIT соединений и самых активных из access_log)

3 мая 2015 г.3

Еще одна записка на полях.

Число дочерних процессов Apache достигает максимума, количество TIME_WAIT соединений в списке netstat -tn растет и растет...

Для блокирования зарвавшихся пишем два скрипта, один будет проверять вывод netstat и access_log web сервера, а другой непосредственно блочить.

Первый, check_syn.sh , отдает скрипту блокировки IP адреса, которые засветились более 25 раз в обоих случаях(netstat и access_log):

#!/bin/bash
netstat -tn | grep TIME_WAIT | awk {'print $5'}| grep -oE '[0-9]{1,}.[0-9]{1,}.[0-9]{1,}.[0-9]{1,}' |
sort |uniq -c |sort -rn| awk '{if ($1>25) print $2}'  |xargs -I{} /root/block.sh {}
tail -1000 /etc/httpd/logs/access_log |  awk {'print $1'}|sort |uniq -c |sort -rn |grep -v 127.0.0.1|
  awk '{if ($1>25) print $2}'|xargs -I{} 
/root/block.sh {}

Второй, block.sh , блокирует:

#!/bin/bash
count=`iptables -nvL --line | grep $1 | wc -l`
if [ $count -eq 0 ]
then
  iptables -A INPUT -s $1 -m tcp -p tcp -j DROP
fi