通过Nginx日志–检测异常访问ip进行封禁

通过Nginx日志–检测异常访问ip进行封禁

Nginx日志格式

    log_format json '{"@timestamp":"$time_iso8601",'
                    '"clientip":"$remote_addr",'
                    '"request":"$request",'
                    '"http_user_agent":"$http_user_agent",'
                    '"size":"$body_bytes_sent",'
                    '"responsetime":"$request_time",'
                    '"upstreamtime":"$upstream_response_time",'
                    '"upstreamhost":"$upstream_addr",'
                    '"http_host":"$host",'
                    '"url":"$uri",'
                    '"domain":"$host",'
                    '"referer":"$http_referer",'
                    '"status":"$status"}';
    access_log  /var/log/nginx/access.log  json;

脚本内容

可以根据自己需求在进行改进

#!/bin/bash
#作者:小胖宇
#博客地址:https://blog.csdn.net/weixin_46152207?spm=1001.2014.3001.5343
#脚本详解:查询出nginx日志中访问量异常的ip进行封禁
#方法有很多可以利用nginx的deny方法,这里采用iptables

#nginx日志位置
nginx_access_log=/var/log/nginx/access.log
ip=/var/log/nginx/ip.txt
#一分钟内ip访问量统计排序
cat /var/log/nginx/access.log | grep `date -d "1 minutes ago" +"%Y-%m-%d"T"%H:%M"`|awk -F '"' '{ print $8 }'  |sort |uniq -c |sort -rn  > ip.txt
for i in `awk '{print $1}' ip.txt`
do
  if [ $i -gt 500 ]; then #设置的阈值为一分钟500
  denyip=`grep $i ip.txt | awk '{print $2}'`
  iptables -I INPUT -s $denyip -j DROP
  echo $denyip > denyip.txt
  fi
done

效果

可以用两种方式进行刷一些日志记录
命令行:循环访问制造大量的记录
也就是通过循环的方式使127.0.0.1作为了异常访问的ip

while true; do curl http://127.0.0.1; done

在这里插入图片描述
浏览器:
在这里插入图片描述
在这里插入图片描述
脚本检测是以一分钟之前最为检测范围
错后一分钟执行脚本即可 或者写入计划性任务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结果127.0.0.1不能在进行访问
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101778.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux查看端口号占用命令-netstat

    linux查看端口号占用命令-netstat题记经常会发现,很多时候我们在运行一些带有端口的程序时,程序经常会报端口被占用的问题,比如Tomcat8080,端口起不来。查看端口号netstat如果发现某个端口被占用后,可以用命令查看,该端口到底是被哪个进程所占用。命令如下:netstat-pan|grep5623#其中5623位端口号如图:发现5623的端口,被28425的进程id所占用,继

    2022年7月23日
    13
  • QT设置活动窗口「建议收藏」

    QT设置活动窗口「建议收藏」QT设置活动窗口遇到一个QT窗口问题记录下,已经显示的窗口被其他窗口遮挡。再调用show无法将窗口激活显示到最前面。解决方式如下:if(!isActiveWindow())//判断是否是活动窗口{activateWindow();//设置成活动窗口}这样窗口就会被激活。…

    2025年8月11日
    3
  • [3] 算法之路 – 插入排序

    [3] 算法之路 – 插入排序

    2022年2月2日
    62
  • mysql alter 改密码_MySql修改密码

    mysql alter 改密码_MySql修改密码MySql这个垃圾,从8.0开始修改密码有了变化,在user表加了字段authentication_string,修改密码前先检查authentication_string是否为空1、如果不为空usemysql;updateusersetauthentication_string=”whereuser=’root’;–将字段置为空ALTERuser’root’@’localh…

    2022年7月16日
    30
  • Linux-xsync分发脚本

    Linux-xsync分发脚本xsync集群分发脚本(1)需求:循环复制文件到所有节点的相同目录下(2)需求分析:(a)rsync命令原始拷贝:rsync-av/opt/moduleatguigu@hadoop103:/opt/(b)期望脚本:xsync要同步的文件名称(c)期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)[atguigu@hadoop102~]$echo$PATH/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/ho

    2022年5月15日
    30
  • 学算法先学数据结构?是否是无稽之谈?[通俗易懂]

    学算法先学数据结构?是否是无稽之谈?[通俗易懂]头发没了

    2022年8月10日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号