ModSecurity WAF 日志配置

问题描述 投票:0回答:1

我正在为我的应用程序使用在 k8s 入口中定义的 ModSecurity WAF。

配置如下:

nginx.ingress.kubernetes.io/enable-owasp-core-rules: "true"
nginx.ingress.kubernetes.io/enable-modsecurity: "true"
nginx.ingress.kubernetes.io/modsecurity-snippet: |
  SecAuditEngine RelevantOnly
  SecAuditLogParts AZ
  SecAuditLog /dev/stdout
  SecAuditLogFormat JSON
  SecRequestBodyAccess On

  SecRequestBodyLimit 104857600
  SecRequestBodyNoFilesLimit 5242880
  SecRequestBodyLimitAction Reject
  SecAction "id:900200,phase:1,nolog,pass,t:none,\
    setvar:tx.allowed_methods=GET HEAD POST OPTIONS PUT PATCH DELETE"

  SecRuleRemoveById 949110
  SecRule REQUEST_HEADERS:Content-Type "^application/[a-z0-9.-]+[+]json"  "id:9990001,phase:1,t:none,t:lowercase,pass,log,ctl:requestBodyProcessor=JSON"

我已将

SecAuditLogParts
设置为
AZ
,这是强制性部分。我试图避免记录整个请求或至少记录其中的标头,因为标头包含一个不记名令牌,我不想使其在日志中可见,即使我从
SecAuditLogParts
值中删除了 B,它仍在显示。以下是它在我的日志中的显示方式:

{
  "transaction": {
    "client_ip": ,
    "time_stamp": ,
    "server_id": "",
    "client_port": ,
    "host_ip": ,
    "host_port": ,
    "unique_id": ,
    "request":
      {
        headers: { ... },
        ...
       },
    "response": { ... }, 
    "producer": { ... },
    "messages": { ... },
}

如何在没有标头或至少没有令牌的情况下记录 WAF 输出?

我找到了我尝试过的

SanitiseRequestHeader 
,它在部署时返回了错误,通过在线查找消息,我发现这是一个bug,自 2023 年 10 月以来报告

nginx owasp mod-security waf
1个回答
0
投票
您确定 Modsecurity 正在运行吗?我没有看到

SecRuleEngine On

。另外,您需要删除 
SecRuleRemoveById 949110
,因为这是一个重要的规则 ID,并且是 ModSecurity 正常工作所必需的。

P.S:-我想发表评论,但没有足够的代表。

© www.soinside.com 2019 - 2024. All rights reserved.