概述
今天分享一个Shell脚本,主要是用来解决DDOS攻击的简单版。
需求
请根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP。
防火墙命令为:iptables-I INPUT -s IP地址 -j DROP。
练习使用日志下载地址:https://files.cnblogs.com/files/clsn/access-web-log.zip
![da19337c0d47dbfd7a4ab804dd1bac0d.png](https://i-blog.csdnimg.cn/blog_migrate/55461db5058ab380cd5992f686ee81ac.jpeg)
脚本实现
#!/bin/bash############################################################## File Name: ddos_check.sh#############################################################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_Filewhile read line do Ip_Add=`echo $line |awk '{print $1}'` Access=`echo $line |awk '{print $2}'` if [ $Access -ge 10000 ] then #echo $Ip_Add iptables -I INPUT -s $Ip_Add -j DROP fidone
![d5f1f5cbf4f60736721835ae0f2eb3ce.png](https://i-blog.csdnimg.cn/blog_migrate/69bfa62b54d1e0d3e653c857bdea676f.jpeg)
脚本执行结果
./ddos_check.shiptables -L
![0c4282c090f7fe8bd5fd818475490129.png](https://i-blog.csdnimg.cn/blog_migrate/a8be6863c4f9c5e2d92bf13e598cc23e.jpeg)
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
![cc8e006509d6542a3b06d7d5359779ce.gif](https://i-blog.csdnimg.cn/blog_migrate/c5cd37f5676e421c82f0c6428087b070.gif)