Compartilhar via


Monitoramento e registro em log do Firewall de Aplicativo Web do Azure

O Firewall do Aplicativo Web do Azure no Azure Front Door fornece registro em log extensivo e telemetria para ajudá-lo a entender como o WAF (firewall do aplicativo Web) está sendo executado e as ações executadas.

O log do WAF do Azure Front Door é integrado ao Azure Monitor. O Azure Monitor permite o controle das informações de diagnóstico, incluindo logs e alertas do WAF. Você pode configurar o monitoramento do WAF dentro do recurso do Front Door no portal do Azure na guia Diagnóstico, por meio de abordagens de infraestrutura como código ou diretamente por meio do serviço do Azure Monitor.

Métricas

O Azure Front Door registra automaticamente as métricas para ajudá-lo a entender o comportamento de seu WAF.

Para acessar as métricas do WAF:

  1. Entre no portal do Azure e navegue até o perfil do Azure Front Door.
  2. No painel mais à esquerda, em Monitoramento, selecione a guia Métricas .
  3. Adicione a métrica Contagem de Solicitações do Firewall de Aplicativo Web para acompanhar o número de solicitações que correspondem às regras do WAF.

Você pode criar filtros personalizados com base em tipos de ação e nomes de regras. As métricas incluem solicitações com todas as ações, exceto Log.

Captura de tela que mostra as métricas para um WAF do Azure Front Door.

Métricas do desafio JavaScript (visualização)

Para acessar as métricas do WAF do desafio JavaScript:

  • Adicione a métrica Web Application Firewall JS Challenge Request Count para rastrear o número de solicitações que correspondem às regras do WAF de desafio de JavaScript.

Os seguintes filtros são fornecidos como parte dessa métrica:

  • PolicyName: Esse é o nome da política WAF
  • Regra: Pode ser qualquer regra personalizada ou regra de bot
  • Ação: Existem quatro valores possíveis para a ação do JS Challenge
    • Emitido: JS Challenge é invocado pela primeira vez
    • Passado: O cálculo do JS Challenge foi bem-sucedido e uma resposta foi recebida
    • Válido: O cookie de validade do JS Challenge estava presente
    • Bloqueado: Falha no cálculo do Desafio JS

Captura de tela mostrando as métricas do desafio JavaScript.

Configurar logs e diagnósticos

O WAF do Azure Front Door fornece relatórios detalhados sobre cada solicitação e cada ameaça detectada. O registro em log é integrado aos logs e alertas de diagnóstico do Azure através do uso dos logs do Azure Monitor.

Esses logs não são habilitados por padrão. Você precisa habilitar os logs explicitamente. Você pode configurar os logs no portal do Azure usando a guia Configurações de diagnóstico.

Captura de tela que mostra como habilitar os logs do WAF.

Se o log estiver habilitado e uma regra de WAF for disparada, todos os padrões correspondentes serão registrados em texto sem formatação para ajudar a analisar e depurar o comportamento da política do WAF. Você pode usar exclusões para ajustar as regras e excluir todos os dados que você deseja que sejam excluídos dos logs. Para obter mais informações, confira Listas de exclusões do Firewall de Aplicativo Web no Azure Front Door.

Você pode habilitar três tipos de logs do Azure Front Door:

  • Logs do WAF
  • Logs de acesso
  • Logs de investigação de integridade

Os logs de atividades são habilitados por padrão e fornecem visibilidade das operações executadas em seus recursos do Azure, como alterações de configuração no perfil do Azure Front Door.

Logs do WAF

O log FrontDoorWebApplicationFirewallLog inclui solicitações que correspondem a uma regra de WAF.

O log FrontdoorWebApplicationFirewallLog inclui quaisquer solicitações que correspondem a uma regra de WAF.

A tabela a seguir mostra os valores registrados em log para cada solicitação.

Propriedade Descrição
Ação Ação executada na solicitação. Os logs incluem solicitações com todas as ações. As ações são:
  • Allow e allow: a solicitação foi autorizada a continuar o processamento.
  • Block e block: a solicitação correspondeu a uma regra WAF configurada para bloquear a solicitação. Como alternativa, o limite de pontuação de anomalias foi atingido e a solicitação foi bloqueada.
  • Log e log: a solicitação correspondeu a uma regra WAF configurada para usar a ação Log.
  • AnomalyScoring e logandscore: a solicitação correspondeu a uma regra de WAF. A regra contribui para a pontuação de anomalias. A solicitação pode ou não ser bloqueada dependendo de outras regras executadas na mesma solicitação.
  • JS Challenge e JSChallengeIssued: Emitido devido a liberação de desafio ausente/inválida, resposta ausente.

    O log é criado quando um cliente solicita acesso a um aplicativo Web pela primeira vez e não foi contestado anteriormente. Esse cliente recebe a página de desafio JS e prossegue para calcular o desafio JS. Após o cálculo bem-sucedido, o cliente recebe o cookie de validade.
  • JS Challenge e JSChallengePass: Aprovado devido a uma resposta de desafio válida.

    Esse log é criado quando um cliente resolve o desafio JS e reenvia a solicitação com a resposta correta. Nesse caso, o Azure WAF valida o cookie e processa as regras restantes sem gerar outro desafio JS.
  • JS Challenge e JSChallengeValid: Registrado/passagem devido a desafio válido.

    Esse log é criado quando um cliente já resolveu um desafio. Nesse caso, o Azure WAF regista o solicitação e processa as restantes regras.
  • JS Challenge e JSChallengeBlock: Bloqueado

    Esse log é criado quando um cálculo de desafio JS falha.
ClientIP Endereço IP do cliente que fez a solicitação. Se houver um cabeçalho X-Forwarded-For na solicitação, o endereço IP do cliente será obtido desse campo de cabeçalho.
ClientPort Porta IP do cliente que fez a solicitação.
Detalhes Detalhes adicionais sobre a solicitação, incluindo quaisquer ameaças detectadas.
matchVariableName: nome do parâmetro HTTP da solicitação correspondente, por exemplo, nomes de cabeçalho (máximo de caracteres 100).
matchVariableValue: valores que dispararam a correspondência (até 100 caracteres no máximo).
Host O cabeçalho Host da solicitação.
Política O nome da política do WAF que processou à solicitação.
PolicyMode Modo de operações da política do WAF. Os valores possíveis são Prevention e Detection.
RequestUri O URI completo da solicitação.
RuleName O nome da regra do WAF com a qual a solicitação foi correspondida.
SocketIP O endereço IP de origem visto pelo WAF. Esse endereço IP é baseado na sessão TCP e não considera nenhum cabeçalho de solicitação.
TrackingReference A cadeia de caracteres de referência exclusiva que identifica uma solicitação atendida pelo Azure Front Door. Esse valor é enviado ao cliente no cabeçalho de resposta X-Azure-Ref. Use esse campo ao pesquisar uma solicitação específica no log.

A consulta de exemplo a seguir mostra as solicitações que foram bloqueadas pelo WAF do Azure Front Door:

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorWebApplicationFirewallLog" 
| where action_s == "Block" 
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorWebApplicationFirewallLog"
| where action_s == "Block"

Veja a seguir um exemplo de entrada de log de exemplo, incluindo o motivo pelo qual a solicitação foi bloqueada:

{
  "time": "2020-06-09T22:32:17.8376810Z",
  "category": "FrontdoorWebApplicationFirewallLog",
  "operationName": "Microsoft.Cdn/Profiles/Write",
  "properties": {
    "clientIP": "xxx.xxx.xxx.xxx",
    "clientPort": "52097",
    "socketIP": "xxx.xxx.xxx.xxx",
    "requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
    "ruleName": "Microsoft_DefaultRuleSet-1.1-SQLI-942100",
    "policy": "WafDemoCustomPolicy",
    "action": "Block",
    "host": "wafdemofrontdoorwebapp.azurefd.net",
    "trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
    "policyMode": "prevention",
    "details": {
      "matches": [
        {
          "matchVariableName": "QueryParamValue:q",
          "matchVariableValue": "' or 1=1"
        }
      ]
    }
  }
}
{
  "time": "2020-06-09T22:32:17.8376810Z",
  "category": "FrontdoorWebApplicationFirewallLog",
  "operationName": "Microsoft.Network/FrontDoorWebApplicationFirewallLog/Write",
  "properties": {
    "clientIP": "xxx.xxx.xxx.xxx",
    "clientPort": "52097",
    "socketIP": "xxx.xxx.xxx.xxx",
    "requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
    "ruleName": "Microsoft_DefaultRuleSet-1.1-SQLI-942100",
    "policy": "WafDemoCustomPolicy",
    "action": "Block",
    "host": "wafdemofrontdoorwebapp.azurefd.net",
    "trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
    "policyMode": "prevention",
    "details": {
      "matches": [
        {
          "matchVariableName": "QueryParamValue:q",
          "matchVariableValue": "' or 1=1"
        }
      ]
    }
  }
}

Para obter mais informações sobre os outros logs do Azure Front Door, consulte Monitorar métricas e logs no Azure Front Door.

Próximas etapas

Saiba mais sobre o Azure Front Door.