我已在运行 ERDDAP 和 ncWMS docker 的 XUbuntu 22.04 虚拟机上安装了 ModSecurity 以进行数据分发。
我通过
apt install libapache2-mod-security2
安装了 ModSecurity,然后通过 a2enmod security2
启用了它。
然后我安装了 OWASP 核心规则集 v3.3.0。
在运行 ERDDAP 时,我注意到如果包含
(
或 )
字符,请求数据的查询将被阻止。
如何设置允许使用
(
和 )
字符进行查询的规则?
OWASP CRS 开发人员在此值班。第一步确实是分析日志,寻找与您的请求相匹配的规则。这些可以在
Error logs
中找到,搜索包含 ModSecurity: Warning.
标记的条目。它指出规则已被触发,以及导致此匹配的规则 ID 和有效负载等详细信息。这是一个例子:
[2016-10-25 08:40:01.884172] [-:error] 127.0.0.1:42732 WA7@QX8AAQEAABC4maIAAAAV [client 127.0.0.1] …
ModSecurity: Warning. Matched phrase "/bin/bash" at ARGS:exec. …
[file "/apache/conf/crs/rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf"] [line "448"] [id "932160"] …
[rev "1"] [msg "Remote Command Execution: Unix Shell Code Found"] [data "Matched Data: /bin/bash found …
within ARGS:exec: /bin/bash"] [severity "CRITICAL"] [ver "OWASP_CRS/3.1.0"] [maturity "1"] [accuracy "8"] …
[tag "application-multi"] [tag "language-shell"] [tag "platform-unix"] [tag "attack-rce"] …
[tag "OWASP_CRS/WEB_ATTACK/COMMAND_INJECTION"] [tag "WASCTC/WASC-31"] [tag "OWASP_TOP_10/A1"] …
[tag "PCI/6.5.2"] [hostname "localhost"] [uri "/index.html"] [unique_id "WA7@QX8AAQEAABC4maIAAAAV"]
之后,根据这些知识,您可以编写排除规则,以消除不需要的匹配,同时最大限度地减少对安全态势的影响(不建议完全禁用该规则,而是针对特定路径或特定路径禁用它)不只处理特定变量)。
您可以在此处阅读有关编写排除规则和处理误报的更多信息:https://coreruleset.org/docs/concepts/false_positives_tuning/
我还建议您阅读以下 Apache / ModSecurity 系列教程,逐步了解 ModSecurity 和 CRS 安装直至处理误报: https://www.netnea.com/cms/apache-tutorials/