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

相关文章

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

Java调用Python脚本实现HelloWorld的示例详解

《Java调用Python脚本实现HelloWorld的示例详解》作为程序员,我们经常会遇到需要在Java项目中调用Python脚本的场景,下面我们来看看如何从基础到进阶,一步步实现Java与Pyth... 目录一、环境准备二、基础调用:使用 Runtime.exec()2.1 实现步骤2.2 代码解析三、

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

Nginx添加内置模块过程

《Nginx添加内置模块过程》文章指导如何检查并添加Nginx的with-http_gzip_static模块:确认该模块未默认安装后,需下载同版本源码重新编译,备份替换原有二进制文件,最后重启服务验... 目录1、查看Nginx已编辑的模块2、Nginx官网查看内置模块3、停止Nginx服务4、Nginx

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置