Share via


Registos de recursos do Azure Firewall de Aplicações Web

Pode monitorizar Firewall de Aplicações Web recursos através de registos. Pode guardar o desempenho, o acesso e outros dados ou consumi-lo a partir de um recurso para fins de monitorização.

Nota

Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Registos de diagnósticos

Pode utilizar diferentes tipos de registos no Azure para gerir e resolver problemas de gateways de aplicação. Pode aceder a alguns destes registos através do portal. Todos os registos podem ser extraídos do armazenamento de Blobs do Azure e visualizados em diferentes ferramentas, como os registos do Azure Monitor, o Excel e o Power BI. Pode saber mais sobre os diferentes tipos de registos na seguinte lista:

  • Registo de atividades: pode utilizar os registos de atividades do Azure para ver todas as operações submetidas para a sua subscrição do Azure e o respetivo estado. As entradas de registos de atividades são recolhidas por predefinição e pode visualizá-las no portal do Azure.
  • Registo de recursos do Access: pode utilizar este registo para ver Gateway de Aplicação padrões de acesso e analisar informações importantes. Isto inclui o IP do autor da chamada, o URL pedido, a latência de resposta, o código de retorno e os bytes para dentro e para fora. Este registo contém registos individuais para cada pedido e associa esse pedido ao Gateway de Aplicação exclusivo que processou o pedido. As instâncias Gateway de Aplicação exclusivas podem ser identificadas pelo instanceId da propriedade.
  • Registo de Recursos de Desempenho: pode utilizar este registo para ver o desempenho Gateway de Aplicação instâncias. Este registo captura informações de desempenho para cada instância, incluindo o total de pedidos servidos, débito em bytes, total de pedidos servidos, contagem de pedidos falhados e contagem de instâncias de back-end em bom estado de funcionamento e em mau estado de funcionamento. É recolhido um registo de desempenho a cada 60 segundos. O Registo de desempenho está disponível apenas para o SKU v1. Para o SKU v2, utilize Métricas para dados de desempenho.
  • Registo de Recursos da Firewall: pode utilizar este registo para ver os pedidos registados através do modo de deteção ou prevenção de um gateway de aplicação configurado com a firewall de aplicações Web.

Nota

Os registos só estão disponíveis para recursos implementados no modelo de implementação do Azure Resource Manager. Não pode utilizar registos para recursos no modelo de implementação clássica. Para compreender melhor os dois modelos, veja o artigo Understanding Resource Manager deployment and classic deployment (Compreender Resource Manager implementação e implementação clássica).

Tem três opções para armazenar os registos:

  • Conta de armazenamento: as contas de armazenamento são ideais para os registos quando estes são armazenados durante um período mais longo e revistos quando necessário.
  • Hubs de eventos: os hubs de eventos são uma ótima opção para integrar com outras ferramentas de gestão de informações e eventos de segurança (SIEM) para obter alertas sobre os seus recursos.
  • Registos do Azure Monitor: os registos do Azure Monitor são mais utilizados para monitorização geral em tempo real da sua aplicação ou para analisar tendências.

Ativar o registo através do PowerShell

O registo de atividades é ativado automaticamente para todos os recursos do Resource Manager. Tem de ativar o registo de acesso e desempenho para começar a recolher os dados disponíveis através desses registos. Para ativar o registo, utilize os seguintes passos:

  1. Anote o ID de recurso da conta de armazenamento, onde os dados de registo são armazenados. Este valor é do formulário: /subscriptions/<subscriptionId>/resourceGroups/<nome do grupo de recursos>/providers/Microsoft.Storage/storageAccounts/<nome da conta de armazenamento>. Pode utilizar qualquer conta de armazenamento na sua subscrição. Pode utilizar o portal do Azure para encontrar estas informações.

    Portal: ID do recurso para a conta de armazenamento

  2. Tenha em atenção o ID de recurso do gateway de aplicação para o qual o registo está ativado. Este valor é do formulário: /subscriptions/subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<application gateway name>.< Pode utilizar o portal para encontrar estas informações.

    Portal: ID do recurso para o gateway de aplicação

  3. Ative o registo de recursos com o seguinte cmdlet do PowerShell:

    Set-AzDiagnosticSetting  -ResourceId /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<application gateway name> -StorageAccountId /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Storage/storageAccounts/<storage account name> -Enabled $true     
    

Dica

Os registos de atividades não necessitam de uma conta de armazenamento separada. A utilização do armazenamento para registo do acesso e do desempenho incorre em encargos de serviços.

Ativar o registo através do portal do Azure

  1. Na portal do Azure, localize o recurso e selecione Definições de diagnóstico.

    Para Gateway de Aplicação, estão disponíveis três registos:

    • Registo de acesso
    • Registo de desempenho
    • Registo da firewall
  2. Selecione Adicionar definição de diagnóstico.

  3. A página Definição de diagnóstico fornece as definições para os registos de recursos. Neste exemplo, o Log Analytics armazena os registos. Também pode utilizar um hub de eventos, uma conta de armazenamento ou uma solução de parceiro para guardar os registos de recursos.

    Captura de ecrã a mostrar as Definições de diagnóstico.

  4. Escreva um nome para as definições, confirme as definições e selecione Guardar.

Registo de atividades

O Azure gera o registo de atividades por predefinição. Os registos são preservados durante 90 dias no arquivo de registos de eventos do Azure. Saiba mais sobre estes registos ao ler o artigo Ver eventos e registo de atividades .

Registo de acesso

O registo de acesso só é gerado se o tiver ativado em cada instância Gateway de Aplicação, conforme detalhado nos passos anteriores. Os dados são armazenados na conta de armazenamento que especificou quando ativou o registo. Cada acesso de Gateway de Aplicação é registado no formato JSON, conforme mostrado no exemplo seguinte para v1:

Valor Descrição
instanceId Gateway de Aplicação instância que serviu o pedido.
clientIP IP de origem para o pedido.
clientPort Porta de origem para o pedido.
httpMethod Método HTTP utilizado pelo pedido.
requestUri URI do pedido recebido.
RequestQuery Server-Routed: instância do conjunto de back-end que foi enviada o pedido.
X-AzureApplicationGateway-LOG-ID: ID de Correlação utilizado para o pedido. Pode ser utilizado para resolver problemas de tráfego nos servidores de back-end.
SERVER-STATUS: código de resposta HTTP que Gateway de Aplicação recebido do back-end.
UserAgent Agente de utilizador do cabeçalho do pedido HTTP.
httpStatus Código de estado HTTP devolvido ao cliente a partir de Gateway de Aplicação.
httpVersion Versão HTTP do pedido.
receivedBytes Tamanho do pacote recebido, em bytes.
sentBytes Tamanho do pacote enviado, em bytes.
timeTaken Período de tempo (em milissegundos) que demora a processar um pedido e a respetiva resposta a ser enviada. Isto é calculado como o intervalo desde o momento em que Gateway de Aplicação recebe o primeiro byte de um pedido HTTP até ao momento em que a operação de envio de resposta é concluída. É importante ter em atenção que o campo Time-Taken geralmente inclui o tempo durante o qual os pacotes de pedidos e respostas estão a passar pela rede.
sslEnabled Se a comunicação com os conjuntos de back-end utilizou o TLS/SSL. Os valores válidos estão ativados e desativados.
anfitrião O nome do anfitrião com o qual o pedido foi enviado para o servidor de back-end. Se o nome do anfitrião de back-end estiver a ser substituído, este nome irá refletir isso.
originalHost O nome do anfitrião com o qual o pedido foi recebido pelo Gateway de Aplicação do cliente.
{
    "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/PEERINGTEST/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
    "operationName": "ApplicationGatewayAccess",
    "timestamp": "2017-04-26T19:27:38Z",
    "category": "ApplicationGatewayAccessLog",
    "properties": {
        "instanceId": "ApplicationGatewayRole_IN_0",
        "clientIP": "191.96.249.97",
        "clientPort": 46886,
        "httpMethod": "GET",
        "requestUri": "/phpmyadmin/scripts/setup.php",
        "requestQuery": "X-AzureApplicationGateway-CACHE-HIT=0&SERVER-ROUTED=10.4.0.4&X-AzureApplicationGateway-LOG-ID=874f1f0f-6807-41c9-b7bc-f3cfa74aa0b1&SERVER-STATUS=404",
        "userAgent": "-",
        "httpStatus": 404,
        "httpVersion": "HTTP/1.0",
        "receivedBytes": 65,
        "sentBytes": 553,
        "timeTaken": 205,
        "sslEnabled": "off",
        "host": "www.contoso.com",
        "originalHost": "www.contoso.com"
    }
}

Para Gateway de Aplicação e WAF v2, os registos mostram um pouco mais de informações:

Valor Descrição
instanceId Gateway de Aplicação instância que serviu o pedido.
clientIP IP de origem para o pedido.
clientPort Porta de origem para o pedido.
httpMethod Método HTTP utilizado pelo pedido.
requestUri URI do pedido recebido.
UserAgent Agente de utilizador do cabeçalho do pedido HTTP.
httpStatus Código de estado HTTP devolvido ao cliente a partir de Gateway de Aplicação.
httpVersion Versão HTTP do pedido.
receivedBytes Tamanho do pacote recebido, em bytes.
sentBytes Tamanho do pacote enviado, em bytes.
timeTaken Período de tempo (em milissegundos) que demora a processar um pedido e a respetiva resposta a ser enviada. Isto é calculado como o intervalo desde o momento em que Gateway de Aplicação recebe o primeiro byte de um pedido HTTP até ao momento em que a operação de envio de resposta é concluída. É importante ter em atenção que o campo Time-Taken geralmente inclui o tempo durante o qual os pacotes de pedidos e respostas estão a passar pela rede.
sslEnabled Se a comunicação com os conjuntos de back-end utilizou o TLS. Os valores válidos estão ativados e desativados.
sslCipher Conjunto de cifras a ser utilizado para comunicação TLS (se o TLS estiver ativado).
sslProtocol Protocolo TLS a ser utilizado (se o TLS estiver ativado).
serverRouted O servidor de back-end para o qual o gateway de aplicação encaminha o pedido.
serverStatus Código de estado HTTP do servidor de back-end.
serverResponseLatency Latência da resposta do servidor de back-end.
anfitrião Endereço listado no cabeçalho do anfitrião do pedido.
{
    "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/PEERINGTEST/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
    "operationName": "ApplicationGatewayAccess",
    "time": "2017-04-26T19:27:38Z",
    "category": "ApplicationGatewayAccessLog",
    "properties": {
        "instanceId": "appgw_1",
        "clientIP": "191.96.249.97",
        "clientPort": 46886,
        "httpMethod": "GET",
        "requestUri": "/phpmyadmin/scripts/setup.php",
        "userAgent": "-",
        "httpStatus": 404,
        "httpVersion": "HTTP/1.0",
        "receivedBytes": 65,
        "sentBytes": 553,
        "timeTaken": 205,
        "sslEnabled": "off",
        "sslCipher": "",
        "sslProtocol": "",
        "serverRouted": "104.41.114.59:80",
        "serverStatus": "200",
        "serverResponseLatency": "0.023",
        "host": "www.contoso.com",
    }
}

Registo de desempenho

O registo de desempenho só é gerado se o tiver ativado em cada instância Gateway de Aplicação, conforme detalhado nos passos anteriores. Os dados são armazenados na conta de armazenamento que especificou quando ativou o registo. Os dados do registo de desempenho são gerados em intervalos de 1 minuto. Está disponível apenas para o SKU v1. Para o SKU v2, utilize Métricas para dados de desempenho. São registados os seguintes dados:

Valor Descrição
instanceId Gateway de Aplicação instância para a qual os dados de desempenho estão a ser gerados. Para um gateway de aplicação de várias instâncias, existe uma linha por instância.
healthyHostCount Número de anfitriões em bom estado de funcionamento no conjunto de back-end.
unHealthyHostCount Número de anfitriões em mau estado de funcionamento no conjunto de back-end.
requestCount Número de pedidos servidos.
Latência Latência média (em milissegundos) de pedidos da instância para o back-end que serve os pedidos.
failedRequestCount Número de pedidos falhados.
de transferência de dados Débito médio desde o último registo, medido em bytes por segundo.
{
    "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
    "operationName": "ApplicationGatewayPerformance",
    "time": "2016-04-09T00:00:00Z",
    "category": "ApplicationGatewayPerformanceLog",
    "properties":
    {
        "instanceId":"ApplicationGatewayRole_IN_1",
        "healthyHostCount":"4",
        "unHealthyHostCount":"0",
        "requestCount":"185",
        "latency":"0",
        "failedRequestCount":"0",
        "throughput":"119427"
    }
}

Nota

A latência é calculada a partir do momento em que o primeiro byte do pedido HTTP é recebido até ao momento em que o último byte da resposta HTTP é enviado. É a soma do tempo de processamento Gateway de Aplicação mais o custo de rede para o back-end, além do tempo que o back-end demora a processar o pedido.

Registo da firewall

O registo da firewall só é gerado se o tiver ativado para cada gateway de aplicação, conforme detalhado nos passos anteriores. Este registo também requer que a firewall de aplicações Web esteja configurada num gateway de aplicação. Os dados são armazenados no destino que especificou quando ativou o registo. São registados os seguintes dados:

Valor Descrição
instanceId Gateway de Aplicação instância para a qual os dados da firewall estão a ser gerados. Para um gateway de aplicação de várias instâncias, existe uma linha por instância.
clientIp IP de origem para o pedido.
clientPort Porta de origem para o pedido.
requestUri URL do pedido recebido.
ruleSetType Tipo de conjunto de regras. O valor disponível é OWASP.
ruleSetVersion Versão do conjunto de regras utilizada. Os valores disponíveis são 2.2.9 e 3.0.
ruleId ID da regra do evento de acionamento.
message Mensagem amigável para o evento de acionamento. São fornecidos mais detalhes na secção de detalhes.
action Modo de Política: Deteção
- Detetada – esta é a única ação para a WAF quando está no modo de deteção. Todas as condições para uma determinada regra foram correspondidas e o pedido foi registado e, em seguida, passado para o back-end.

Modo de Política: Prevenção
- Permitida – todas as condições foram correspondidas para uma determinada regra e o pedido foi transmitido para o back-end.
- Bloqueado – todas as condições foram correspondidas a uma determinada regra e o pedido foi bloqueado.
- Correspondida – uma/mais condições foram correspondidas para uma determinada regra, mas a decisão de bloquear ou passar o pedido precisará de uma avaliação adicional e será avaliada com base na regra final de classificação de anomalias.
site Site para o qual o registo foi gerado. Atualmente, apenas Global está listado porque as regras são globais.
detalhes Detalhes do evento de acionamento.
details.message Descrição da regra.
details.data Dados específicos encontrados no pedido que correspondem à regra.
details.file Ficheiro de configuração que continha a regra.
details.line Número de linha no ficheiro de configuração que acionou o evento.
Nome do anfitrião Nome do anfitrião ou endereço IP do Gateway de Aplicação.
transactionId ID exclusivo de uma determinada transação que ajuda a agrupar várias violações de regras que ocorreram no mesmo pedido.
policyId ID exclusivo da Política de Firewall associada à Gateway de Aplicação, Serviço de Escuta ou Caminho.
policyScope A localização da política – os valores podem ser "Global", "Serviço de Escuta" ou "Localização".
policyScopeName O nome do objeto onde a política é aplicada.
{
  "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
  "operationName": "ApplicationGatewayFirewall",
  "time": "2017-03-20T15:52:09.1494499Z",
  "category": "ApplicationGatewayFirewallLog",
  "properties": {
      "instanceId": "ApplicationGatewayRole_IN_0",
      "clientIp": "52.161.109.147",
      "clientPort": "0",
      "requestUri": "/",
      "ruleSetType": "OWASP",
      "ruleSetVersion": "3.0",
      "ruleId": "920350",
      "ruleGroup": "920-PROTOCOL-ENFORCEMENT",
      "message": "Host header is a numeric IP address",
      "action": "Matched",
      "site": "Global",
      "details": {
        "message": "Warning. Pattern match \"^[\\\\d.:]+$\" at REQUEST_HEADERS:Host ....",
        "data": "127.0.0.1",
        "file": "rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf",
        "line": "791"
      },
      "hostname": "127.0.0.1",
      "transactionId": "16861477007022634343",
      "policyId": "/subscriptions/1496a758-b2ff-43ef-b738-8e9eb5161a86/resourceGroups/drewRG/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/perListener",
      "policyScope": "Listener",
      "policyScopeName": "httpListener1"
    }
  }
}

Ver e analisar o registo de atividades

Pode ver e analisar os dados de registo de atividades através de um dos seguintes métodos:

  • Ferramentas do Azure: recuperar informações de registo de atividades através do Azure PowerShell, a CLI do Azure, a API REST do Azure ou o portal do Azure. As instruções passo-a-passo para cada método estão detalhadas no artigo Operações de atividades com o Resource Manager.
  • Power BI: se ainda não tiver uma conta do Power BI, pode experimentá-lo gratuitamente. Ao utilizar as aplicações de modelo do Power BI, pode analisar os seus dados.

Ver e analisar os registos de acesso, desempenho e firewall

Os registos do Azure Monitor podem recolher os ficheiros de registo de contadores e eventos da sua conta de armazenamento de Blobs. Inclui visualizações e capacidades de pesquisa poderosas para analisar os seus registos.

Também pode ligar à sua conta de armazenamento e obter as entradas de registo JSON para os registos de acesso e desempenho. Depois de transferir os ficheiros JSON, pode convertê-los em CSV e visualizá-los no Excel, Power BI ou qualquer outra ferramenta de visualização de dados.

Dica

Se estiver familiarizado com os conceitos básicos do Visual Studio para alterar os valores de constantes e variáveis em C#, pode utilizar as ferramentas de conversor de registo disponíveis no GitHub.

Analisar registos do Access através do GoAccess

Publicámos um modelo de Resource Manager que instala e executa o popular analisador de registos goAccess para Gateway de Aplicação Registos de Acesso. O GoAccess fornece estatísticas de tráfego HTTP valiosas, tais como Visitantes Exclusivos, Ficheiros Pedidos, Anfitriões, Sistemas Operativos, Browsers, códigos de Estado HTTP e muito mais. Para obter mais detalhes, veja o ficheiro Readme na pasta Resource Manager modelo no GitHub.

Passos seguintes