如何使用 RegEx 实现 mod_security

如何使用 RegEx 实现 mod_security

我在 Apache/2.2.19 (Win32) 服务器上使用 mod_security + core ruleset/2.2.1 设置了一个这样的目录/站点

/website1/login.php
/website2/login.php
/website3/login.php
/websiteN/login.php

在我的 modsecurity_crs_10_config.conf 中我有

setvar:'tx.brute_force_protected_urls=login.php'

问题是,除非我输入每个 login.php 页面的完整路径,否则它不会工作,如下所示:

setvar:'tx.brute_force_protected_urls=/website1/login.php /website2/login.php andSoOn'

我曾尝试使用 RegEx 的其他方法来解决该问题(例如 /(.*)/login.php),但似乎无法解决。

所以,问题基本上是;如何在服务器上所有名为 login.php 的页面上强制执行 BFP?

谢谢。

答案1

尝试这个:

setvar:'tx.brute_force_protected_urls=/login.php'

如果它不起作用,我建议您启用调试来查看日志的内容。

答案2

我让它工作了。在“modsecurity_crs_11_brute_force.conf”中,我必须更改第 39 行:

SecRule REQUEST_FILENAME "!@within %{tx.brute_force_protected_urls}"  ...

SecRule REQUEST_FILENAME "!@contains %{tx.brute_force_protected_urls}" ...

在‘modsecurity_crs_10_config.conf’中有:

setvar:'tx.brute_force_protected_urls=/login.php' ...

谢谢您的帮助。

相关内容