- #/bin/bash
- #日志文件,如不是宝塔面板可以根据需要改成你自己的路径!
- logfile=/www/wwwlogs/
- blockiplogfile=/www/server/nginx/conf/
- 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/www.meiweny.cn.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>60)print $2}'`
- # 单位时间[1分钟]内单ip访问次数超过60次的ip记录入black.txt,这里大鸟为了测试设置了2,你需要改成其它的数字
- for line in $ip
- do
- echo "deny "$line";" >> $blockiplogfile/blockip.conf
- echo $line
- # 这里还可以执行CF的API来提交数据到CF防火墙
- done
- # 删除 IPs 文件收拾干净
- #rm -rf www/wwwlogs/log_ip_top10
由于是免费分享,没有把高频IP结果集与蜘蛛的IP进行差异化对比后再写入黑名单配置文件!如需要完美的脚本方法请联系站长付费处理!!!