解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频 率每隔5分钟

发布时间 2023-10-07 14:28:04作者: 小糊涂90
方法一:在awk中已经判断好并发连接数量的ip地址,传给while read执行防火墙规则封掉对应的ip。
root@centos8 ~]# cat ddos.sh
#!/bin/bash
ss -nt |awk -F  '[ :]+' '/ESTAB/{ip[$(NF-2)]++}END{for(i in ip)if(ip[i]>100) print i}'|awk -F ']' '{print $1}' |while read IP;do iptables -A INPUT -s $IP -j REJECT;done

方法二:取出ip地址并排序,if判断并发超过100的ip,并执行防火墙规则封掉对应的ip。
root@centos8 ~]# cat deny_dos.sh
#!/bin/bash
LINK=100
while true;do
ss -nt | awk -F"[[:space:]]+|:" '/^ESTAB/{print $(NF-2)}' |tr -d "]"|sort |uniq -c|while read count ip;do
if [ $count -gt $LINK ];then
iptables -A INPUT -s $ip -j REJECT
fi
done
done

root@centos8 ~]##chmod +x /root/deny_dos.sh
[root@centos8 ~]#crontab -e
[root@centos8 ~]#crontab -l
*/10 * * * *   /root/deny_dos.sh