Partilhar via


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

O Firewall de Aplicativo Web do Azure no Azure Front Door fornece registro em log e telemetria abrangentes para ajudá-lo a entender como o firewall de aplicativo Web (WAF) está a funcionar 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 ações de encerramento, como Block e Allow também solicitações em que o WAF não tomou nenhuma ação. Como várias ações não terminativas Log podem ser acionadas por uma única solicitação, elas são excluídas dessa métrica para evitar a duplicação de contagens de solicitações.

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 do Azure Front Door fornece relatórios detalhados sobre cada solicitação e cada ameaça que o WAF deteta. Os logs de registo são integrados nos 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 registos no portal do Azure usando o separador Configurações de Diagnóstico.

Se o registo estiver habilitado e uma regra WAF for acionada, todos os padrões correspondentes serão registados em texto simples 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:

  • Registros de WAF
  • Registos de acesso
  • Logs da sonda de saúde

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.

Registros de 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.

Propriedade Descrição
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, foi alcançado o limiar de pontuação de anomalia 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 de 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 resolver o desafio JS. Após o cálculo bem-sucedido, o cliente recebe o cookie de validade.
  • JS Challenge e JSChallengePass: Aprovado devido à 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 WAF do Azure valida o cookie e prossegue processando as regras restantes sem gerar outro desafio JS.
  • JS Challenge e JSChallengeValid: Registado/permitido 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.
IP do Cliente 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).
Anfitrião O Host cabeçalho da solicitação.
Política O nome da política WAF que processou a solicitação.
Modo de Gestão de Políticas Modo de operações da política WAF. Os valores possíveis são Prevention e Detection.
SolicitaçãoURI URI completo da solicitação.
Nome da Regra O nome da regra WAF que correspondeu ao pedido.
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óximo passo

Saiba mais sobre o Azure Front Door.