Защита сервера от DDoS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#!/bin/sh # находим все соединения и записываем их во временный файл ddos.iplist в каталоге tmp netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | grep -v "127.0.0.1" > /tmp/ddos.iplist # очищаем скрипт бана айпишников cat /dev/null > /tmp/iptables_ban.sh # создаем DROP правила для 50 самых агрессивных ботов awk '{if ($1 > 50) {print "/sbin/iptables -I INPUT -p tcp --dport 80 -s " $2 " -j DROP" }}' /tmp/ddos.iplist >> /tmp/iptables_ban.sh # следующая строка нужна только для того, чтобы создавался файл с просмотром всех правил iptables echo "/sbin/iptables -L INPUT -v -n > /tmp/iptables.log" >> /tmp/iptables_ban.sh # запускаем скрипт бана айпишников /bin/bash /tmp/iptables_ban.sh # делаем ротацию лога cat /dev/null > /var/log/ddos/error.log [ ! -f /var/run/apache2.pid ] || kill -USR1 `cat /var/run/apache2.pid` |