Partilhar via


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

O Firewall de Aplicativo Web do Azure na Porta da Frente do Azure fornece registro em log e telemetria abrangentes para ajudá-lo a entender como o firewall de aplicativo Web (WAF) está sendo executado e as ações que ele toma.

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

Métricas

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

Para acessar as métricas do seu WAF:

  1. Entre no portal do Azure e vá para seu 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 Web Application Firewall para controlar 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 de um WAF do Azure Front Door.

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

Para acessar suas métricas WAF de desafio JavaScript:

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

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

  • PolicyName: Este é o nome da política WAF
  • Regra: pode ser qualquer regra personalizada ou regra de bot
  • Ação: Há quatro valores possíveis para a ação JS Challenge
    • Emitido: JS Challenge é invocado pela primeira vez
    • Aprovado: A computação do JS Challenge foi bem-sucedida e uma resposta foi recebida
    • Validade: O cookie de validade JS Challenge esteve presente
    • Bloqueado: Falha na computação do JS Challenge

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

Logs e diagnósticos

O WAF da Porta da Frente do Azure fornece relatórios detalhados sobre cada solicitação e cada ameaça que deteta. O registro em log é integrado aos logs e alertas de diagnóstico do Azure usando os logs do Azure Monitor.

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

Captura de ecrã que mostra como ativar os registos WAF.

Se o registro em log estiver habilitado e uma regra WAF for acionada, todos os padrões correspondentes serão registrados em texto sem formatação para ajudá-lo a analisar e depurar o comportamento da política WAF. Você pode usar exclusões para ajustar regras e excluir quaisquer dados que você deseja excluir dos logs. Para obter mais informações, consulte Listas de exclusão de firewall de aplicativo Web no Azure Front Door.

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

  • Logs WAF
  • Registos de acesso
  • Logs da sonda de integridade

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

Logs WAF

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

O log FrontdoorWebApplicationFirewallLog inclui qualquer solicitação que corresponda a uma regra WAF.

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

Property Description
Ação Seguimento dado ao pedido. Os logs incluem solicitações com todas as ações. As ações são:
  • Allow e allow: O pedido foi autorizado a continuar o processamento.
  • Block e block: A solicitação correspondia a uma regra WAF configurada para bloquear a solicitação. Em alternativa, o limiar de pontuação da anomalia foi atingido e o pedido foi bloqueado.
  • Log e log: A solicitação correspondia a uma regra WAF configurada para usar a Log ação.
  • AnomalyScoring e logandscore: A solicitação correspondia a uma regra WAF. A regra contribui para a pontuação da anomalia. A solicitação pode ou não ser bloqueada, dependendo de outras regras executadas na mesma solicitação.
  • JS Challenge e JSChallengeIssued: Emitido por falta de impugnação ou invalidade de impugnação, resposta em falta.

    O log é criado quando um cliente solicita acesso a um aplicativo Web pela primeira vez e não foi desafiado anteriormente. Este 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 resposta de contestação válida.

    Esse log é criado quando um cliente resolve o desafio JS e reenvia a solicitação com a resposta correta. Nesse caso, o WAF do Azure valida o cookie e prossegue processando as regras restantes sem gerar outro desafio JS.
  • JS Challenge e JSChallengeValid: Logged/passthrough devido a contestação válida.

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

    Esse log é criado quando uma computação de desafio JS falha.
ClientIP O endereço IP do cliente que fez a solicitação. Se houver um X-Forwarded-For cabeçalho na solicitação, o endereço IP do cliente será retirado desse campo de cabeçalho.
ClientPort A porta IP do cliente que fez a solicitação.
Detalhes Mais detalhes sobre o pedido, incluindo quaisquer ameaças que foram detetadas.
matchVariableName: Nome do parâmetro HTTP da solicitação correspondido, por exemplo, nomes de cabeçalho (até 100 caracteres no máximo).
matchVariableValue: Valores que acionaram a correspondência (até 100 caracteres no máximo).
Host O Host cabeçalho da solicitação.
Política O nome da política WAF que processou a solicitação.
Modo de Política Modo de operações da política WAF. Os valores possíveis são Prevention e Detection.
RequestUri URI completo da solicitação.
RuleName O nome da regra WAF que a solicitação correspondeu.
SocketIP O endereço IP de origem visto pelo WAF. Este endereço IP baseia-se na sessão TCP e não considera quaisquer cabeçalhos de pedido.
TrackingReference A cadeia de referência única que identifica um pedido servido pelo Azure Front Door. Esse valor é enviado ao cliente no cabeçalho da X-Azure-Ref resposta. Utilize este campo quando procurar um pedido específico no registo.

A consulta de exemplo a seguir mostra as solicitações que o WAF da Porta da Frente do Azure bloqueou:

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

O trecho a seguir mostra uma 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óximos passos

Saiba mais sobre o Azure Front Door.