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
分类:
Linux以及服务器开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库