Небольшой скрипт для того чтобы отразить DDOS атаку стандартными средствами iptables и nginx под Centos
[bash title=»код»]В конфиге nginx должно быть:
http {
limit_conn_zone $binary_remote_addr zone=perip:16m;
server {
limit_conn perip 19;[/bash]
Сам скрипт запускаем через минуту или 5 минут, в зависимости от атакаи и желания:
[bash title=»код»]#!/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`[/bash]