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) ouPrevençã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:
- Assinatura Azure Ativa: Uma assinatura Azure para criar e gerenciar recursos.
- 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:
ColaboradorouAdministrador de Rede). - 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.
- 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
- Abra seu navegador e navegue até o portal do Azure:
https://portal.azure.com. - Faça login com uma conta que tenha as permissões necessárias.
- No campo de pesquisa superior, digite
Application Gatewaye selecione-o nos resultados. -
Clique em
+ Criar. -
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çãopara monitorar e ajustar as regras antes de ir paraPrevenção.
-
Clique em
Avançar: Frontends. -
Frontends:
- Tipo de endereço IP de frontend: Selecione
Público. - Endereço IP público: Clique em
+ Adicionar novoe dê um nome ao IP público (ex:pip-appgw-waf).
- Tipo de endereço IP de frontend: Selecione
-
Clique em
Avançar: Backends. -
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.4para uma VM na VNet, ou o FQDN de um App Service). - Clique em
Adicionar.
- Clique em
-
Clique em
Avançar: Configuração. -
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.
- Nome do ouvinte: Dê um nome (ex:
- 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.
- Nome da configuração de back-end: Dê um nome (ex:
- Tipo de destino: Selecione
- Clique em
Adicionarna regra de roteamento.
- Configurações de roteamento: Clique em
-
Clique em
Avançar: Marcas(Tags). - Clique em
Avançar: Revisar + criar. -
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.
- Explicação: Este processo cria um Application Gateway com um WAF associado. O WAF começará a inspecionar o tráfego no modo de
2. Configurando Regras WAF Gerenciadas e Personalizadas
Após a implantação, você pode ajustar a política WAF.
- No portal do Azure, navegue até o seu Application Gateway (
appgw-waf-01). - No painel de navegação esquerdo, em
Configurações, selecione Web Application Firewall. -
Clique no nome da sua política WAF (
wafpolicy-appgw-01). -
Modo de política: Na seção
Visão geral, você pode alterar oMododeDetecçãoparaPrevençãoquando estiver confiante de que suas regras não estão bloqueando tráfego legítimo. -
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) estejaAtivado. - 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.
-
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).
- Tipo de variável:
-
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.
-
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.
- No portal do Azure, navegue até o seu Application Gateway (
appgw-waf-01). - No painel de navegação esquerdo, em
Monitoramento, selecione Logs de diagnóstico. - Clique em
+ Adicionar configuração de diagnóstico. - Nome da configuração de diagnóstico: Dê um nome (ex:
diag-waf). - Categorias de log: Marque
ApplicationGatewayAccessLogeApplicationGatewayFirewallLog. - Detalhes do destino: Selecione
Enviar para o workspace do Log Analyticse escolha seu workspace. -
Clique em Salvar.
-
Após alguns minutos, navegue até o seu workspace do Log Analytics.
- No painel de navegação esquerdo, selecione Logs.
- 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
- Para ver todos os eventos do WAF:
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)
-
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>
- Exemplo de URL com tentativa de injeção de SQL (não execute em produção sem autorização):
-
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. -
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). -
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)
- Cenário: Tente acessar sua aplicação web a partir do endereço IP que você configurou na regra personalizada de bloqueio de IP.
- Ação Esperada: O acesso deve ser bloqueado, e o navegador deve exibir uma página de erro do WAF.
- 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çãoinicialmente. Monitore os logs cuidadosamente para identificar falsos positivos e ajustar as regras antes de mudar para o modo dePrevençã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çãoe não emDetecçã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.
- Verifique se o WAF está em modo de
- 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çãotemporariamente 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