测试 mod_security 是否真的有效

DrZ*_*ord 7 mod-security

我第一次在我的登台服务器上运行它,我认为我做的一切都是正确的。当我针对它运行 nikto2 时,我可以在 modsec_audit.log 中看到条目,但在我的一生中,我无法手动使 mod_security 阻止任何内容。我已经将 SQL 放入 URL、表单等中,我刚刚得到了我们典型的用户友好的 HTML 404 页面,而不是来自 mod_security 的块,这应该是 403 错误或完全块。

我担心它只是检测而不是停止。我检查了我的配置,它肯定会阻止攻击,而不仅仅是检测它们。关于如何验证这件事实际上阻止攻击的任何想法?任何人都有测试 URL 或我可以做的事情来向我证明它确实有效?

Hrv*_*jar 5

默认情况下,引擎只会检测模式:

SecRuleEngine DetectionOnly
Run Code Online (Sandbox Code Playgroud)

你需要调整 SecRuleEngine On

sed -ie 's/^\s*SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/modsecurity/modsecurity.conf
Run Code Online (Sandbox Code Playgroud)

并重新启动Apache。


小智 5

在您的浏览器中尝试访问托管在该服务器上的网站,如下例所示:

http://www.anywebsitefromthatserver.com/aphpfilethatdonotexist.php?something=../../etc
Run Code Online (Sandbox Code Playgroud)

然后检查 Modsecurity 日志,你会得到类似的东西(如果你有 WHM / cPanel -> 检查 WHM -> Modsecurity Tools 以查看日志):

2017-12-14 10:28:41 www.anywebsitefromthatserver.com    YOUR IP: 68.XX.XX.XX    CRITICAL    404  930100: Path Traversal Attack (/../)
Run Code Online (Sandbox Code Playgroud)

详细日志将如下所示:

Request:    GET /aphpfilethatdonotexist.php?something=../../etc
Action Description: Warning.
Justification:  Pattern match "(?i)(?:\\x5c|(?:%(?:c(?:0%(?:[2aq]f|5c|9v)|1%(?:[19p]c|8s|af))|2(?:5(?:c(?:0%25af|1%259c)|2f|5c)|%46|f)|(?:(?:f(?:8%8)?0%8|e)0%80%a|bg%q)f|%3(?:2(?:%(?:%6|4)6|F)|5%%63)|u(?:221[56]|002f|EFC8|F025)|1u|5c)|0x(?:2f|5c)|\\/))(?:%(?:(?:f(?:(?:c%80|8)%8)?0%8 ..." at REQUEST_URI_RAW.
Run Code Online (Sandbox Code Playgroud)

如果您会看到类似的日志,那么您可以确定您的 Modsecurity 已激活并正常工作。


DrZ*_*ord 3

我找到了这个问题的答案。只需像这样访问您的网站:example.com/etc/passwd

这将从 mod_security 中立即显示 403 并将其记录在默认日志中。

  • 这对我不起作用 (3认同)