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

本文介绍了一个Bash脚本,用于分析Nginx日志中访问特定敏感路径的IP地址,并将其加入黑名单。脚本通过awk处理日志,检查IP并更新Nginx配置以实现实时生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要编写一个脚本分析 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_PATH
    fi
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 配置,可能需要调整脚本中的命令和路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值