Como as métricas e os logs são formatados para a ação da regra de contagem no AWS WAF?

Última atualização: 27/07/2022

Eu configurei o AWS WAF e algumas das regras na ACL da Web se referem à ação Contar. Como analiso as métricas e os logs do Amazon CloudWatch para as regras na ação da regra de contagem?

Breve descrição

Você pode usar a ação da regra de contagem para testar regras antes de implementá-las com as configurações normais de ação. O AWS WAF avalia as solicitações em relação às regras na ação da regra de contagem e relata as correspondências em métricas, amostras de solicitação e logs.

Você também pode usar a ação de regra de contagem para solucionar problemas de regras que estejam gerando falsos positivos. Falsos positivos ocorrem quando uma regra ou um grupo de regras bloqueia tráfego que você não esperava que fosse bloqueado. Se você identificar que uma regra está bloqueando solicitações que deseja que sejam permitidas, poderá atualizar a ação para que essa regra para contar. Isso exclui a atuação da regra nas solicitações. Para obter mais informações sobre como detectar e mitigar falsos positivos, consulte Como posso detectar falsos positivos causados por AWS Managed Rules e adicioná-los a uma lista segura?

Resolução

Para entender como as métricas e os logs são formatados para a ação da regra de contagem, considere os três cenários a seguir:

  1. Defina a ação da regra para uma regra personalizada para o modo de contagem.
  2. Defina a ação da regra para regras individuais para o modo de contagem em um grupo de regras AWS Managed Rules.
  3. Substitua a ação de um grupo de regras inteiro por contar.

Definir a ação da regra para uma regra personalizada como modo de contagem

Exemplo

Você tem uma ACL da Web (Test1-ACL) que tem uma única regra personalizada (Geo-Count) com uma ação da regra de contagem. A regra Geo-Count conta a solicitação se ela se originar nos Estados Unidos. Se o IP do cliente pertencer a outro país, a ação padrão da ACL da Web com uma ação Permitir será aplicada.

A seguir está a representação JSON dessa regra:

{
  "Name": "Geo-Count",
  "Priority": 0,
  "Statement": {
    "GeoMatchStatement": {
      "CountryCodes": [
        "US"
      ]
    }
  },
  "Action": {
    "Count": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "Geo-Count"
  }
}

Se a solicitação se originar de um IP de cliente localizado nos Estados Unidos, ocorrerá o seguinte:

  • A solicitação será contada.
  • A métrica do CloudWatch para a regra personalizada Geo-Count mostra um ponto de dados na métrica CountedRequests.
    Observação: o CloudWatch só informa a métrica CountedRequests quando existe um valor diferente de zero. Para visualizar os dados, alterne a estatística para Sum (Soma) na guia Graphed metrics (Métricas gráficas) no console do CloudWatch.
  • Como Geo-Count é uma regra personalizada com a ação Contar, o AWS WAF conta a solicitação.
  • Em seguida, o AWS WAF avalia a solicitação em relação à ação padrão da ACL da Web. Como a ação padrão da ACL da Web está definida como Permitir, a solicitação é permitida.
  • Um ponto de dados para essa ação aparece na métrica AllowedRequests para a ACL da Web.

Para obter mais informações sobre métricas e dimensões incluídas no namespace do AWS WAF, consulte Métricas e dimensões do AWS WAF.

Quando você atualiza a ação de uma regra personalizada para Contar, a regra é considerada como uma regra de encerramento do ponto de vista de registro. Assim, se a solicitação corresponder a uma regra personalizada no modo de contagem, os seguintes campos serão registrados:

  • nonTerminatingMatchingRules: a lista de regras de encerramento que correspondem à solicitação.
  • ruleId: o ID da regra que correspondia à solicitação e não era de encerramento.
  • action: Isso sempre é COUNT (CONTAR).
  • ruleMatchDetails: informações detalhadas sobre a regra que correspondia à solicitação. Esse campo só é preenchido para instruções de regra de correspondência de injeção de SQL (SQLi) e cross-site scripting (XSS).

Se a regra Geo-Count corresponder à solicitação, os logs mostrarão os detalhes de nonTerminatingMatchingRules, conforme mostrado no exemplo a seguir:

"nonTerminatingMatchingRules": [{
  "ruleId": "Geo-Count",
  "action": "COUNT",
  "ruleMatchDetails": [

  ]
}]

Para obter mais informações sobre todos os campos do log possíveis, consulte Log fields (Campos do log).

Para ativar o registro em log para uma ACL da Web, consulte Gerenciar o registro em log para uma ACL da Web.

Definir a ação da regra para regras individuais como modo de contagem em um grupo de regras do AWS Managed Rules

Você pode substituir as ações das regras de um grupo de regras, definindo-as como contar para algumas ou todas as regras. Para ações de regra configuradas no grupo de regras como algo diferente de contar, a substituição altera essa ação para que apenas as solicitações correspondentes sejam contadas.

Se uma solicitação da Web corresponder à regra, o AWS WAF processará a correspondência como uma contagem e continuará avaliando as regras subsequentes do grupo de regras.

Para obter mais informações sobre como definir a ação da regra como contar em um grupo de regras, consulte Definir ações de regra como contar em um grupo de regras.

Exemplo

Você tem uma ACL da Web (Test2-ACL) que inclui um grupo de regras do AWS Managed Rules (AWSManagedRulesKnownBadInputsRuleSet). Não há outras regras nesta ACL da Web e a ação padrão da ACL da Web é configurada com uma ação Permitir.

Você atualiza a regra Log4JRCE dentro do grupo de regras AWSManagedRulesKnownBadInputsRuleSet para uma ação Contar. Agora, se um componente (como um URI, string de consulta e assim por diante) na solicitação do cliente tiver uma vulnerabilidade Log4j, essa solicitação será contada pela regra Log4JRCE. Se a solicitação não corresponder a nenhuma outra regra no grupo de regras, ela será permitida pela ação padrão da ACL da Web.

A seguir está a representação JSON dessa regra:

{
  "Name": "AWS-AWSManagedRulesKnownBadInputsRuleSet",
  "Priority": 0,
  "Statement": {
    "ManagedRuleGroupStatement": {
      "VendorName": "AWS",
      "Name": "AWSManagedRulesKnownBadInputsRuleSet",
      "ExcludedRules": [
        {
          "Name": "Log4JRCE"
        }
      ]
    }
  },
  "OverrideAction": {
    "None": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "AWS-AWSManagedRulesKnownBadInputsRuleSet"
  }
}

Se você definir a ação da regra como contar para as regras do grupo de regras, essas regras serão consideradas regras excluídas no grupo de regras. Se você tiver métricas ativadas, receberá métricas CONTAR para cada regra excluída.

Se a solicitação corresponder à regra Log4JRCE, ocorrerá o seguinte:

  • A solicitação será contada.
  • A métrica do CloudWatch para a regra Log4JRCE mostra um ponto de dados na métrica CountedRequests.

Quando nenhuma outra regra no AWSManagedRulesKnownBadInputsRuleSet corresponder à solicitação, ocorre o seguinte:

  • A solicitação é permitida pela ação padrão da ACL da Web.
  • Um ponto de dados aparece na métrica AllowedRequests para a ACL da Web.

Para regras excluídas, os seguintes campos são capturados nos logs do AWS WAF:

  • excludedRules: a lista de regras no grupo de regras que você excluiu. A ação para essas regras é definida como Contar.
  • exclusionType: um tipo que indica que a regra excluída tem a ação Contar.
  • ruleId: o ID da regra no grupo de regras que é excluído.

Se a regra Log4JRCE corresponder à solicitação, os logs mostrarão os detalhes de excludedRules, conforme mostrado no exemplo a seguir:

"ruleGroupList":[
  {
    "ruleGroupId":"AWS#AWSManagedRulesKnownBadInputsRuleSet",
    "terminatingRule":null,
    "nonTerminatingMatchingRules":[
      
      ],
    "excludedRules":[
      {
        "exclusionType":"EXCLUDED_AS_COUNT",
        "ruleId":"Log4JRCE"
      }
    ]
  }
]

Se uma regra individual dentro de um grupo de regras for atualizada para a ação da regra de contagem, ocorrerá o seguinte:

  • Os logs da solicitação correspondente a essa regra não conterão uma ação Contar para a regra no campo nonTerminatingMatchingRules.
  • Os logs do AWS WAF mostram essa regra no campo excludedRules.

Substituir a ação de um grupo de regras inteiro por contar

Para obter informações sobre como substituir a ação de um grupo de regras por contar, consulte Substituir a ação resultante de grupos de regras por contar.

Para obter informações sobre como substituir a ação de um grupo de regras por contar, consulte Substituir a ação de um grupo de regras por contar.

Exemplo

Você tem uma ACL da Web (Test3-ACL) que inclui um grupo de regras do AWS Managed Rules (AWSManagedRulesKnownBadInputsRuleSet). Não há outras regras nesta ACL da Web e a ação padrão da ACL da Web é Permitir. Todas as regras no grupo de regras AWSManagedRulesKnownBadInputsRuleSet estão usando a ação padrão definida na regra. Isso significa que as regras desse grupo de regras não estão definidas como Contar. Porém, a opção Override rule group action to count (Substituir ação do grupo de regras por contar) está ativada.

A seguir está a representação JSON dessa regra:

{
  "Name": "AWS-AWSManagedRulesKnownBadInputsRuleSet",
  "Priority": 0,
  "Statement": {
    "ManagedRuleGroupStatement": {
      "VendorName": "AWS",
      "Name": "AWSManagedRulesKnownBadInputsRuleSet"
    }
  },
  "OverrideAction": {
    "Count": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "AWS-AWSManagedRulesKnownBadInputsRuleSet"
  }
}

Se um componente (como um URI, uma string de consulta etc.) na solicitação do cliente tiver uma vulnerabilidade Log4j, ocorrerá o seguinte:

  • A solicitação será bloqueada pela regra Log4JRCE.
  • Como Bloquear é uma ação de encerramento, o AWS WAF interrompe a avaliação do grupo de regras e retorna o resultado da ação de encerramento para a ACL da Web.
  • Nesse ponto, a ação Substituir grupo de regras por contar entra em vigor. A ação de encerramento do grupo de regras é substituída por uma ação contar.
  • Em seguida, o AWS WAF continua processando o restante das regras na ACL da Web.

Quando uma solicitação corresponde à regra Log4JRCE (ou qualquer outra regra) do grupo de regras AWSManagedRulesKnownBadInputsRuleSet , ocorre o seguinte:

  • O CloudWatch mostra um ponto de dados na métrica CountedRequests correspondente ao nome do grupo de regras AWSManagedRulesKnownBadInputsRuleSet.
  • O AWS WAF continua processando o restante das regras na ACL da Web depois que a substituição ocorre. Então, a solicitação será comparada com a ação padrão da ACL da Web. Isso será exibido como um ponto de dados na métrica AllowedRequests para a ACL da Web.
  • Nos logs do AWS WAF, a solicitação correspondente contém uma ação de contagem no campo nonTerminatingMatchingRules.
  • Além disso, a ruleGroupList mostra a regra no grupo de regras que originalmente bloqueou a solicitação antes que a ação de encerramento fosse substituída por contar.
  • Se a regra Log4JRCE corresponder à solicitação, os logs mostrarão os detalhes ruleGroupList e nonTerminatingMatchingRules, conforme mostrado no exemplo a seguir:
"ruleGroupList": [{
  "ruleGroupId": "AWS#AWSManagedRulesKnownBadInputsRuleSet",
  "terminatingRule": {
      "ruleId": "Log4JRCE",
      "action": "BLOCK",
      "ruleMatchDetails": null
    },
  "nonTerminatingMatchingRules": [

  ],
    "excludedRules": null
  }
],
"rateBasedRuleList": [

],
"nonTerminatingMatchingRules": [{
    "ruleId": "AWS-AWSManagedRulesKnownBadInputsRuleSet",
    "action": "COUNT",
    "ruleMatchDetails": [

  ]
}]

Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?