Protegendo Aplicações Web com o Azure Web Application Firewall (WAF)

Protegendo Aplicações Web com o Azure Web Application Firewall (WAF)

14/01/2025

Este artigo técnico e educativo tem como objetivo guiar analistas de segurança, administradores de TI e engenheiros de sistemas na implementação e configuração do Azure Web Application Firewall (WAF) para proteger aplicações web contra ataques comuns. Em um cenário digital onde as aplicações web são a porta de entrada para muitos negócios, elas se tornaram alvos frequentes de uma variedade de ataques cibernéticos, como injeção de SQL, cross-site scripting (XSS) e outras vulnerabilidades do OWASP Top 10. O Azure WAF oferece uma camada de proteção essencial para mitigar esses riscos, garantindo a disponibilidade, integridade e confidencialidade dos dados [1].

Introdução

As aplicações web são componentes críticos da infraestrutura de TI de praticamente todas as organizações. No entanto, sua exposição à internet as torna vulneráveis a ataques que podem comprometer dados, interromper serviços e prejudicar a reputação da empresa. Um Web Application Firewall (WAF) atua como um proxy reverso, inspecionando o tráfego HTTP/HTTPS que chega e sai da aplicação web, identificando e bloqueando requisições maliciosas antes que elas atinjam o servidor da aplicação. O Azure WAF, disponível como um recurso do Azure Application Gateway ou do Azure Front Door, oferece proteção centralizada e escalável para suas aplicações web hospedadas no Azure ou até mesmo em ambientes híbridos [2].

Este guia prático abordará os conceitos fundamentais do Azure WAF, seus modos de operação (Detecção e Prevenção), a configuração de políticas WAF com conjuntos de regras gerenciadas (OWASP Core Rule Set - CRS) e regras personalizadas. Serão fornecidas instruções passo a passo para implantar o WAF com o Azure Application Gateway, testar sua eficácia contra ataques comuns e validar os resultados, além de discutir melhores práticas e dicas de troubleshooting. O objetivo é capacitar o leitor a configurar e gerenciar o Azure WAF de forma autônoma, profissional e confiável, protegendo suas aplicações web contra as ameaças mais prevalentes.

Por que o Azure WAF é crucial para a proteção de aplicações web?

  • Proteção Abrangente: Defende contra ataques web comuns, incluindo injeção de SQL, cross-site scripting (XSS), inclusão de arquivos, ataques de bot e outras vulnerabilidades do OWASP Top 10 [3].
  • Regras Gerenciadas: Utiliza conjuntos de regras gerenciadas (como o OWASP CRS) que são atualizadas automaticamente pela Microsoft, garantindo proteção contra as últimas ameaças sem intervenção manual.
  • Regras Personalizadas: Permite a criação de regras personalizadas para atender a requisitos de segurança específicos da aplicação, bloqueando padrões de tráfego específicos ou protegendo contra vulnerabilidades não cobertas pelas regras gerenciadas.
  • Modos de Operação Flexíveis: Opera em modo de Detecção (apenas monitora e registra ataques) ou Prevenção (bloqueia ativamente ataques), permitindo um controle gradual da implementação.
  • Integração Nativa com Azure: Integra-se perfeitamente com o Azure Application Gateway (para aplicações internas) e o Azure Front Door (para aplicações globais), oferecendo uma solução de entrega de aplicações completa com segurança embarcada.
  • Escalabilidade e Alta Disponibilidade: Beneficia-se da escalabilidade e alta disponibilidade dos serviços de entrega de aplicações do Azure, garantindo que a proteção seja sempre ativa e performática.
  • Conformidade: Ajuda as organizações a cumprir requisitos regulatórios e padrões de segurança que exigem proteção de aplicações web.

Pré-requisitos

Para implementar o Azure WAF, você precisará dos seguintes itens:

  1. Assinatura Azure Ativa: Uma assinatura Azure para criar e gerenciar recursos.
  2. Acesso Administrativo: Uma conta com as permissões necessárias para criar e gerenciar recursos como Application Gateways, Front Doors e políticas WAF (ex: Colaborador ou Administrador de Rede).
  3. Aplicação Web Existente: Uma aplicação web (hospedada no Azure ou em outro local) que você deseja proteger. Para este guia, assumiremos uma aplicação web simples que será acessada via Application Gateway.
  4. Rede Virtual (VNet) e Sub-redes: Uma rede virtual e sub-redes configuradas para o Application Gateway e para a aplicação web.

Passo a Passo: Implementando o Azure WAF com Application Gateway

Vamos configurar o Azure WAF para proteger uma aplicação web usando o Azure Application Gateway.

1. Criando um Azure Application Gateway com WAF

  1. Abra seu navegador e navegue até o portal do Azure: https://portal.azure.com.
  2. Faça login com uma conta que tenha as permissões necessárias.
  3. No campo de pesquisa superior, digite Application Gateway e selecione-o nos resultados.
  4. Clique em + Criar.

  5. Noções básicas:

    • Assinatura: Selecione sua assinatura.
    • Grupo de recursos: Crie um novo grupo de recursos (ex: rg-waf-appgw) ou selecione um existente.
    • Nome do Application Gateway: Dê um nome (ex: appgw-waf-01).
    • Região: Selecione a região.
    • Tier: Selecione Standard v2 (o WAF só está disponível no tier v2).
    • Habilitar o WAF: Selecione Sim.
    • Nome da política WAF: Dê um nome à política WAF (ex: wafpolicy-appgw-01).
    • Modo do WAF: Comece com Detecção para monitorar e ajustar as regras antes de ir para Prevenção.
  6. Clique em Avançar: Frontends.

  7. Frontends:

    • Tipo de endereço IP de frontend: Selecione Público.
    • Endereço IP público: Clique em + Adicionar novo e dê um nome ao IP público (ex: pip-appgw-waf).
  8. Clique em Avançar: Backends.

  9. Backends:

    • Clique em + Adicionar pool de back-ends.
    • Nome do pool de back-ends: Dê um nome (ex: app-backend-pool).
    • Adicionar pool de back-ends sem destinos: Selecione Não.
    • Tipo de destino: Selecione Endereço IP ou FQDN.
    • Endereço IP/FQDN: Insira o endereço IP ou FQDN da sua aplicação web (ex: 10.0.0.4 para uma VM na VNet, ou o FQDN de um App Service).
    • Clique em Adicionar.
  10. Clique em Avançar: Configuração.

  11. Configuração:

    • Configurações de roteamento: Clique em + Adicionar regra de roteamento.
    • Nome da regra: Dê um nome (ex: rule-http).
    • Prioridade: Deixe o padrão.
    • Ouvinte (Listener):
      • Nome do ouvinte: Dê um nome (ex: listener-http).
      • Endereço IP de frontend: Selecione o IP público criado.
      • Protocolo: Selecione HTTP (para começar, você pode adicionar HTTPS depois).
      • Porta: 80.
    • Destinos de back-end:
      • Tipo de destino: Selecione Pool de back-ends.
      • Pool de back-ends: Selecione app-backend-pool.
      • Configuração de back-end: Clique em + Adicionar novo.
        • Nome da configuração de back-end: Dê um nome (ex: http-setting).
        • Protocolo de back-end: HTTP.
        • Porta de back-end: 80 (ou a porta da sua aplicação web).
        • Usar investigação personalizada: Selecione Não (para este exemplo simples).
        • Clique em Adicionar.
    • Clique em Adicionar na regra de roteamento.
  12. Clique em Avançar: Marcas (Tags).

  13. Clique em Avançar: Revisar + criar.
  14. Revise as configurações e clique em Criar.

    • Explicação: Este processo cria um Application Gateway com um WAF associado. O WAF começará a inspecionar o tráfego no modo de Detecção.

2. Configurando Regras WAF Gerenciadas e Personalizadas

Após a implantação, você pode ajustar a política WAF.

  1. No portal do Azure, navegue até o seu Application Gateway (appgw-waf-01).
  2. No painel de navegação esquerdo, em Configurações, selecione Web Application Firewall.
  3. Clique no nome da sua política WAF (wafpolicy-appgw-01).

  4. Modo de política: Na seção Visão geral, você pode alterar o Modo de Detecção para Prevenção quando estiver confiante de que suas regras não estão bloqueando tráfego legítimo.

  5. Regras gerenciadas:

    • No painel de navegação esquerdo da política WAF, selecione Regras gerenciadas.
    • Certifique-se de que o Conjunto de regras padrão do OWASP (ex: OWASP_CRS/3.2) esteja Ativado.
    • Você pode desabilitar regras específicas dentro do conjunto gerenciado se elas causarem falsos positivos, mas faça isso com cautela e apenas após uma análise cuidadosa.
  6. Regras personalizadas:

    • No painel de navegação esquerdo da política WAF, selecione Regras personalizadas.
    • Clique em + Adicionar regra personalizada.
    • Nome da regra: Dê um nome (ex: BloquearIPMalicioso).
    • Prioridade: Defina uma prioridade (números menores têm prioridade maior).
    • Tipo de regra: Corresponder.
    • Condição:
      • Tipo de variável: RemoteAddress.
      • Operador: IPMatch.
      • Valor: Insira o endereço IP ou intervalo CIDR que você deseja bloquear (ex: 192.168.1.10/32).
    • Ação: Selecione Bloquear.

    • Explicação: Regras personalizadas permitem que você defina lógica de bloqueio baseada em critérios específicos, como endereços IP, cabeçalhos HTTP, strings de consulta, etc.

  7. Clique em Adicionar e depois em Salvar na política WAF.

3. Monitorando o WAF e Revisando Logs

O monitoramento é essencial para entender a eficácia do WAF e ajustar as políticas.

  1. No portal do Azure, navegue até o seu Application Gateway (appgw-waf-01).
  2. No painel de navegação esquerdo, em Monitoramento, selecione Logs de diagnóstico.
  3. Clique em + Adicionar configuração de diagnóstico.
  4. Nome da configuração de diagnóstico: Dê um nome (ex: diag-waf).
  5. Categorias de log: Marque ApplicationGatewayAccessLog e ApplicationGatewayFirewallLog.
  6. Detalhes do destino: Selecione Enviar para o workspace do Log Analytics e escolha seu workspace.
  7. Clique em Salvar.

  8. Após alguns minutos, navegue até o seu workspace do Log Analytics.

  9. No painel de navegação esquerdo, selecione Logs.
  10. Use consultas KQL (Kusto Query Language) para analisar os logs do WAF:
    • Para ver todos os eventos do WAF: kusto AzureDiagnostics | where ResourceProvider == "MICROSOFT.NETWORK" | where Category == "ApplicationGatewayFirewallLog" | project TimeGenerated, hostname_s, requestUri_s, Message, action_s, policy_s | order by TimeGenerated desc
    • Para ver ataques bloqueados (se o WAF estiver em modo de Prevenção): kusto AzureDiagnostics | where ResourceProvider == "MICROSOFT.NETWORK" | where Category == "ApplicationGatewayFirewallLog" | where action_s == "Blocked" | project TimeGenerated, hostname_s, requestUri_s, Message, ruleId_s | order by TimeGenerated desc

Validação e Teste

Testar o WAF é crucial para garantir que ele está bloqueando os ataques esperados e não está bloqueando tráfego legítimo (falsos positivos).

1. Testando Ataques Comuns (Injeção de SQL, XSS)

  1. Cenário: Tente acessar sua aplicação web através do Application Gateway (usando o IP público ou FQDN) e simule um ataque de injeção de SQL na URL ou em um parâmetro de formulário.

    • Exemplo de URL com tentativa de injeção de SQL (não execute em produção sem autorização): http://<seu_ip_publico_appgw>/index.php?id=1' OR '1'='1
    • Exemplo de URL com tentativa de XSS: http://<seu_ip_publico_appgw>/search?query=<script>alert('XSS')</script>
  2. Ação Esperada (Modo Detecção): Se o WAF estiver em modo de Detecção, a requisição deve ser permitida, mas os logs do WAF no Log Analytics devem registrar o ataque e a regra que o detectou.

  3. Ação Esperada (Modo Prevenção): Se o WAF estiver em modo de Prevenção, a requisição deve ser bloqueada, e o navegador deve exibir uma página de erro do WAF (geralmente um erro HTTP 403 Forbidden).

  4. Verificação: Verifique os logs do WAF no Log Analytics para confirmar que os ataques foram detectados (no modo Detecção) ou bloqueados (no modo Prevenção).

2. Testando Regras Personalizadas (Bloqueio de IP)

  1. Cenário: Tente acessar sua aplicação web a partir do endereço IP que você configurou na regra personalizada de bloqueio de IP.
  2. Ação Esperada: O acesso deve ser bloqueado, e o navegador deve exibir uma página de erro do WAF.
  3. Verificação: Verifique os logs do WAF no Log Analytics para confirmar que o IP foi bloqueado pela regra personalizada.

Dicas de Segurança e Melhores Práticas

  • Comece em Modo de Detecção: Sempre implante o WAF em modo de Detecção inicialmente. Monitore os logs cuidadosamente para identificar falsos positivos e ajustar as regras antes de mudar para o modo de Prevenção.
  • Tuning do WAF: O ajuste fino (tuning) é crucial. Desabilite regras específicas que geram falsos positivos (bloqueando tráfego legítimo) ou adicione regras de exclusão para parâmetros específicos. Evite desabilitar conjuntos de regras inteiros.
  • Regras Personalizadas: Use regras personalizadas para lidar com requisitos de segurança específicos da sua aplicação ou para mitigar vulnerabilidades recém-descobertas antes que as regras gerenciadas sejam atualizadas.
  • Atualizações do CRS: Mantenha o conjunto de regras gerenciadas (OWASP CRS) atualizado para garantir proteção contra as últimas ameaças. O Azure WAF geralmente atualiza automaticamente, mas verifique a versão.
  • Integração com Azure Front Door: Para aplicações web globais ou que exigem otimização de desempenho e roteamento avançado, considere implantar o WAF no Azure Front Door. Isso oferece proteção na borda da rede global da Microsoft.
  • Monitoramento e Alerta: Configure alertas no Azure Monitor para eventos de segurança do WAF, como ataques bloqueados ou anomalias. Integre os logs do WAF com seu SIEM (ex: Microsoft Sentinel) para uma visão centralizada.
  • Teste de Segurança Regular: Realize testes de penetração e varreduras de vulnerabilidade regularmente em suas aplicações web para identificar novas vulnerabilidades e validar a eficácia do WAF.
  • Princípio do Privilégio Mínimo: Garanta que apenas usuários autorizados tenham permissões para configurar e gerenciar as políticas do WAF.

Troubleshooting Comum

  • WAF não está bloqueando ataques esperados:
    • Verifique se o WAF está em modo de Prevenção e não em Detecção.
    • Verifique se o conjunto de regras gerenciadas (OWASP CRS) está ativado.
    • Analise os logs do WAF no Log Analytics para ver se o ataque foi detectado e qual regra foi acionada. Pode ser necessário ajustar a sensibilidade do CRS ou adicionar uma regra personalizada.
    • Certifique-se de que não há regras de exclusão ou listas de permissões que estejam permitindo o tráfego malicioso.
  • WAF está bloqueando tráfego legítimo (Falsos Positivos):
    • Comece analisando os logs do WAF no Log Analytics para identificar qual regra está bloqueando o tráfego legítimo.
    • Para a regra identificada, você pode:
      • Desabilitar a regra específica (último recurso).
      • Adicionar uma regra de exclusão para o parâmetro ou cabeçalho específico que está causando o falso positivo.
      • Ajustar o limiar de pontuação de anomalias (se estiver usando o CRS em modo de pontuação de anomalias).
    • Considere voltar ao modo de Detecção temporariamente para ajustar as regras.
  • Performance da aplicação degradada após habilitar WAF:
    • O WAF adiciona uma pequena latência devido à inspeção do tráfego. Certifique-se de que o Application Gateway ou Front Door está dimensionado adequadamente.
    • Verifique os logs de desempenho do Application Gateway no Azure Monitor.
  • WAF não está associado à aplicação correta:
    • Verifique se a política WAF está associada ao Application Gateway ou Front Door correto.
    • Certifique-se de que o tráfego para sua aplicação web está realmente passando pelo Application Gateway/Front Door com WAF habilitado.

Conclusão

O Azure Web Application Firewall (WAF) é uma defesa essencial para proteger aplicações web contra uma miríade de ataques cibernéticos. Ao fornecer uma camada de inspeção e filtragem de tráfego na borda da rede, o WAF atua como um escudo, protegendo contra vulnerabilidades conhecidas e ameaças de dia zero. A flexibilidade de usar conjuntos de regras gerenciadas e personalizadas, juntamente com a integração nativa com os serviços de entrega de aplicações do Azure, torna o Azure WAF uma solução robusta e escalável para qualquer organização. Com a implementação cuidadosa, o ajuste fino das políticas e o monitoramento contínuo, os profissionais de segurança podem garantir que suas aplicações web permaneçam seguras, disponíveis e em conformidade, fortalecendo a postura de segurança geral da organização contra o cenário de ameaças em constante evolução.


Referências:

[1] Microsoft Learn. O que é o Firewall de Aplicativo Web do Azure?. Disponível em: https://learn.microsoft.com/pt-br/azure/web-application-firewall/overview [2] Microsoft Learn. Firewall de Aplicativo Web (WAF) no Gateway de Aplicativo do Azure. Disponível em: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/ag-overview [3] OWASP Foundation. OWASP Top 10. Disponível em: https://owasp.org/www-project-top-ten/ [4] Microsoft Learn. Criar políticas de Firewall de Aplicativo Web (WAF) para o Gateway de Aplicativo do Azure. Disponível em: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/create-waf-policy-ag [5] Microsoft Learn. Regras e grupos de regras do CRS do WAF. Disponível em: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/application-gateway-waf-collection-rules [6] Microsoft Learn. Monitoramento e registro em log do WAF. Disponível em: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/waf-diagnostics