企业案例:
写一个Shell脚本解决类DDOS攻击的生产案例。请根据web日志或者或者系统网络连接数,监控当某个IP并发连接数,若短时内并发连接数达到100(阈值),即调用防火墙命令封掉对应的IP。防火墙命令为:iptables -I INPUT -s IP地址 -j DROP。
分析:
1.通过awk分析日志、连接数 每个ip的次数 结果存放在文件中
2.通过while read line 读取文件
3. 判断次数如果大于100 则封掉
#!/bin/bash
file=/server/scripts/netstat.log
tmp_file=/server/scripts/tmp.txt
#netstat -ant |awk -F'[ :]+' '/ESTABLISHED/{print $6}' |sort |uniq -c
awk -F'[ :]+' '/ESTABLISHED/{print $6}' $file |sort |uniq -c >$tmp_file
while read line
do
cnt=`echo $line|awk '{print $1}'`
ip=`echo $line|awk '{print $2}'`
if [ $cnt -ge 100 -a `iptables -nL |grep -wc $ip` -eq 0 ]
then
iptables -I INPUT -s $ip -j DROP
fi
done <$tmp_file
netstat.log 是一个日志文件
企业中用
netstat -ant |awk -F’[ :]+’ ‘/ESTABLISHED/{print $6}’ |sort |uniq -c
即可