Небольшой скрипт для того чтобы отразить DDOS атаку стандартными средствами iptables и nginx под Centos
В конфиге nginx должно быть: http { limit_conn_zone $binary_remote_addr zone=perip:16m; server { limit_conn perip 19;
Сам скрипт запускаем через минуту или 5 минут, в зависимости от атакаи и желания:
#!/bin/sh # очищаем скрипт бана айпишников cat /dev/null > /tmp/iptables_ban.sh cd /var/log/nginx/ cat /dev/null > banlist ban=`cat error.log | grep limiting | awk '{ print $12 }' | sed "s/,//" | sort | uniq | grep -v "195.211.151.26" | grep -v "195.211.151.27" | grep $ cat /dev/null > error.log for i in $ban do echo "/sbin/iptables -I INPUT -p tcp --dport 80 -s " $i " -j DROP" >> /tmp/iptables_ban.sh echo $i >> /home/www/hd.zp.ua/ddos-ip.txt done # следующая строка нужна только для того, чтобы создавался файл с просмотром всех правил iptables echo "/sbin/iptables -L INPUT -v -n > /tmp/iptables.log" >> /tmp/iptables_ban.sh # запускаем скрипт бана айпишников bash /tmp/iptables_ban.sh # делаем ротацию лога cat /dev/null > /var/log/ddos/error.log [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`