欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Shell—实现DDOS攻击自动封禁IP

程序员文章站 2022-05-29 09:20:39
需求:请根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP。 防火墙命令为:iptables-I INPUT -s IP地址 -j DROP。 脚本实现 #!/bin/bash Info_File=/tmp/ddos_check.log ......

需求:请根据web日志或者或者网络连接数,监控当某个ip并发连接数或者短时内pv达到100,即调用防火墙命令封掉对应的ip。

防火墙命令为:iptables-i input -s ip地址 -j drop。

脚本实现

#!/bin/bash
info_file=/tmp/ddos_check.log

#从连接数获取
#netstat -lant|awk -f "[ :]+" '/180:80/{clsn[$6]++}end{for(pol in clsn)print pol,clsn[pol]}' >$info_file

# 从日志获取
awk '{hotel[$1]++}end{for(pol in hotel)print pol,hotel[pol]}' access.log | sort -nk2 -r >$info_file

while read line 
do 
   ip_add=`echo $line |awk '{print $1}'`
   access=`echo $line |awk '{print $2}'`
   if [ $access -ge 10000 ]; then
       iptables -i input -s $ip_add -j drop
   elif [ $access -le 5000 ]; then
       echo "小于5000"
   else
       echo "大于5000小于10000"
   fi
done <$info_file