技术文摘

linux宝塔面板计划任务shell脚本自动拉黑恶意IP到nginx黑名单以达到防采集的方法

作者:雨祺   发表于:
浏览:369次    字数:1000  原创
级别: 站长   总稿: 68 篇,  月稿: 0
linux宝塔面板计划任务shell脚本自动拉黑恶意IP到nginx黑名单以达到防采集的方法!首先我们需要找到恶意ip,可以利用脚本分析在一分钟单个IP访问的频率,超过一定的频率(一般来正常的访问,一分钟内应该不超过60次,你可以设置为更小),即认定为恶意IP。那么现在开始我们防止恶意IP采集网站的方法了!首先进入宝塔选择左侧栏的计划任务,任务类型选择shell脚本,在填写任务名称“拉黑恶意IP”,执行周期选择每天多久执行一次,把以下代码内容复制粘贴到脚本内容,最后添加任务即可完成!!!
  1. #/bin/bash 
  2. #日志文件,如不是宝塔面板可以根据需要改成你自己的路径! 
  3. logfile=/www/wwwlogs/ 
  4. blockiplogfile=/www/server/nginx/conf/ 
  5. last_minutes=1 
  6. #开始时间1分钟之前(这里可以修改,如果要几分钟之内攻击次数多少次,这里可以自定义) 
  7. start_time= date +"%Y-%m-%d %H:%M:%S" -d '-1 minutes' 
  8. echo $start_time 
  9. #结束时间现在 
  10. stop_time=`date +"%Y-%m-%d %H:%M:%S"
  11. echo $stop_time 
  12. cur_date="`date +%Y-%m-%d`" 
  13. echo $cur_date 
  14. #过滤出单位之间内的日志并统计最高ip数,请替换为你的日志路径 
  15. 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 
  16. ip_top=`cat $logfile/log_ip_top10 | head -1 | awk '{print $1}'
  17. ip=`cat $logfile/log_ip_top10 | awk '{if($1>60)print $2}'
  18. # 单位时间[1分钟]内单ip访问次数超过60次的ip记录入black.txt,这里大鸟为了测试设置了2,你需要改成其它的数字 
  19. for line in $ip 
  20. do 
  21. echo "deny "$line";" >> $blockiplogfile/blockip.conf 
  22. echo $line 
  23. # 这里还可以执行CF的API来提交数据到CF防火墙 
  24. done 
  25. # 删除 IPs 文件收拾干净 
  26. #rm -rf www/wwwlogs/log_ip_top10 

由于是免费分享,没有把高频IP结果集与蜘蛛的IP进行差异化对比后再写入黑名单配置文件!如需要完美的脚本方法请联系站长付费处理!!!

【审核人:站长】

收藏   加好友   生成海报   分享
点赞(0)
打赏
Tags:
评论(0人参与,0条评论) 雨祺
0/0
  • 请先说点什么
    最新评论

    发布者资料

    热门文章

    技术文摘

    查看更多技术文摘
    首页
    栏目
    搜索
    会员
    投稿