您使用 mod_security 和 OWASP 规则微调误报多长时间?

How long do you fine tune false positives with mod_security and OWASP rules?

我刚开始使用 owasp 规则并收到大量误报。例如有人在描述字段中写道:

"we are going to select some users tomorrow for our job platform."

这被检测为 sql 注入攻击 (id 950007)。好吧,事实并非如此。这是有效的评论。我有很多这种误报。

首先,我设置了 SecRuleEngine DetectionOnly 来收集信息。 然后我开始使用 "SecRuleUpdateTargetById 950007 !ARGS:desc" 或 "SecRuleRemoveById 950007" 并且我已经为此花了一天时间。 modsec_audit.log 大小已经超过 100MB。

我对你的经验很感兴趣,你微调多长时间(大概)。开启后,是否仍然出现误报,如何按时添加白名单(是否每天分析日志)?

我需要这个信息来告诉老板这个任务的估计。看起来会很持久。

完全取决于您的网站、技术和测试基础设施。默认情况下,OWASP CRS 非常嘈杂,需要大量调整。顺便说一句,这个和下一个版本可能有一些工作正在进行,并且有一个正常和一个 pa运行oid 模式,以希望减少误报。

举个例子,我负责管理一个大小适中的网站,其中混合了静态页面和大量使用各种技术编写的应用程序(遗留代码 - 呃!)和相当数量的访问者。

幸运的是,我在我们的预生产环境中进行了夜间回归 运行,覆盖范围很广,所以这是我的第一个停靠港。经过一些初步测试后,我在 DetectionOnly 模式下发布了 ModSecurity,并在一个月内对其进行了调整,直到我解决了所有问题并且可以轻松地转向生产。这当然不是连续工作整整一个月,而是在大多数日子里 30-60 分钟来检查前几个晚上 运行,适当调整规则并为下一个晚上的 运行 设置它(该死的饼干用他们的 运行dom 字符串!)。

接下来我在生产中做了同样的事情,并且几乎立即 运行 解决了像你一样的自由文本反馈字段的问题(当然我没有在回归中看到其中的大部分 运行)。这需要进行大量调整(必须关闭这些字段的大量 SQL 注入规则)。我还了解到有多少机器人程序和脚本 运行 针对我们的网站!大多数都是无害的或 Wordpress 漏洞利用尝试(幸运的是我没有 运行 Wordpress),所以我的网站没有真正的风险,但仍然让我大开眼界。我最初每小时监控一次日志 (pa运行oid!),然后每天监控一次,然后每周监控一次。

我会根据记忆说,又花了 3 个月左右的时间,直到我完全适应完全打开它并在接下来的几天里进行了大量检查。幸运的是,所有的努力都得到了回报,很少有误报。

从那时起它就相当稳定并且很少有错误警报 - 主要是由于错误数据(例如,电子邮件@@example.com 作为电子邮件地址输入的字段没有正确验证电子邮件地址)和我经常离开那些地方并改为修复字段验证。

这里给出了我必须调整的一些常见问题和规则:(请注意,您可能不需要或不想在您的站点中关闭所有这些规则)。

我们在网络服务器上安装了 Splunk(基本上是一种吸收日志文件然后可以搜索或自动发出警报或报告问题的工具)。因此,当更麻烦的自由文本字段导致 ModSecurity 块(已更正一两个误报)时设置一些警报,并设置一些警报(因此当超过阈值时我们会收到警报,并且可以看到我们受到持续攻击 - 一年发生几次)和 weekly/monthly 报告。

因此,从头到尾实施需要 4-5 个月,期间可能需要 30-40 个工作日。但这是一个非常复杂的网站,我之前没有 ModSecurity/WAF 经验。从好的方面来说,学习了很多关于网络技术、ModSecurity 的知识,并且因为盯着一些规则而对正则表达式视而不见! :-)