通过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不能在进行访问
在这里插入图片描述

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 操作系统栈溢出检測之ucosII篇

    操作系统栈溢出检測之ucosII篇

  • 安卓反编译_反编译apk工具

    安卓反编译_反编译apk工具刚刷了自己的小U(下次分享刷机经验),准备美化一下系统,这时需要对framework-res.apk进行编译和反编译,我也是边学习边实践,这里仅作分享。1、安装Java环境JDK↑Android是基于Linux的,而要在安卓上开发,基本上依靠Java为主。因为我们接下来要用到apktool,因此必须安装JDK。注意,JDK和Java环境不同,JDK是开发工具,你可以直接在Java官网下载,并能找…

  • 计算机组成原理知识点

    计算机组成原理知识点计算机体系结构(ComputerArchitecture)主要研究硬件和软件功能的划分,确定硬件和软件的界面,哪部分功能由硬件系统来完成,哪部分功能由软件系统来完成。计算机组成原理(ComputerOrganization)是依据计算机体系结构,在确定且分配了硬件子系统的概念结构和功能特性的基础上,设计计算机各部件的具体组成,以及它们之间的连接关系,实现机器指令级的各种功能和特性,这点上说

  • 局域网、城域网、广域网、国际互联网(internet)

    局域网、城域网、广域网、国际互联网(internet)计算机网络按覆盖范围分类可分为局域网,城域网,广域网一、局域网: 1、地理分布范较小,一般为数百米至数公里。可覆盖一幢大楼、一所校园或一个企业、一个家庭。 2、数据传输速率高,一般为100Mbps,目前已出现速率高达1000Mbps的局域网。可交换各类数字和非数字(如语音、图象、视频等)信息。 3、误码率低,这是因为局域网通常采用短距离基带传输,可以使用高质量的传输媒体,从而…

    2022年10月18日
  • Docker 拉取 oracle 11g镜像配置

    Docker 拉取 oracle 11g镜像配置话不多说开始记录docker拉取阿里的oracle11g镜像并进行配置,用pl/sql可以登录为最终结果navicat连接是在最后一步参考:https://blog.csdn.net/zwx521515/article/details/77982884但是根据这个进行配置会有一些问题,所以写这篇记录一下,希望可以帮助其他人开始:①、开始拉取镜像-执行命令:…

  • springaop的使用_Spring注解

    springaop的使用_Spring注解目录SpringAOP简介AOP概念SpringAOP简单流程图SpringAOP之Annotation前置通知(Beforeadvice)返回后通知(Afterreurningadvice)抛出异常后通知(Afterthrowingadvice)后置通知(After(finally)advice)环绕通知(Aroundadvice)引入…

发表回复

您的电子邮箱地址不会被公开。

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