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

本文主要是介绍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 配置,可能需要调整脚本中的命令和路径。

这篇关于User nginx 写一个脚本,分析nginx的日志,自动将访问攻击路径的IP,放到nginx的黑名的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/904798

相关文章

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

python通过curl实现访问deepseek的API

《python通过curl实现访问deepseek的API》这篇文章主要为大家详细介绍了python如何通过curl实现访问deepseek的API,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... API申请和充值下面是deepeek的API网站https://platform.deepsee

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序

Java如何根据文件名前缀自动分组图片文件

《Java如何根据文件名前缀自动分组图片文件》一大堆文件(比如图片)堆在一个目录下,它们的命名规则遵循一定的格式,混在一起很难管理,所以本文小编就和大家介绍一下如何使用Java根据文件名前缀自动分组图... 目录需求背景分析思路实现代码输出结果知识扩展需求一大堆文件(比如图片)堆在一个目录下,它们的命名规

Nginx 访问 /root/下 403 Forbidden问题解决

《Nginx访问/root/下403Forbidden问题解决》在使用Nginx作为Web服务器时,可能会遇到403Forbidden错误,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录解决 Nginx 访问 /root/test/1.html 403 Forbidden 问题问题复现Ng

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

使用Python实现实时金价监控并自动提醒功能

《使用Python实现实时金价监控并自动提醒功能》在日常投资中,很多朋友喜欢在一些平台买点黄金,低买高卖赚点小差价,但黄金价格实时波动频繁,总是盯着手机太累了,于是我用Python写了一个实时金价监控... 目录工具能干啥?手把手教你用1、先装好这些"食材"2、代码实现讲解1. 用户输入参数2. 设置无头浏

史上最全nginx详细参数配置

《史上最全nginx详细参数配置》Nginx是一个轻量级高性能的HTTP和反向代理服务器,同时也是一个通用代理服务器(TCP/UDP/IMAP/POP3/SMTP),最初由俄罗斯人IgorSyso... 目录基本命令默认配置搭建站点根据文件类型设置过期时间禁止文件缓存防盗链静态文件压缩指定定错误页面跨域问题

nginx负载均衡及详细配置方法

《nginx负载均衡及详细配置方法》Nginx作为一种高效的Web服务器和反向代理服务器,广泛应用于网站的负载均衡中,:本文主要介绍nginx负载均衡及详细配置,需要的朋友可以参考下... 目录一、 nginx负载均衡策略1.1 基本负载均衡策略1.2 第三方策略1.3 策略对比二、 nginx配置2.1