Como posso configurar o AWS WAF para proteger meus recursos contra ataques comuns?

7 minuto de leitura
0

Como posso configurar o AWS WAF para proteger meus recursos contra ataques comuns?

Resolução

Migrar do AWS WAF Classic para o AWS WAF (se aplicável)

Se você estiver usando o AWS WAF Classic, é recomendável migrar para o AWS WAF. Para fazer essa migração, você pode aproveitar a ferramenta de migração automatizada. Para obter mais informações, consulte Why migrate to AWS WAF?

Executar testes de penetração na sua aplicação para identificar vulnerabilidades

Cada aplicação recebe seu próprio tipo de solicitação. Como resultado, as regras de firewall que protegem sua aplicação devem ser personalizadas.

Execute testes de penetração na sua aplicação para entender suas vulnerabilidades específicas. Para obter mais informações, consulte:

Analisar solicitações recebidas para otimizar regras personalizadas

Antes de criar regras personalizadas para proteger sua aplicação, analise as solicitações recebidas no seu ambiente.

Primeiro, gere logs usando:

  • AWS WAF
  • Amazon CloudFront
  • Application Load Balancer
  • Amazon API Gateway

Em seguida, armazene esses logs no Amazon Simple Storage Service (Amazon S3). Por fim, use o Amazon Athena para consultar os logs e identificar padrões. Por exemplo, você pode ver padrões como:

  • Solicitações feitas no seu ambiente para URIs que não existem

  • Para reconhecer esse padrão, você deve conhecer todos os URI compatíveis

  • Exemplo de consulta do Athena realizada nos logs do AWS WAF para contar solicitações para cada URI:

SELECT count("httprequest"."uri") as URIcount, "httprequest"."uri"
FROM waf_logs
GROUP BY "httprequest"."uri"
ORDER BY URIcount DESC
  • Solicitações que contêm um Cabeçalho de host HTTP sem suporte pelo seu servidor Web OU solicitações que contêm um endereço IP em vez do nome de domínio do seu site

  • Exemplo de consulta do Athena realizada nos logs do AWS WAF para contar 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

Depois de identificar um padrão, você pode criar regras do AWS WAF no modo COUNT para verificar se a regra está configurada para corresponder a essas solicitações. Em seguida, mova a regra para o modo BLOCK.

Por exemplo, se a aplicação oferece suporte apenas ao Cabeçalho de host "www.example.com":

  • Crie uma correspondência NOT no Cabeçalho de HOST com o valor "www.example.com"
  • Definir a ação como BLOCK

Todas as solicitações para o ambiente que não tenham um Cabeçalho de host de "www.example.com" agora estão bloqueadas. 
Observação: essa regra também bloqueia solicitações para o nome de domínio totalmente qualificado (FQDN) fornecido pela AWS.

Usar Regras gerenciadas pela AWS para se proteger contra ataques comuns

Use as Regras gerenciadas pela AWS para evitar ataques comuns que se aplicam à maioria dos aplicações, incluindo solicitações que:

  • Não contêm um agente usuário
  • Representam solicitações de bots
  • Usam "localhost" como Cabeçalho de host HTTP
  • Usam o método HTTP PROPFIND

Inclua esses grupos de regras básicas na sua lista de controle de acesso à Web (ACL da web) no modo COUNT. Certifique-se de escolher "Habilitar modo de contagem" no grupo de regras. 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 isso não acontecer, mova o grupo de regras para BLOCK, desabilitando "Habilitar modo de contagem". Para desabilitar uma regra específica no Grupo de regras gerenciadas pela AWS, escolha "Substituir ação de regras" para essa regra.

Observação: as regras nas Regras gerenciadas da AWS podem ser acionadas por solicitações legítimas ao seu ambiente. Para obter mais informações, consulte How can I detect false positives caused by AWS Managed Rules and add them to a safe list?

Importante: as Regras gerenciadas pela AWS foram projetadas para proteger você contra ameaças comuns da Web. Quando usados de acordo com a documentação, os grupos de Regras gerenciadas da AWS adicionam outra camada de segurança às suas aplicações. No entanto, grupos de regras do AWS Managed Rules não se destinam a substituir suas responsabilidades de segurança, que são determinadas pelos recursos do AWS que você seleciona. Consulte o Modelo de responsabilidade compartilhada para garantir que seus recursos na AWS estejam protegidos adequadamente.

Defina uma linha de base do seu AWS WAF usando a taxa de solicitações legítimas

Faça uma análise do seu tráfego para identificar o número de solicitações feitas por endereços IP de clientes legítimos usando o Amazon Athena ou o Amazon Quicksight nos logs do AWS WAF. Usando as informações obtidas dessa análise, defina a linha de base do AWS WAF de acordo com a taxa de solicitações feitas por um cliente legítimo. Em seguida, defina um limite ao configurar a regra baseada em intervalos do AWS WAF.

Exemplo de consulta do Athena realizada nos logs do AWS WAF para contar o número de solicitações de um único endereço IP (x.x.x.x) entre um determinado período (16 de novembro de 2020, das 9h às 10h):

SELECT  "httprequest"."clientip", "count"(*) "count", "httprequest"."country"
FROM waf_logs
WHERE httprequest.clientip LIKE 'x.x.x.x' 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"

Exemplo de consulta do Athena realizada nos logs do AWS WAF para contar o número de solicitações de todos os endereços IP entre o mesmo período:

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

Usar o modelo de Automações de segurança do AWS WAF para evitar ataques comuns

Use o modelo de Automações de segurança do AWS WAF para fornecer proteção adicional contra ataques comuns. Por exemplo, você pode habilitar a proteção contra:

  • Scanners e sondas
  • Bots ruins
  • Endereços IP incorretos

Observação: essa solução usa outros serviços da AWS que geram custos.

Proteger-se contra injeção de SQL e cross-site scripting

Para proteger suas aplicações contra ataques de injeção de SQL e cross-site scripting (XSS), use os mecanismos integrados de injeção de SQL e cross-site scripting. Lembre-se de que ataques podem ser executados em diferentes partes da solicitação HTTP, como o cabeçalho HTTP, a string de consulta ou o URI. Configure as regras do AWS WAF para inspecionar diferentes partes da solicitação HTTP em relação aos mecanismos de mitigação integrados.

Observação: as regras nos mecanismos de mitigação podem ser acionadas por solicitações legítimas ao seu ambiente. Para obter mais informações, consulte How can I detect false positives caused by AWS Managed Rules and add them to a safe list?

Restringir o acesso do CloudFront (se estiver usando o AWS WAF no CloudFront)

Proteger-se contra ataques de DDoS

Para obter mais informações sobre proteção contra ataques distribuídos de negação de serviço (DDoS), consulte AWS best practices for DDoS resiliency e Recursos do AWS Shield.


AWS OFICIAL
AWS OFICIALAtualizada há 4 anos