7
Дек

Скрипт борьбы с небольшыми DDOS атаками для Centos

Небольшой скрипт для того чтобы отразить 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`