User nginx 写一个脚本,分析nginx的日志,自动将访问攻击路径的IP,放到nginx的黑名

要编写一个脚本分析 Nginx 日志并自动把特定路径访问者的 IP 地址加入黑名单,我们可以采用以下策略:

  1. 分析日志:定期分析 Nginx 日志文件以找到访问特定路径的 IP 地址。
  2. 更新黑名单:将这些 IP 地址添加到 Nginx 的黑名单配置中。
  3. 重新加载 Nginx 配置:每次更新黑名单后,重新加载 Nginx 配置以使更改生效。

首先,你需要确定 Nginx 日志的路径和格式。假设日志路径为 /var/log/nginx/access.log,并且使用的是 Nginx 的默认日志格式。

下面是一个基于 Bash 脚本的示例,它会分析日志,寻找访问 /sensitive-path 的 IP 地址,并将其添加到黑名单:

#!/bin/bash# 日志文件路径
LOG_PATH="/var/log/nginx/access.log"
# 黑名单配置文件路径
BLACKLIST_PATH="/etc/nginx/blacklist.conf"# 用于存储临时 IP 列表的文件
TEMP_IP_LIST="/tmp/temp_ip_list.txt"# 定义包含敏感关键字的数组
declare -a PATHS=("/etc/passwd" "/exec/" "/ad" "/sql" "/webservices" "/sh-swssjf-api/.elasticbeanstalk/")# 清空临时 IP 列表文件
> $TEMP_IP_LIST# 遍历所有敏感路径
for path in "${PATHS[@]}"
do# 搜索访问这些路径的 IP 地址,并追加到临时文件awk -v path="$path" '$7 ~ path {print $1}' $LOG_PATH | sort | uniq >> $TEMP_IP_LIST
done# 对 IP 列表去重
sort $TEMP_IP_LIST | uniq > $TEMP_IP_LIST.tmp
mv $TEMP_IP_LIST.tmp $TEMP_IP_LIST# 更新 Nginx 黑名单配置
while IFS= read -r ip
do# 检查 IP 是否已在黑名单中if ! grep -q $ip $BLACKLIST_PATH; then# 将 IP 添加到黑名单配置文件echo "deny $ip;" >> $BLACKLIST_PATHfi
done < "$TEMP_IP_LIST"# 重新加载 Nginx 配置使黑名单生效
nginx -s reload

说明:

  • 脚本首先使用 awk 分析日志文件,提取出访问 /sensitive-path 的 IP 地址,并去重后存储在一个临时文件中。
  • 然后,脚本读取临时文件中的每个 IP 地址,检查其是否已经在黑名单配置文件中。如果不在,就将其添加进去。
  • 最后,使用 nginx -s reload 命令重新加载 Nginx 配置,使得黑名单立即生效。

注意事项:

  • 确保 Nginx 的黑名单配置(/etc/nginx/blacklist.conf)已经包含在你的 Nginx 主配置文件中,通常在 http 块内包含如下:
    include /etc/nginx/blacklist.conf;
    
  • 此脚本需要适当的权限运行,可能需要 sudo 权限。
  • 根据实际日志格式和 Nginx 配置,可能需要调整脚本中的命令和路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 Google Cloud 上轻松部署开放大语言模型

今天&#xff0c;“在 Google Cloud 上部署”功能正式上线&#xff01; 这是 Hugging Face Hub 上的一个新功能&#xff0c;让开发者可以轻松地将数千个基础模型使用 Vertex AI 或 Google Kubernetes Engine (GKE) 部署到 Google Cloud。 Model Garden (模型库) 是 Google Clou…

【LeetCode刷题记录】238. 除自身以外数组的乘积

238 除自身以外数组的乘积 给你一个整数数组 nums&#xff0c;返回数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据保证数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位整数范围内。 请不要使用除法&#xff0c…

[Linux基础]ln硬链接和ln -s软链接的方法参数及区别

区别&#xff1a; 1、ln创建硬链接&#xff1b;ln -s 创建软链接 2、硬链接的两个文件指向同一个inode&#xff08;inode&#xff1a;存放着文件的目录、权限、block块编号等信息&#xff09;&#xff1b;软链接的目标文件指向源文件&#xff0c;目标文件内存储的是源文件的目…

2024认证杯数学建模C题思路模型代码

目录 2024认证杯数学建模C题思路模型代码&#xff1a;4.11开赛后第一时间更新&#xff0c;获取见文末名片 以下为2023年认证杯C题&#xff1a; 2024年认证杯数学建模C题思路模型代码见此 2024认证杯数学建模C题思路模型代码&#xff1a;4.11开赛后第一时间更新&#xff0c;获…

JavaScript进阶6之函数式编程与ES6ESNext规范

函数式编程 柯里化currycurrycompose示例&#xff1a;简化版展开写&#xff1a; debug示例一&#xff1a;示例二&#xff1a; 模板字符串css in js方案 箭头函数问题 生成器 generator应用场景 反射 Reflect 柯里化curry compose是curry的应用 在 lodash/fp underscore ramba …

53.网络游戏逆向分析与漏洞攻防-基础数据分析筛选-逆向分析寻找消息数据解压缩过程

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 现在的代码都是依据数据包来写的&#xff0c;如果看不懂代码&#xff0c;就说明没看懂数据包…

Spring Boot 整合 Apache Phoenix 进行 HBase 数据操作指南

在Spring Boot中集成Apache Phoenix以便执行SQL查询和表操作&#xff0c;你可以使用Phoenix的JDBC驱动。下面是一个简单的示例&#xff0c;展示了如何在Spring Boot应用中集成Phoenix&#xff0c;并执行基本的表操作和查询。 1. 添加依赖 首先&#xff0c;你需要在你的pom.xm…

C# Solidworks二次开发:访问BOM表特性相关API详解

大家好&#xff0c;今天要讲的文章是和BOM表特性相关的API。 下面为要介绍的API&#xff1a; &#xff08;1&#xff09;第一个为GetConfigurationCount&#xff0c;这个API的含义为获取此BOM表可用或在此BOM表中使用的配置数&#xff0c;下面是官方的具体解释&#xff1a; …

phpMyadmin 设置显示完整内容

额外选项这里&#xff0c;默认部分内容改成完整内容 方案&#xff1a; 版本>4.5.4.1&#xff0c;修改文件&#xff1a;config.inc.php&#xff0c;添加一行代码&#xff1a; if ( !isset($_REQUEST[pftext])) $_REQUEST[pftext] F;

什么是已检查异常和未检查异常?

在Java中&#xff0c;已检查异常&#xff08;Checked Exceptions&#xff09;和未检查异常&#xff08;Unchecked Exceptions&#xff09;是两种主要的异常类型。 已检查异常&#xff08;Checked Exceptions&#xff09;&#xff1a;这种类型的异常在编译期就会被检查&#xf…

浮点数的表示

王道考研ppt总结&#xff1a; 二、个人理解 浮点数解决的是定点数的位数局限&#xff0c;导致表示范围有限的问题 阶码&#xff1a;由阶符和数值部分组成&#xff0c;阶符为&#xff0c;小数点向左移动&#xff0c;否则向右移动&#xff1b;数值部分&#xff0c;是底数的几次幂…

【算法】标签算法及其运作流程

标签算法 1. 标签算法及其运作流程2. 标签算法主要有哪些&#xff1f;3.用python语言举例实现聚类 1. 标签算法及其运作流程 标签算法是一种用于自动为数据或文本内容添加标签或分类的算法。这些标签可以帮助组织、检索和理解数据&#xff0c;是信息管理和数据挖掘中的重要工具…

区块链媒体推广的8个成功案例解析-华媒舍

区块链领域作为一个新兴行业&#xff0c;媒体推广对于项目的成功发展起着至关重要的作用。本文将从八个成功案例中来分析区块链媒体推广的重要性和成功策略。 1. 媒体报道对于区块链项目的重要影响 媒体报道是提升区块链项目知名度和用户认可度的重要手段。对于区块链项目来说…

Java | Leetcode Java题解之第25题K个一组翻转链表

题目&#xff1a; 题解&#xff1a; class Solution {public ListNode reverseKGroup(ListNode head, int k) {ListNode hair new ListNode(0);hair.next head;ListNode pre hair;while (head ! null) {ListNode tail pre;// 查看剩余部分长度是否大于等于 kfor (int i 0…

CSS3新增

一些CSS3新增的功能 课程视频链接 目录 CSS3概述私有前缀长度单位remvwvhvmaxvmin 颜色设置方式rgbahslhsla 选择器动态伪类目标伪类语言伪类UI伪类结构伪类否定伪类伪元素 盒子属性box-sizing问题插播 宽度与设置的不同 resizebox-shadowopacity 背景属性background-originb…

BIRDy:机器人动力学辨识基准

文章目录 前言入门前提条件Benchmark结构运行benchmark如何(重新)生成一条激励轨迹如何(重新)生成实验数据如何(重新)生成机器人的辨识模型如何重新编译基准程序的.MEX文件用户自定义在基准中添加新的机器人在基准中加入新的辨识算法源码前言 如果没有一个合适的框架,学生、工…

SDK-0.7.8-Release-实体管理 - ApiHug-Release

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace 更多精彩…

大数据存储解决方案和处理流程——解读大数据架构(四)

文章目录 前言数据存储解决方案数据集市运营数据存储&#xff08;Operational Data Store&#xff09;数据中心 数据处理数据虚拟化和数据联合虚拟化作为 ETL 或数据移动的替代品数据目录数据市场 前言 在数字时代&#xff0c;数据已成为公司的命脉。但是&#xff0c;仅仅拥有…

CNN卷积神经网络:理论基础、核心架构与多元应用

CNN是一种深度学习模型&#xff0c;利用卷积层提取图像特征&#xff0c;池化层降维与增强不变性&#xff0c;全连接层实现分类/回归。核心理论包括局部感知、权值共享、多层抽象。广泛应用图像识别、目标检测、语义分割、生成任务等领域。 一、CNN理论基础 1、局部感知野&…

二叉树之遍历

概述 之前有说到二叉树的建树&#xff0c;这次讲讲二叉树的遍历过程。二叉树的遍历分为深度优先遍历和广度优先遍历&#xff0c;二叉树的逻辑结构如下所示&#xff1a; class TreeNode{int val;TreeNode left;TreeNode right;public TreeNode(){}public TreeNode(int val){thi…