测试 mod_security 是否真正起作用

测试 mod_security 是否真正起作用

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

我担心它只会检测而不会阻止。我检查了我的配置,它肯定设置为阻止攻击而不仅仅是检测攻击。有没有人知道如何验证这个东西是否真的在阻止攻击?有没有人有测试 URL 或我可以做些什么来证明它确实有效?

答案1

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

http://www.anywebsitefromthatserver.com/aphpfilethatdonotexist.php?something=../../etc

然后检查 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 (/../)

详细日志如下:

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.

如果您看到类似的日志,那么您可以确定您的 Modsecurity 已激活并正在运行。

答案2

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

SecRuleEngine DetectionOnly

你需要调整SecRuleEngine On

sed -ie 's/^\s*SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/modsecurity/modsecurity.conf

并重新启动 Apache。

答案3

您可以查看 Rapid7 指南了解基本配置。

https://blog.rapid7.com/2017/04/09/how-to-configure-modsecurity-with-apache-on-ubuntu-linux/

有几个测试 curl 应该会生成日志条目。日志条目会同时出现在 /var/log/apache2/access 和 /var/log/apache2/modsec_audit.log 中,具体取决于您的设置

XSS 测试

curl 'http://www.example.com/?q="><script>alert(1)</script>'

SQL 注入

curl "http://www.example.com/?q='1 OR 1=1"

答案4

我有一张如下的支票

$ curl -ks -o /dev/null -w '%{http_code}' "https://something.example.com/foo?username=1'%20or%20'1'%20=%20'"

如果您得到一个403,那么 ModSecurity 就按预期工作了。

相关内容