我将一个标签列入白名单,我想知道是否有办法将其列入白名单并同时保留对该标签的日志记录。
SecRuleUpdateTargetByTag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION" !ARGS:/^fallout/
这样的事情会起作用吗?
SecRuleUpdateTargetByTag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION",“记录”,“允许”!参数:/^后果/
答案1
不,这只是为了更新规则所针对的目标。
有一个 SecRuleUpdateActionById 命令,它允许您使 SQL_INJECTION 规则通过而不是阻止,但不适用于您在此处想要的特定场景(即只有 ARGS/^fallout/ 请求)并且不适用于 ctl 等效命令以允许您将其链接起来以实现此目的 :-(
您可以删除 SecRuleUpdateTargetByTag 自定义,并将规则引擎改为仅针对以下请求进行检测:
SecRule ARGS /^fallout/ "phase:2,id:1000,ctl:ruleEngine=DetectionOnly"
然而,这意味着没有任何阶段:2 规则会阻止这些 URL,从而在您的 WAF 中留下一个巨大的漏洞。
一种可行的方法是将其添加到 modsecurity_crs_41_sql_injection_attacks.conf 文件的开头,然后在结尾处反向操作以将其重新打开。这样可以正常工作,因为规则是按照在配置中加载的顺序进行处理的。但是通常我不喜欢编辑实际的 CRS 文件,因为这样会使升级变得困难(很容易覆盖这样的更新)。
或者,只记录所有 ARGS 后果请求,然后手动检查是否存在 SQL_INJECTION 尝试:
SecRule ARGS /^fallout/ "phase:2,id:1001,log"