通过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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • gcc命令使用_c调用cmd并执行命令

    gcc命令使用_c调用cmd并执行命令gcc命令基本操作Hello基本操作编译汇编链接ELF文件分析Hello基本操作准备工作#include<stdio.h>//此程序很简单,仅仅打印一个HelloWorld的字符串。intmain(void){printf(“HelloWorld!\n”);return0;}hello.i文件编译汇编将编译生成的hello.s文件汇编生成目标文件hello.oGCC的选项-c使GCC在执行完汇编后停止,生成目标文件

    2022年10月13日
    6
  • vue项目如何刷新当前页面「建议收藏」

    vue项目如何刷新当前页面「建议收藏」想必大家在刨坑vue的时候也遇到过下面情形:比如在删除或者增加一条记录的时候希望当前页面可以重新刷新或者如下面这种:如果希望点击确定的时候,Dialog对话框关闭的时候,当前http://localhost:9530/#/supplier/supplierAll页面可以重新刷新下那么表格的数据可以重新加载,Dialog对话框设置的数据可以在确定后刷新出现在页面上这时候我们最直接的思维就是想到下…

    2022年7月27日
    10
  • MobaXterm简单使用说明

    MobaXterm简单使用说明

    2021年5月13日
    291
  • 公网RTSP视频流「建议收藏」

    公网RTSP视频流「建议收藏」公网RTSP视频流测试地址:rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov

    2022年10月18日
    3
  • html网页动态日历代码_春节倒计时源码

    html网页动态日历代码_春节倒计时源码点击文章下面超链接,即可免费下载,源码以及文件素材,无需积分,关注后即可下载记得关注,只有关注后才可以下载!!!效果图:钟表以及时间文字显示会自动根据打开网页的时间,显示时间;无需自己修改,弹幕和文字皆可以修改;背景是渐变色彩,可根据自己的需要在源码中修改即可,除了主要功能是HTML意外,还有CSS、JS等源码,就算没有编程工具,电脑没有任何编程配置,只需要打开文件,鼠标双击运行index即可,会自动跳到系统默认浏览器内,就算毫无编程基础、英语小白页可以娱乐;本源码意在学习与娱乐,未经授权!!禁止商用

    2022年10月19日
    3
  • DotNet开发的微商分销系统源码,微信三级分销系统源码

    DotNet开发的微商分销系统源码,微信三级分销系统源码DotNet开发的微商分销系统源码,微信三级分销系统源码开发环境:vs2017+sqlserver2012部署环境:iis7,.netframework4.0,应用程序池为4.0经典模式。安装请注意:1、将安装目录:UI.Web拷贝到服务器上,搭建站点;1、打开网站xxx.com域名/Installer/Default.aspx,按照安装提示一步一步走(傻瓜式的安装)2、安装完毕后,请打开web.config文件,找到节点:CurDomainUrl,设置vlaue的值…

    2022年5月17日
    37

发表回复

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

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