脚本的大体实现思路:
过滤最近30分钟的日志,通过去重,过滤出访问网站的客户ip,在30分钟内访问某些接口超过500次的,自动写到black_ip文件里。nginx使用deny ip; 的方式拒绝提供服务。

因为日志没有做切割,所以使用tail -n 40000 的方式获取最近30分钟的日志,由于我们网站的日志量不是很大,我过滤的40000行的数据完全覆盖了最近30分钟的日志数据。需要注意。
还有就是这台服务器上运行着多个网站,所以用了一个for循环,生成每个网站的black_ip文件。

#!/bin/bash
date_Y_m_d=`date +%Y-%m-%d`
date_30m_ago=`date -d  '30 minute ago' +%H:%M`
date_now=`date +%H:%M`
log_path='/var/logs/xxx/access'
log_file=$(ls *.log)
black_ip_file=/usr/local/nginx/conf/black_ip_file
tmp_black_ip=/tmp/black_ip.log
black_ip_all=/usr/local/nginx/conf/black_ip_all.conf
nginx_cmd=/usr/local/nginx/sbin/nginxcd ${log_path}for i in $log_file;dotail -n 40000 $i|egrep 'api|apis|app|web' |sed -n "/${date_Y_m_d}T${date_30m_ago}/,/${date_Y_m_d}T${date_now}/p" | jq .client|awk '{ip[$1]++}END{for (i in ip) print ip[i],i}'|awk '{if ($1 > 500) print "deny "$2";" }' |tee ${tmp_black_ip}project_name=$(echo $i|awk -F '.' '{print $1}')## 留存记录,定期检查大于1000 的ip 放入iptables里永久拒绝cat ${black_ip_file}-${project_name}.conf >> ${black_ip_all}grep -v -f ${black_ip_file}-${project_name}.conf ${tmp_black_ip} |tee ${black_ip_file}-${project_name}.confdone##重启nginx${nginx_cmd} -s reload

nginx 自动屏蔽攻击者ip相关推荐

  1. 分析nginx日志屏蔽攻击者ip

    最近,我分析了一下日志,发现有同一个ip不断地请求我的短信接口,然后就写一个脚本来自动分析日志对这些IP进行屏蔽,本文介绍如何利用nginx屏蔽ip来实现防止攻击,当然也可以通过iptable来实现. ...

  2. 企业级-Shell案例17——DOS攻击防范(自动屏蔽攻击IP)

    DOS攻击防范(自动屏蔽攻击IP) DOS  拒绝服务攻击 点   ---> 点 原理:tcp半连接 脚本编写 判断一分钟ip访问界面的次数,如果超出一定的次数,那就屏蔽异常ip #!/bin/ ...

  3. Nginx自动封禁IP

    个人网站总被攻击?那就写个自动封禁IP的脚本吧. 思路 AWK统计access.log,记录每分钟访问超过100次的ip,然后配合nginx进行封禁. 编写shell脚本. 定时任务跑脚本. 好,思路 ...

  4. DOS攻击防范(自动屏蔽攻击IP)

    #!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) #nginx日志 LOG_FILE=/usr/local/nginx/logs/demo2.access.log #分 ...

  5. Nginx自动封禁可疑Ip

    文章目录 一.Nginx封禁ip 1.简介 2.nignx 禁止IP访问 2.1 方法一 2.2 方法二 3.关于 deny 的使用 二.脚本自动封禁Ip 1.流程介绍 2.脚本实战 2.1 核心脚本 ...

  6. Nginx/Apache/Tomcat记录屏蔽真实IP

    记录客户端真实IP #Nginx示例 log_format  upstream  '$time_iso8601 $http_x_forwarded_for $host $upstream_respon ...

  7. 屏蔽武汉ip地址 php,wordpress如何限制屏蔽IP地址

    垃圾评论一直是很多人包括我都很头疼的问题,虽然一直在使用强大的Akismet插件,但要想完全的防止垃圾评论的骚扰似乎并不是想象中的那么容易. 从今天开始,我们将针对垃圾评论的问题进行一系列的探讨,希望 ...

  8. RouterOS(ros)自动更新国内外IP以及端口扫描IP

    RouterOS(ros)自动更新国内IP以及端口扫描IP 1. 用linux制作rsc文件并定期更新 2. routeros(ros)上制作脚本下载并导入rsc 这几天折腾回ros,配置好防火墙,发 ...

  9. Nginx封禁恶意IP

    网络攻击时有发生, TCP洪水攻击.注入攻击.DOS等 比较难防的有DDOS等 数据安全,防止对手爬虫恶意爬取,封禁IP 一般就是封禁ip linux server的层面封IP:iptables ng ...

最新文章

  1. oracle数据库没有选项,创建oracle数据库时,出现ORA-00922: 选项缺失或无效
  2. php上传图片管理系统,php 登录操作的文件上传管理系统
  3. CXF(2.7.10) - RESTful Services, JSON Support
  4. ElasticSearch 2 (30) - 信息聚合系列之条形图
  5. 自定义admin组件,Xamin
  6. 订单生产计划表范本_生产计划表_用Excel 如何制作生产排单的生产计划
  7. 台达内部速度指令_【2017年整理】台达B2伺服电机参数设定.doc
  8. 有没有在学习IT营2020年新出Go语言视频教程童鞋,一起探讨
  9. 超好用的卸载工具——geek
  10. IQtree:使用 SNP 数据(vcf file)构建玉米群体的 无根 系统发育树
  11. SpringCloud--Netflix Eureka 简介
  12. 按键精灵助手无法连接模拟器解决方案【适用任何模拟器】
  13. 网络加密流量的相关研究
  14. 【高并发】解密导致并发问题的第三个幕后黑手——有序性问题
  15. EasyPoi Excel简单导出导入
  16. S32DS封装静态库相关问题
  17. 如何在计算机中增加硬盘分区,win10系统电脑下增加新磁盘分区的操作方法
  18. 卸载landesk的方法
  19. R语言表示文件路径应该如何使用斜杠符号?
  20. Pandas 时间序列 - 实例方法与重采样

热门文章

  1. Neyman-Person
  2. Dynamic html实现页面上两张图片来回切换
  3. 反射内存网搭建参考文献
  4. 旅游景区怎么在抖音上卖门票?
  5. 大分享-hibernate,springmvc,easyui简要介绍
  6. .ren助力高校BBS圈,sdada.ren为山工艺学子服务~
  7. 《操作系统-真象还原》07. 中断
  8. 操作系统真象还原——3.完善MBR
  9. 《Windows IoT 应用开发指南》
  10. 阿布扎比全球市场推出加密货币监管框架