我第一次在我的登台服务器上运行它,我认为我做的一切都是正确的。当我对它运行 nikto2 时,我可以在 modsec_audit.log 中看到条目,但是对于我的生活,我无法手动使 mod_security 阻止任何内容。我已经将 SQL 放入 URL、表单等中,并且我刚刚得到了我们典型的用户友好的 HTML 404 页面,而不是来自 mod_security 的块,它应该是 403 错误或完全块。
我担心它只是检测而不是停止。我检查了我的配置,它肯定会阻止攻击,而不仅仅是检测它们。关于如何验证这个东西实际上是阻止攻击的任何想法?任何人都有一个测试 URL 或者我可以做的事情会向我证明它确实有效?
默认情况下,引擎只会检测模式:
你需要调整
SecRuleEngine On
并重新启动 Apache。
在您的浏览器中尝试访问托管在该服务器上的网站,如下例所示:
然后检查 Modsecurity 日志,你会有类似的东西(如果你有 WHM / cPanel -> 签入 WHM -> Modsecurity Tools 以查看日志):
详细的日志将如下所示:
如果您会看到类似的日志,那么您可以确定您的 Modsecurity 已激活并正常工作。
我找到了答案。只需像这样访问您的网站:example.com/etc/passwd
这将从 mod_security 中弹出一个即时 403 并将其记录在其默认日志中。
我有一张支票如下
如果你得到一个
403
,那么 ModSecurity 正在按预期工作。您可以查看 Rapid7 指南了解基本配置。
https://blog.rapid7.com/2017/04/09/how-to-configure-modsecurity-with-apache-on-ubuntu-linux/
有几个测试卷曲应该产生日志条目。根据您的设置,日志条目同时出现在 /var/log/apache2/access 和 /var/log/apache2/modsec_audit.log 中
跨站脚本测试
SQL注入
您可以在 Google 上搜索一些在线“XSS 测试器”或“XSS 扫描器”,并让该工具对您的临时站点进行一些请求攻击。该工具还可能为您提供一份详细说明“攻击”结果的报告。
然后,您可以跟踪您的日志以查看条目是否与报告匹配,尤其是日期、时间和 IP 地址(如果有)。
尝试这个:
https://example.com/?id=1 and 'c'='c'
将 example.com 替换为您的域名。使用上面突出显示的整个 URL。这应该返回 403。