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

如何为ModSecurity规则配置国家白名单?规则校验及GeoLiteCity.dat获取咨询

ModSecurity国家白名单规则校验与GeoIP库获取方案

规则正确性说明

你写的规则核心geo匹配逻辑语法没有错误,但存在配置位置错误和安全风险,直接上线会出问题:

  • SecGeoLookupDb /usr/local/geo/data/GeoLiteCity.dat是全局配置指令,不属于规则链内容,必须放在ModSecurity主配置(通常是modsecurity.conf)的自定义规则段之前、全局加载位置,不能和SecRule规则混写在同一段,否则Web服务重载时会报语法错误,无法正常启动。
  • 现有规则直接配置allow动作,会对所有来源为NG的IP完全跳过全部WAF检测,相当于给对应国家的所有访问者关闭整站防护,安全风险极高,和你「解决发布内容误报」的需求不匹配,属于过度放行。

适配WordPress场景的优化后规则

首先在全局配置位置提前加载GeoIP库:

# 全局加载GeoIP库,放在所有自定义规则之前
SecGeoLookupDb /usr/share/GeoIP/GeoLiteCity.dat

针对WordPress内容发布场景的最小范围白名单规则:

# 仅对NG国家来源的WP内容发布请求关闭拦截,保留日志记录
SecRule REMOTE_ADDR "@geoLookup" "chain,phase:2,id:1100234,pass,msg:'Custom WAF Rules: Allow NG Country for WP Content Publish',ctl:ruleEngine=DetectionOnly"
SecRule GEO:COUNTRY_CODE "@streq NG" "chain"
SecRule REQUEST_URI "@beginsWith /wp-admin/post.php" "chain"
SecRule REQUEST_METHOD "POST"

优化说明:规则仅匹配WP后台发布内容的POST请求,用ctl:ruleEngine=DetectionOnly把对应请求的WAF模式切为仅记录不拦截,既解决发布时的误报问题,又不会完全关闭WAF检测,也不会给非发布路径的请求开白,风险可控。

旧版GeoLiteCity.dat获取方式

不要从第三方不明站点下载该文件,公开分享的第三方GeoIP库可能被篡改IP映射关系,存在安全风险,推荐两种稳妥获取方式:

  • 直接通过服务器系统的官方软件源安装:Debian/Ubuntu系统执行apt install geoip-database,安装完成后文件默认存放在/usr/share/GeoIP/GeoLiteCity.dat路径;CentOS/RHEL系统执行yum install geoip-geolitecity即可获取对应文件,直接把规则里的库路径指向该位置即可,不需要手动上传文件。
  • 如果你有其他同环境运行的老服务器,可以直接从老服务器的GeoIP安装路径拷贝该文件使用,拷贝后注意校验文件MD5和原系统包内的文件一致,避免被篡改。

补充提示:旧版dat格式的GeoIP库MaxMind早在2019年就停止更新,IP段匹配准确率会越来越差,如果你的ModSecurity版本已经支持GeoIP2模块,建议后续切换为新版mmdb格式的GeoIP库,匹配准确率更高,也能持续获得IP段更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:45:50