定位恶意IP

我们需要找到恶意ip,可以利用脚本分析在一分钟单个IP访问的频率,超过一定的频率(一般来正常的访问,一分钟内应该不超过60次,你可以设置为更小),即认定为恶意IP。宝塔面板的shell脚本如下:

#/bin/bash
#日志文件,如不是宝塔面板可以根据需要改成你自己的路径
logfile=/www/wwwlogs/
last_minutes=1 
#开始时间1分钟之前(这里可以修改,如果要几分钟之内攻击次数多少次,这里可以自定义)
start_time= date +"%Y-%m-%d %H:%M:%S" -d '-1 minutes'
echo $start_time
#结束时间现在
stop_time=`date +"%Y-%m-%d %H:%M:%S"`
echo $stop_time
cur_date="`date +%Y-%m-%d`" 
echo $cur_date
#过滤出单位之间内的日志并统计最高ip数,请替换为你的日志路径
tac $logfile/akunblog.com.log | awk -v st="$start_time" -v et="$stop_time" '{t=substr($2,RSTART+14,21);if(t>=st && t<=et) {print $0}}' | awk '{print $1}' | sort | uniq -c | sort -nr > $logfile/log_ip_top10
ip_top=`cat $logfile/log_ip_top10 | head -1 | awk '{print $1}'`
ip=`cat $logfile/log_ip_top10 | awk '{if($1>2)print $2}'`
# 单位时间[1分钟]内单ip访问次数超过2次的ip记录入black.txt,这里大鸟为了测试设置了2,你需要改成其它的数字
for line in $ip
do
echo $line >> $logfile/black.txt
echo $line
# 这里还可以执行CF的API来提交数据到CF防火墙
done

计划任务

关于宝塔面板的计划任务如何设置,博主就不多说了,我们看看如何把上面的ip定位的脚本放在计划任务中。点击计划任务选择Shell脚本即可如图:
2.png

测试脚本

这个脚本,我们需要测试是否可用,博主设置的是每隔3分钟执行一次,所以我们可以自己手动不停刷新自己的网站或者自己的测试站点即可。我们看看最终的效果,如图:
3.png

注意事项

自己网站的设置
4.png

Last modification:May 11th, 2019 at 11:01 am
如果觉得我的文章对你有用,请随意赞赏