Como posso configurar o AWS WAF para proteger meus recursos de ataques comuns?
Quero usar o AWS WAF em meus recursos para me proteger contra ataques comuns.
Breve descrição
Para usar o AWS WAF em seus recursos para se proteger contra ataques comuns, realize uma ou mais das seguintes ações:
- Migre do AWS WAF Classic para o AWS WAF.
- Associe seu recurso a uma lista de controle de acesso à web (ACL da web) no AWS WAF.
- Analise solicitações recebidas para otimizar suas regras.
- Use o AWS Managed Rules para se proteger contra ataques comuns.
- Use a taxa de solicitações legítimas como base do AWS WAF.
- Use automações de segurança para o AWS WAF para evitar ataques comuns.
- Use declarações de regras de ataque de injeção de SQL e cross-site scripting (XSS).
- Restrinja o acesso do Amazon CloudFront.
- Proteja-se contra ataques de negação de serviço distribuída (DDoS).
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Migre do AWS WAF Classic para o AWS WAF
Se você usa o AWS WAF Classic, é uma prática recomendada migrar para o AWS WAF. Para obter mais informações, consulte Por que migrar para o AWS WAF?
Associe seu recurso a uma ACL da web
Primeiro, crie sua ACL da web no AWS WAF. Em seguida, associe seu recurso a essa ACL da web para permitir que o AWS WAF monitore as solicitações recebidas. Se não for possível integrar diretamente seu recurso ao AWS WAF, analise as alternativas a seguir. Para obter mais informações, consulte Recursos que é possível proteger com o AWS WAF.
Recursos que podem ser integrados ao AWS WAF
Para recursos que podem ser integrados ao AWS WAF, use uma das seguintes opções para integrar seus recursos:
- Para o console do AWS WAF, use a opção Recursos associados da AWS. Para mais informações, consulte Criar uma ACL da web.
- Para a AWS CLI, use o comando associate-web-acl.
- Para o CloudFront, use o comando update-distribution.
- Para o AWS Firewall Manager, use a política do Firewall Manager do AWS WAF.
- Para aplicações do AWS Amplify, associe diretamente a aplicação no console do Amplify ou do AWS WAF.
Recursos que não podem ser integrados ao AWS WAF
Para recursos que não podem ser integrados diretamente ao AWS WAF, use uma das seguintes opções para integrar seus recursos:
- Para instâncias do Amazon Elastic Compute Cloud (Amazon EC2), crie um Application Load Balancer ou distribuição do CloudFront. Em seguida, associe a distribuição a uma ACL da web.
- Para clusters do Amazon Elastic Kubernetes Service (Amazon EKS), crie um Application Load Balancer. Em seguida, associe o Application Load Balancer a uma ACL da web. Para obter mais informações, consulte Protegendo seus aplicativos web do Amazon EKS com o AWS WAF.
- Para Network Load Balancers, crie um Application Load Balancer. Em seguida, defina o Application Load Balancer como o destino do Network Load Balancer e associe o Application Load Balancer a uma ACL da web. Para obter mais informações, consulte Usar Application Load Balancers como destinos de um Network Load Balancer.
Analise solicitações recebidas para otimizar suas regras
Para proteger seus recursos, use os logs de aplicação, como os logs de acesso do Application Load Balancer ou do CloudFront, para determinar padrões de solicitação comuns.
Observação: é uma prática recomendada usar logs do AWS WAF para armazenar, consultar e analisar logs de solicitações HTTP.
Depois de determinar padrões de solicitação comuns, armazene seus logs no Amazon Simple Storage Service (Amazon S3) ou no Amazon CloudWatch. Para consultar os logs e identificar padrões, use o Amazon Athena ou o CloudWatch Logs Insights.
Por fim, crie uma regra do AWS WAF no modo de Contagem que verifique as solicitações recebidas e, em seguida, defina a regra para Bloquear:
- Crie uma declaração de regra NOT no cabeçalho do host para exemplo.com.
Observação: substitua exemplo.com pelo cabeçalho do seu host. - Defina Ação como Bloquear. O AWS WAF bloqueia solicitações que não têm o cabeçalho de host que você especifica.
Observação: essa regra também bloqueia solicitações para o nome de domínio totalmente qualificado (fully qualified domain name, FQDN) fornecido pelo AWS.
Os exemplos a seguir são padrões de solicitação comuns que é possível encontrar.
Solicitações de URIs que não existem
Para reconhecer esse padrão, você deve conhecer cada URI compatível em seu ambiente. Veja a seguir um exemplo de consulta do Athena nos logs do AWS WAF que conta as solicitações para cada URI:
SELECT COUNT("httprequest"."uri") AS URIcount, "httprequest"."uri" FROM waf_logs GROUP BY "httprequest"."uri" ORDER BY URIcount DESC
Veja a seguir um exemplo de consulta do CloudWatch nos logs do AWS WAF que conta as solicitações para cada URI:
fields httpRequest.uri | stats count(*) as requestCount by httpRequest.uri | sort requestCount desc
Solicitações que contêm diferentes valores de cabeçalho do host
Esse padrão inclui solicitações com um cabeçalho de host HTTP que seu servidor web não suporta. Esse padrão também inclui solicitações que contêm um endereço IP em vez do nome de domínio do seu site.
Veja a seguir um exemplo de consulta do Athena nos logs do AWS WAF que conta solicitações com diferentes valores de cabeçalho de host:
SELECT header.value as HostHeader, count(header) as count FROM waf_logs, UNNEST(httprequest.headers) AS x(header) WHERE "header"."name" = 'Host' GROUP BY header ORDER BY count DESC
Veja a seguir um exemplo de consulta do CloudWatch nos logs do AWS WAF que conta solicitações com diferentes valores de cabeçalho de host:
fields @timestamp, @message | parse @message '{"name":"Host","value":"*"}' as host | stats count(*) as requestCount by host | sort requestCount desc
Usar AWS Managed Rules para se proteger contra ataques comuns
Para usar o AWS Managed Rules, identifique padrões de solicitação e ataques comuns contra os quais você deseja se proteger. Em seguida, adicione os grupos de regras relevantes do AWS Managed Rules. Para se proteger contra tarefas especializadas, é possível usar os seguintes grupos de regras por um custo adicional:
- Grupo de regras prevenção contra fraude na criação de contas (ACFP) do AWS WAF Fraud Control
- Grupo de regras de prevenção contra apropriação de contas (ATP) do AWS WAF Fraud Control
- Grupo de regras de Controle de Bots do AWS WAF
Adicione os grupos de regras relevantes à sua ACL da web no modo Contagem. Em seguida, revise os logs do AWS WAF e as métricas do CloudWatch para determinar se a regra gerenciada corresponde a algum tráfego legítimo. Se a regra não corresponder ao tráfego legítimo, desative o modo Ativar Contagem para que o grupo de regras bloqueie o tráfego. Para desabilitar uma regra específica no AWS Managed Rule Group, escolha Substituir ação de regras para essa regra.
Observação: solicitações legítimas para seu ambiente podem iniciar o AWS Managed Rules. Para obter mais informações, consulte Como personalizar o comportamento do AWS Managed Rules para o AWS WAF.
Defina uma linha de base do seu AWS WAF usando a taxa de solicitações legítimas
Para se proteger contra ataques volumétricos, analise seu tráfego para identificar o número de solicitações feitas por endereços IP de clientes legítimos. Para analisar seu tráfego, use o CloudWatch Logs Insights, as consultas do Athena ou o Amazon QuickSight nos logs do AWS WAF. Use as informações da análise para definir como base seu AWS WAF. Em seguida, configure uma declaração de regra baseada em taxas para definir um limite de solicitação.
A seguir está um exemplo de consulta do Athena nos logs do AWS WAF que conta as solicitações de um único endereço IP dentro de um período de tempo específico:
SELECT "httprequest"."clientip", "count"(*) "count", "httprequest"."country" FROM waf_logs WHERE httprequest.clientip LIKE '10.0.0.0' and date_format(from_unixtime("timestamp"/1000), '%Y-%m-%d %h:%i:%s') between '2020-11-16 09:00:00' and '2020-11-16 10:00:00' GROUP BY "httprequest"."clientip", "httprequest"."country"
Observação: substitua 10.0.0.0 pelo seu endereço IP e 2020-11-16 09:00:00 e 2020-11-16 10:00:00 pelo seu período de tempo.
Veja a seguir um exemplo de consulta do CloudWatch Insights nos logs do AWS WAF que conta as solicitações de um único endereço IP:
fields httpRequest.clientIp, httpRequest.country | stats count(*) as requestCount by httpRequest.clientIp, httpRequest.country | filter httpRequest.clientIp = "10.0.0.0"
Observação: substitua 10.0.0.0 pelo seu endereço IP.
Veja a seguir um exemplo de consulta do Athena nos logs do AWS WAF que conta todas as solicitações de endereços IP dentro de um período específico:
SELECT "httprequest"."clientip", "count"(*) "count", "httprequest"."country" FROM waf_logs WHERE date_format(from_unixtime("timestamp"/1000), '%Y-%m-%d %h:%i:%s') BETWEEN '2020-11-16 09:00:00' AND '2020-11-16 10:00:00' GROUP BY "httprequest"."clientip", "httprequest"."country" ORDER BY "count" DESC
Observação: substitua 2020-11-16 09:00:00 e 2020-11-16 10:00:00 pelo seu período de tempo.
Veja a seguir um exemplo de consulta do CloudWatch Insights nos logs do AWS WAF que conta solicitações de endereços IP dentro de um período de tempo específico:
fields httpRequest.clientIp, httpRequest.country | stats count(*) as requestCount by httpRequest.clientIp, httpRequest.country | sort requestCount desc
Use automações de segurança para o AWS WAF para evitar ataques comuns
Para fornecer proteção adicional contra ataques comuns, é possível usar as Security Automations para o AWS WAF.
Observação: essa solução usa outros serviços do AWS que podem gerar custos.
Use declarações de regras de ataque de injeção de SQL e XSS
Para proteger suas aplicações contra ataques de injeção de SQL e XSS, use declarações de regras de ataque integradas para injeção de SQL e XSS. Os ataques podem ocorrer em diferentes partes da solicitação HTTP, como o cabeçalho HTTP, a string de consulta ou o URI. Configure suas regras do AWS WAF para inspecionar diferentes partes da solicitação HTTP em relação às declarações de regras de ataque.
Observação: solicitações legítimas para seu ambiente podem iniciar as declarações de regras de ataque. Para obter mais informações, consulte Como posso detectar falsos positivos causados pelo AWS Managed Rules?
Restrinja o acesso do CloudFront
É possível restringir o acesso com base nos endereços IP do CloudFront. Em seguida, adicione um cabeçalho personalizado no CloudFront para solicitações de origem. Na origem, permita o acesso somente se o cabeçalho personalizado e o valor estiverem presentes. Se a origem for um Application Load Balancer ou API Gateway, use o AWS WAF na origem. Essa ação permite solicitações que contenham o cabeçalho personalizado e o valor.
Proteger-se contra ataques de DDoS
Para se proteger contra ataques de DDoS, consulte Práticas recomendadas do AWS para resiliência contra DDoS e atributos do AWS Shield.
Informações relacionadas
- Tags
- AWS WAF
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
- feita há 4 meses
- feita há um mês
- feita há 3 meses
- feita há 2 meses
- AWS OFICIALAtualizada há um mês