Segurança de WAF e Bastion
LidoEsta aula aborda a segurança de WAF (Web Application Firewall) e Bastion Host, cobrindo proteção, logging, controle de acesso e revisão. Você aprenderá boas práticas, conceitos avançados e exercícios práticos para implementar defesas robustas em infraestruturas web.
Nesta aula, vamos explorar dois componentes críticos da segurança de infraestrutura: o WAF (Web Application Firewall) e o Bastion Host. O WAF protege aplicações web contra ataques como SQL Injection, XSS e outras ameaças na camada de aplicação, enquanto o Bastion Host atua como um ponto de entrada seguro para acesso administrativo a redes internas. Ambos são essenciais em uma estratégia de defesa em profundidade.
Vamos mergulhar em quatro pilares fundamentais: proteção, logging, controle de acesso e revisão contínua. Você aprenderá como configurá-los, monitorá-los e mantê-los atualizados para garantir que sua infraestrutura esteja segura contra ameaças atuais.
Protection
A proteção com WAF envolve a inspeção e filtragem do tráfego HTTP/HTTPS para bloquear requisições maliciosas antes que cheguem à aplicação. Regras personalizadas, assinaturas de ataques conhecidos e aprendizado de máquina são algumas das técnicas usadas. Já o Bastion Host protege o acesso à rede interna, centralizando conexões SSH/RDP e aplicando autenticação forte.
Para o WAF, é crucial configurar regras específicas para os vetores de ataque mais comuns do OWASP Top 10. Por exemplo, você pode bloquear padrões de SQL Injection com expressões regulares. No Bastion, você deve restringir o acesso apenas a administradores autorizados, usando chaves SSH, MFA e listas de controle de acesso.
# Exemplo de regra WAF (simplificado, usando ModSecurity)
SecRule ARGS "(?i:union.*select)" \
"id:1001, phase:2, deny, status:403, \
msg:'SQL Injection Attempt'"Logging
Logging é o registro detalhado de eventos de segurança. Para WAF, os logs devem capturar todas as requisições bloqueadas, incluindo IP de origem, payload e regra acionada. Para o Bastion, os logs devem registrar todas as sessões de acesso, comandos executados e tentativas falhas. Esses logs são essenciais para auditoria e resposta a incidentes.
É recomendável centralizar os logs em um SIEM (Security Information and Event Management) para correlação e alertas em tempo real. Além disso, proteja os logs contra adulteração, usando assinatura digital ou armazenamento imutável.
# Exemplo de configuração de log para Nginx (WAF)
log_format waf_log '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'rule_id=$upstream_http_x_modsecurity_rule_id';
access_log /var/log/nginx/waf.log waf_log;Access control
O controle de acesso define quem pode acessar os recursos e sob quais condições. Para o WAF, você pode criar regras de geolocalização, bloqueio por IP ou exigir autenticação adicional para áreas sensíveis. Para o Bastion, o controle de acesso é implementado com autenticação multifator (MFA), gerenciamento de chaves SSH e políticas de autorização baseadas em papéis (RBAC).
Uma prática comum é usar um Bastion como jump host, onde os administradores primeiro se conectam ao Bastion e de lá acessam outros servidores. Isso permite monitorar e controlar todas as sessões. Além disso, integre com um provedor de identidade (IdP) para SSO.
# Exemplo de configuração de acesso SSH no Bastion
# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
# Restringir usuários a comandos específicos (via authorized_keys)
command="/usr/bin/sudo /usr/sbin/nginx -t",no-pty ssh-rsa AAAAB3Nza... user@hostReview
A revisão periódica é vital para manter a segurança. Isso inclui analisar logs, testar regras do WAF, verificar se o Bastion está atualizado e revisar as permissões de acesso. Realize auditorias regulares e simulações de ataques para avaliar a eficácia das defesas.
Ferramentas como OWASP ZAP podem ser usadas para testar o WAF. Para o Bastion, revise as chaves SSH e remova as que não estão mais em uso. Mantenha um cronograma de revisão e documente as mudanças.
# Script simples para revisar logs do Bastion
grep "Failed password" /var/log/auth.log | awk '{print $1, $2, $3, $11}' | sort | uniq -c | sort -nr | head -20Boas Práticas
Algumas boas práticas incluem: sempre usar HTTPS no WAF, manter as regras atualizadas com as últimas vulnerabilidades, utilizar o Bastion como único ponto de entrada para administração, nunca expor o Bastion diretamente à internet sem proteção adicional (como um firewall), e implementar monitoramento contínuo para detectar anomalias.
Além disso, automatize a aplicação de patches e a rotação de chaves, e faça backup das configurações. Lembre-se de que a segurança é um processo contínuo, não um estado estático.
Exercícios
- Explique a diferença entre WAF e IPS tradicional. Como eles se complementam?
- Cite três tipos de ataques que um WAF pode bloquear e dê um exemplo de regra para cada.
- Descreva como configurar um Bastion Host com MFA e liste os passos para acessar um servidor interno através dele.
- Qual a importância de centralizar logs do WAF e Bastion em um SIEM? Cite duas vantagens.
- Proponha um cronograma de revisão para um ambiente com WAF e Bastion, incluindo ferramentas e métricas.
SecRule ARGS "(?i:union.*select)" "id:1001,phase:2,deny,status:403,msg:'SQLi'"
SecRule ARGS "<script>" "id:1002,phase:2,deny,status:403,msg:'XSS'"
SecRule REQUEST_URI "\.\./" "id:1003,phase:1,deny,status:403,msg:'Path Traversal'"