You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS7环境下使用Modsecurity自动封禁触发严重告警境外IP的方法咨询

实现自动封禁触发ModSecurity严重告警非本国IP的操作步骤

1. 确认ModSecurity严重级别日志输出正常

  • 打开你的ModSecurity主配置文件,Nginx环境默认路径为/etc/nginx/modsec/modsec.conf,Apache环境默认路径为/etc/httpd/conf.d/mod_security.conf
  • 确保SecAuditLog配置项已开启,添加规则筛选严重级别告警:SecAuditLogRelevantStatus "^(?:5|4(?!04))",确认所有severity:CRITICAL级别的规则触发后都会输出到审计日志中
  • 执行命令grep CRITICAL /var/log/modsec_audit.log验证日志是否正常输出,确认每条严重告警日志都包含[client 客户端IP]格式的IP字段

2. 安装IP归属地查询工具

  • 执行命令安装GeoIP工具:yum install geoip -y
  • 验证工具可用性:执行geoiplookup 8.8.8.8,确认返回结果包含IP对应的国家代码,比如中国对应国家代码为CN,后续以此为匹配依据
  • 如有更高的IP归属地准确率需求,可自行替换/usr/share/GeoIP/GeoIP.dat数据库文件

3. 编写自动封禁脚本

  • 新建脚本文件/usr/local/bin/modsec_ban.sh,写入以下内容:
#!/bin/bash
# 配置项:允许放行的国家代码,多个用空格分隔
ALLOW_COUNTRY="CN"
# 封禁时长,单位秒,86400为1天,设为0则为永久封禁
BAN_TIME=86400
# ModSecurity审计日志路径,根据实际环境修改
MODSEC_LOG="/var/log/modsec_audit.log"
# 临时IP存储文件路径
TEMP_IP="/tmp/modsec_temp_ip.txt"

# 提取最近产生的严重告警IP,去重
grep "CRITICAL" $MODSEC_LOG | awk '/\[client/ {print $3}' | tr -d ']' | sort | uniq > $TEMP_IP

# 遍历处理所有待检测IP
while read ip; do
    # 跳过已经被CSF封禁的IP,避免重复处理
    if csf -g $ip | grep -q "Denied"; then
        continue
    fi
    # 查询IP所属国家代码
    country=$(geoiplookup $ip | awk -F ": " '{print $2}' | awk '{print $1}')
    # 非允许国家的IP执行封禁
    if [[ ! " $ALLOW_COUNTRY " =~ " $country " ]]; then
        csf -td $ip $BAN_TIME "ModSecurity严重告警触发封禁,归属国:$country"
    fi
done < $TEMP_IP

# 清理临时文件
rm -f $TEMP_IP
  • 给脚本添加执行权限:chmod +x /usr/local/bin/modsec_ban.sh
  • 手动执行脚本验证功能:/usr/local/bin/modsec_ban.sh,执行后运行csf -t查看临时封禁列表,确认符合规则的IP已被封禁

4. 配置定时任务实现自动执行

  • 执行crontab -e添加定时任务,以下配置为每10分钟执行一次脚本,可根据需求调整执行间隔:
    */10 * * * * /usr/local/bin/modsec_ban.sh > /dev/null 2>&1

注意事项

  • 提前将自己的办公IP添加到CSF白名单/etc/csf/csf.allow中,避免误封导致无法登录服务器
  • 定期检查ModSecurity规则,减少误报情况,避免合法IP被误封禁
  • 如果ModSecurity日志路径和示例不一致,必须修改脚本中的MODSEC_LOG变量为实际路径,否则脚本无法正常提取IP

内容的提问来源于stack exchange,提问作者Wael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:15:07