Mod Security的HTTP:BL规则是否需针对手机浏览器做特殊配置?
问题解答
HTTP:BL规则本身不存在适配手机浏览器的问题,也不需要针对手机端做额外的差异化配置。该规则的校验逻辑是基于请求发起端的真实公网源IP,和终端类型、浏览器UA没有任何关系。
你遇到的两端拦截表现不一致,核心排查方向如下:
- 首先确认两端出口公网IP是否一致:你在Ubuntu虚拟机的Firefox中访问能触发Forbidden拦截,说明当时虚拟机发起请求的出口公网IP命中了HTTP:BL的恶意IP库。手机访问时如果使用的是蜂窝移动网络、或者连接了和虚拟机不同的WiFi,出口公网IP和虚拟机不在同一网段、也不在HTTP:BL的恶意IP列表里,自然不会触发拦截。需要特别注意:你测试URL里拼接的
?ID=103.50.84.114只是普通的URL查询参数,HTTP:BL规则不会读取这个参数作为校验依据,它的校验对象是TCP连接层面的真实请求源IP。 - 检查WAF规则是否存在针对性例外:排查你的ModSecurity规则集,有没有配置基于UA的跳过逻辑,比如匹配到包含
Mobile标识的UA时,直接关闭规则引擎、跳过IP类校验规则,这类配置会导致手机端的请求直接绕过HTTP:BL检测。 - 排查两端访问链路的差异:如果手机访问时走了CDN、网页加速、代理服务,一方面请求的真实源IP会被替换为代理节点的IP,导致无法命中黑名单;另一方面如果加速节点已经缓存了站点首页内容,请求根本不会转发到后端ModSecurity处理层,会直接返回缓存的首页,自然不会出现拦截提示。
- 确认规则的加载生效范围:你贴出的id为900500的配置只是HTTP:BL功能的初始化开关,用来设置哪几类恶意IP需要拦截,并不是实际执行IP查询、拦截动作的规则本体。你需要确认HTTP:BL的实际拦截规则在
vhost1.group21.com站点的所有访问路径下都已启用,没有被针对移动端、特定路径的局部配置覆盖失效。
你可以直接对照后端Web服务的访问日志、ModSecurity审计日志定位问题:先找到手机访问对应时间的请求记录,确认请求到达后端时的真实源IP,再查看审计日志中该请求有没有经过HTTP:BL规则校验、具体匹配结果是什么,很快就能找到不拦截的原因。
对应规则配置参考:
SecHttpBlKey (key here) SecAction "id:900500,\ phase:1,\ nolog,\ pass,\ t:none,\ setvar:tx.block_search_ip=0,\ setvar:tx.block_suspicious_ip=1,\ setvar:tx.block_harvester_ip=1,\ setvar:tx.block_spammer_ip=1"
内容的提问来源于stack exchange,提问作者thanya
相关产品推荐
相关产品推荐

