在实际工作中,我们的产品或者程序放在互联网上,难免会出现服务器被攻击的情况,为了防止DOS攻击,我们编写一个shell脚本来解决此问题。
编写脚本思路:
#查看系统日志,通过系统日志查找出访问量超大的IP,定义一个异常访问量的数值,比如说20
#当我们统计完毕后,把单 IP PV数高的封掉
#举例已nginx为例,access.log日志为例
#1、pv访问量(Page View),即页面访问量,每打开一次页面PV计数+1,刷新页面也#是。
#2、UV访问数(Unique Visitor)指独立访客访问数,一台电脑终端为一个访客。
#3、IV是初始向量(IV,Initialization Vector)。
#!/bin/bash
while true
do
awk '{print $1}' /uer/local/nginx/logs/access.log |grep -v "^$" |sort |uniq -c >tmp.log
exce < tmp.log
while read line
do
ip = `echo $line |awk '{print 2}'`
count =`echo $line |awk '{print 1}'`
if [$count -gt 20] && [`iptables -n -L |grep "$ip" |wc -l ` -lt 1]
then
iptables -I INPUT -s $ip -j DROP
echo "iptables is open make $line is block " >> blockip.log
fi
done
sleep 3
done