chatgpe脚本系列 - 分析nginx攻击日志,并自动加入防火墙黑名单

脚本内容

#!/bin/bash

# 日志文件路径
LOG_FILE="/var/log/nginx/access.log"

# Fail2Ban 过滤器路径
FILTER_FILE="/etc/fail2ban/filter.d/nginx-http-auth.conf"

# 记录黑名单的日志文件
BLACKLIST_LOG="./auto_defender_ban_ips.log"

# 执行间隔
SLEEP_TIME=60

# 每分钟执行
while true; do
    # 获取所有攻击 IP
    ATTACK_IPS=$(fail2ban-regex "$LOG_FILE" "$FILTER_FILE" --print-all-missed | awk -F" " '{print $2}' | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq)
    echo $ATTACK_IPS
    
    for IP in $ATTACK_IPS; do
        # 加入防火墙黑名单
        firewall-cmd --permanent --add-rich-rule="rule family=\"ipv4\" source address=\"$IP\" port port=\"443\" protocol=\"tcp\" reject"
        # 检查是否成功添加规则
        if [ $? -eq 0 ]; then
            # 记录添加时间和 IP 到日志
            echo "$(date '+%Y-%m-%d %H:%M:%S') - Blocked IP: $IP" >> "$BLACKLIST_LOG"
        else
            echo "Failed to block IP: $IP" >> "$BLACKLIST_LOG"
        fi
    done
    
    # 重新加载防火墙规则
    firewall-cmd --reload
    
    # 每次循环后等待 1 分钟
    sleep $SLEEP_TIME
done
posted @   BrianSun  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示