Azure Firewall de Aplicações Web monitorização e exploração madeireira

A monitorização e registo de Firewall de Aplicações Web Azure (WAF) são fornecidos através da exploração e integração com registos Azure Monitor e Azure Monitor.

Azure Monitor

O registo WAF da porta da frente está integrado com o Azure Monitor. O Azure Monitor permite-lhe rastrear informações de diagnóstico, incluindo alertas e registos waf. Pode configurar a monitorização da WAF dentro do recurso Front Door no portal no separador Diagnóstico, através da infraestrutura à medida que o código se aproxima, ou utilizando diretamente o serviço Azure Monitor.

A partir de portal do Azure, vá para o tipo de recurso Front Door. A partir do separadorMétricasde Monitorização/ à esquerda, pode adicionar WebApplicationFirewallRequestCount para rastrear o número de pedidos que correspondem às regras da WAF. Os filtros personalizados podem ser criados com base em tipos de ação e nomes de regras.

WAFMetrics

Registos e diagnósticos

A WAF com Porta Frontal fornece relatórios detalhados sobre cada pedido, e cada ameaça que deteta. O registo madeireira está integrado com os registos e alertas de diagnóstico da Azure. Estes registos podem ser integrados com registos do Azure Monitor.

WAFDiag

Se o registo está ativado e uma regra WAF é desencadeada, quaisquer padrões de correspondência são registados em texto simples para ajudá-lo a analisar e depurar o comportamento da política da WAF. Pode utilizar exclusões para afinar regras e excluir quaisquer dados que pretenda ser excluídos dos registos. Para obter mais informações, consulte as listas de exclusão de firewall de aplicações web na Porta frontal Azure.

A Porta frontal fornece dois tipos de registos: registos de acesso e registos WAF.

Registos de acesso

O FrontDoorAccessLog inclui todos os pedidos que passam pela Porta da Frente. Para obter mais informações sobre o registo de acesso à porta da frente, incluindo o esquema de registo, consulte os registos da Porta Frontal Azure.

O FrontdoorAccessLog inclui todos os pedidos que passam pela Porta da Frente. Para obter mais informações sobre o registo de acesso da porta frontal, incluindo o esquema de registo, consulte métricas de monitorização e registos na Porta frontal Azure (clássica).

A seguinte consulta de exemplo devolve as entradas de registo de acesso:

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorAccessLog"
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorAccessLog"

O seguinte mostra uma entrada de registo de exemplo:

{
  "time": "2020-06-09T22:32:17.8383427Z",
  "category": "FrontDoorAccessLog",
  "operationName": "Microsoft.Cdn/Profiles/AccessLog/Write",
  "properties": {
    "trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
    "httpMethod": "GET",
    "httpVersion": "2.0",
    "requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
    "requestBytes": "715",
    "responseBytes": "380",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4157.0 Safari/537.36 Edg/85.0.531.1",
    "clientIp": "xxx.xxx.xxx.xxx",
    "socketIp": "xxx.xxx.xxx.xxx",
    "clientPort": "52097",
    "timeTaken": "0.003",
    "securityProtocol": "TLS 1.2",
    "routingRuleName": "WAFdemoWebAppRouting",
    "rulesEngineMatchNames": [],
    "backendHostname": "wafdemowebappuscentral.azurewebsites.net:443",
    "sentToOriginShield": false,
    "httpStatusCode": "403",
    "httpStatusDetails": "403",
    "pop": "SJC",
    "cacheStatus": "CONFIG_NOCACHE"
  }
}
{
  "time": "2020-06-09T22:32:17.8383427Z",
  "category": "FrontdoorAccessLog",
  "operationName": "Microsoft.Network/FrontDoor/AccessLog/Write",
  "properties": {
    "trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
    "httpMethod": "GET",
    "httpVersion": "2.0",
    "requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
    "requestBytes": "715",
    "responseBytes": "380",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4157.0 Safari/537.36 Edg/85.0.531.1",
    "clientIp": "xxx.xxx.xxx.xxx",
    "socketIp": "xxx.xxx.xxx.xxx",
    "clientPort": "52097",
    "timeTaken": "0.003",
    "securityProtocol": "TLS 1.2",
    "routingRuleName": "WAFdemoWebAppRouting",
    "rulesEngineMatchNames": [],
    "backendHostname": "wafdemowebappuscentral.azurewebsites.net:443",
    "sentToOriginShield": false,
    "httpStatusCode": "403",
    "httpStatusDetails": "403",
    "pop": "SJC",
    "cacheStatus": "CONFIG_NOCACHE"
  }
}

Troncos WAF

O FrontDoorWebApplicationFirewallLog inclui pedidos que correspondem a uma regra WAF.

O FrontdoorWebApplicationFirewallLog inclui qualquer pedido que corresponda a uma regra WAF.

A tabela a seguir mostra os valores registados para cada pedido:

Propriedade Descrição
Ação Medidas tomadas no pedido. Os registos incluem pedidos com todas as ações. As métricas incluem pedidos com todas as ações, exceto Log.
ClientIP O endereço IP do cliente que fez o pedido. Se houve um X-Forwarded-For cabeçalho no pedido, o endereço IP do cliente é retirado desse campo de cabeçalho.
ClientPort A porta IP do cliente que fez o pedido.
Detalhes Detalhes adicionais sobre o pedido, incluindo quaisquer ameaças que foram detetadas.
nome matchVariableName: HTTP nome do parâmetro do pedido corresponde, por exemplo, a nomes de cabeçalho (até 100 caracteres no máximo).
matchVariableValue: Valores que desencadearam a partida (até 100 caracteres no máximo).
Anfitrião O Host cabeçalho do pedido.
Política O nome da política da WAF que processou o pedido.
PolicyMode Modo de operações da política da WAF. Os valores possíveis são Prevention e Detection.
RequestUri URI completo do pedido.
Nome de Regras O nome da regra da WAF que o pedido correspondia.
SocketIP O endereço IP de origem visto pela 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 pela Porta da Frente. Este valor é enviado ao cliente no cabeçalho de X-Azure-Ref resposta. Utilize este campo ao procurar um pedido específico no registo.

A seguinte consulta de exemplo mostra os pedidos que foram bloqueados pela PORTA frontal WAF:

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

O seguinte mostra uma entrada de registo de exemplo, incluindo a razão pela qual o pedido foi bloqueado:

{
  "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"
        }
      ]
    }
  }
}

Passos seguintes