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


相关推荐

  • 前端开发代码编辑器_前端自动生成代码

    前端开发代码编辑器_前端自动生成代码目录前言CodeSandbox介绍多种模板代码选择VSCode一致体验运行Node容器CodeSandbox示例前言有时候需要经常写一些测试代码或示例,然后将这些代码分享给他人,少量的代码通过GitHub分享有点大材小用,而且他人要从GitHub上fork代码后,在本地用IDE打开,然后安装依赖、运行,这个步骤过于繁琐。因此使用在线代码编辑器就能解决上面说到的问题,CodeSandbox介绍我用过几个在线代码编辑器,如知名的CodePen,Jsfilddle和Jsbin也有使用过,对比起来,还是C

    2022年8月14日
    1
  • BYTE类型的使用

    BYTE类型的使用BYTE类型的使用:BYTE在VC的定义为Unsingnedchar,在语义上九可以理解为单个字符类型,而在实际应用中BYTE泽多应用在数据类型的使用上,如16进制数组(用于表示数据流),在本次使用的IP地址控件中用于表示Ip地址栏的四个IP地址值,这样就会与其本来的定义似乎有冲突。通过断点运行发现,系统对BYTE类型的处理是这样的:当输入数字类型的BYT

    2022年6月28日
    57
  • extremedb java_实时内存数据库eXtremeDB 在linux系统下的java开发环境搭建「建议收藏」

    extremedb java_实时内存数据库eXtremeDB 在linux系统下的java开发环境搭建「建议收藏」Linux下配置eXtremeDBJAVA开发环境样例系统环境:操作系统:CentOs6.5×64一、安装必备软件安装jdksudoyuminstalljava-1.7.0-openjdk-devel.x86_64-y安装glibc-develsudoyum-yinstallglibc-devel.i686安装g++sudoyum-yinstallgcc-…

    2022年10月9日
    0
  • 花生壳安全吗_花生壳ddns怎么一直连接不上

    花生壳安全吗_花生壳ddns怎么一直连接不上dyndns和花生壳组织文化中最强大的方面以最小的个体姿态来实现,有时甚至不及花生。不久前,当我坐在达拉斯机场等待航班延误时,我看到另一个乘客在吃一些花生时感到不安。它们的贝壳掉落在地板上,几分钟后,乘客将它们踢入过道,大概是供机场清洁人员稍后收集。直到最近的一次内部RedHat活动中,有人问我有关我的宠物怒气冲冲,我才对花生壳没多加考虑。我开始考虑在RedHat浴室的地板…

    2025年6月11日
    0
  • 手机上有哪些不错的c语言编程软件?[通俗易懂]

    手机上有哪些不错的c语言编程软件?[通俗易懂]手机上编程C语言的软件其实非常多,下面我介绍2个不错的软件,分别是C语言编译器和C++编译器,这2个软件都可以在手机上直接编译运行C语言程序,而且使用起来非常不错,下面我简单介绍一下这2个软件的安装和使用:C语言编译器1.首先,下载安装C语言编译器,这个可以直接到手机应用商店中搜索,如下,大概也就13兆左右:2.安装完成后,打卡这个软件,就可以直接新建C语言文件,进…

    2022年9月4日
    3
  • springcloud微服务搭建_域名301重定向教程

    springcloud微服务搭建_域名301重定向教程前言1.由于我只有一台nginx服务器,那么想要实现一个服务器的多个网站的搭建,在html目录下建立多个文件夹,并用url转发使得不同的二级域名指向html文件夹下的不同子文件夹,这样做便能做到“多个网站”的效果。2.url转发也能够使得一个网站拥有几个域名比如wikipedia.com和wikipedia.net都指向了wikipedia.org。当你访问wikipedia.com或wikipedia.net的时候,跳转出来的页面是wikipedia.org的页面3.重定向是带有状态码的响应,我

    2022年10月19日
    0

发表回复

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

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