利用宝塔面板计划任务shell脚本扫描恶意IP
定位恶意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/fly63log| 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>5)print $2}'`
# 单位时间[1分钟]内单ip访问次数超过5次的ip记录入black.txt,你需要改成其它的数字
for line in $ip
do
echo $line >> $logfile/black.txt
echo $line
# 这里还可以执行CF的api来提交数据到CF防火墙
done计划任务
关于宝塔面板的计划任务如何设置,博主就不多说了,我们看看如何把上面的ip定位的脚本放在计划任务中。点击计划任务选择Shell脚本即可如图:
测试脚本
这个脚本,我们需要测试是否可用,博主设置的是每隔3分钟执行一次,所以我们可以自己手动不停刷新自己的网站或者自己的测试站点即可。
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!