方法一:在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
标签:或者,封掉,IP,sh,监控,ip,root,centos8 From: https://www.cnblogs.com/tanll/p/17746211.html