Como faço para mitigar ataques de DDoS usando o AWS WAF?

Data da última atualização: 27/07/2022

Como posso usar o AWS WAF para ajudar a evitar ataques distribuídos de negação de serviço (DDoS)?

Breve descrição

Ataques DDoS são tentativas de um invasor de interromper a disponibilidade de sistemas visados.

Para os ataques direcionados para a camada de infraestrutura, é possível usar os serviços da AWS, como o Amazon CloudFront e o Elastic Load Balancing (ELB), para fornecer proteção automática contra DDoS. Para obter mais informações, consulte Melhores práticas da AWS para resiliência contra DDoS.

Para os ataques direcionados para a camada de aplicação, é possível usar o AWS WAF como a principal mitigação. Para que as listas de controle de acesso a Web (ACLs da Web) do AWS WAF minimizem os efeitos de um ataque DDoS na camada de aplicação, faça o seguinte:

  • Use regras baseadas em taxas.
  • Analise as regras baseadas em taxas existentes e considere a redução do limite de taxa para bloquear solicitações inválidas.
  • Consulte os logs do AWS WAF para coletar informações específicas de atividades não autorizadas.
  • Crie uma regra de correspondência geográfica para bloquear as solicitações inválidas originadas de um país que não é esperado para sua empresa.
  • Crie uma regra de correspondência de conjunto de IPs para bloquear solicitações inválidas com base em endereços IP.
  • Crie uma regra de correspondência regex para bloquear as solicitações inválidas.

Resolução

Use regras baseadas em taxas

É possível criar regras gerais ou regras baseadas em taxas específicas de URI para proteger sua aplicação Web contra os ataques DDoS. Para obter mais informações, consulte As três regras mais importantes baseadas em taxas do AWS WAF.

Crie uma regra geral baseada em taxas no console do AWS WAF

Uma regra geral baseada em taxas permite a definição de um limite para o número de solicitações que os IPs podem fazer à sua aplicação Web.

  1. Abra o console do AWS WAF.
  2. Selecione a ACL da Web sem um RBR definido e, em seguida, selecione Regra baseada em taxas.
  3. Insira um nome para sua regra.
  4. Insira um Limite de taxa. O limite de taxa é o número máximo de solicitações permitidas em qualquer período de cinco minutos de qualquer endereço IP único. Depois que esse limite é atingido, a ação de regra baseada em taxas é aplicada ao endereço IP. Quando as solicitações do endereço IP ficam abaixo do limite, a ação é descontinuada.
    Observação: o limite de taxa é uma representação de quantas solicitações de um único endereço IP são consideradas excessivas e potencialmente mal-intencionadas. Caso contrário, você pode bloquear solicitações válidas. Se você não tiver certeza de qual limite definir, uma prática recomendada é definir a ação da regra para contar e monitorar seu padrão de solicitações.
  5. Para que o endereço IP seja usado para limitação de taxa, selecione Endereço IP de origem ou Endereço IP no cabeçalho.

    Endereço IP no cabeçalho: quando uma solicitação chega por meio de uma CDN ou outra rede proxy, o endereço IP de origem identifica o proxy e o endereço IP original é enviado em um cabeçalho. Tenha cuidado ao usar a opção Endereço IP no cabeçalho, pois os cabeçalhos podem ser manipulados de forma inconsistente pelos proxies. E os cabeçalhos podem ser modificados para ignorar a inspeção.

    Endereço IP de origem: em Critérios para contagem de solicitações até o limite de taxa, escolha a contagem de solicitações que correspondam aos critérios de uma instrução de regra.
  6. Defina a ação da regra para contar ou bloquear solicitações de endereços IP enquanto suas contagens de solicitações estiverem acima do limite. A aplicação e a remoção da ação da regra podem entrar em vigor um minuto ou dois após a alteração da taxa de solicitação do endereço IP.
  7. Selecione Adicionar regra.
  8. Selecione Próximo.

Para obter informações sobre como criar uma instrução de regra baseada em taxas, consulte Instrução regra baseada em taxas.

Crie uma regra baseada em taxa específica de URI no console do AWS WAF

  1. Abra o console do AWS WAF.
  2. Selecione a ACL da Web que não tem uma regra baseada em taxas definida e selecione Regra baseada em taxas.
  3. Insira um nome para sua regra.
  4. Insira um Limite de taxa.
  5. Para que o endereço IP seja usado para limitação de taxa, selecione Endereço IP de origem ou Endereço IP no cabeçalho.
  6. Para Critérios para contagem de solicitações até o limite de taxa, escolha Considerar somente as solicitações que correspondam aos critérios em uma instrução de regra.
  7. Crie a Instrução com as seguintes variáveis:
    Para Inspecionar, selecione Caminho do URI.
    Para Tipo de correspondência, selecione Corresponde exatamente à string.
    Para String a corresponder, insira /login. Você pode selecionar o URI específico para sua aplicação.
    Para Transformação de texto, deixe como Nenhuma.
  8. Defina a ação da regra para contar ou bloquear solicitações de endereços IP enquanto suas contagens de solicitações estiverem acima do limite.
  9. Selecione Acionar regra.
  10. Escolha Avançar.

Analise as regras baseadas em taxas existentes e considere reduzir o limite de taxa para bloquear as solicitações inválidas

Para modificar uma regra baseada em taxas existente no console:

  1. Abra o console do AWS WAF.
  2. Selecione a ACL da Web e selecione a regra baseada em taxas existente.
  3. Reduza o Limite de taxa conforme necessário.
  4. Defina a Ação da regra como Bloquear.
  5. Escolha Salvar regra.
  6. Escolha Avançar.

Para obter mais informações, consulte a Instrução de regra baseada em taxas.

Considere restringir o escopo das solicitações que são rastreadas e contadas por sua regra baseada em taxas

Para restringir o escopo das solicitações rastreadas e contadas pelo AWS WAF, use uma instrução de redução de escopo dentro da instrução baseada em taxa. Em seguida, o AWS WAF conta as solicitações correspondentes à instrução de redução de escopo.

Exemplo

De acordo com as solicitações recentes de um invasor nos Estados Unidos, uma regra baseada em taxa é criada com a seguinte instrução de redução de escopo:

  1. Uma instrução de correspondência geográfica que especifica as solicitações originadas nos Estados Unidos.
  2. Uma instrução de correspondência de string que pesquisa a string Badbot no cabeçalho User-Agent.

Suponha que um limite de taxa de 1.000 seja definido. Para cada endereço IP, o AWS WAF conta as solicitações que atendem aos critérios para ambas as instruções aninhadas. As solicitações que não atendam às duas instruções não são contabilizadas. Se a contagem de um endereço IP exceder 1.000 solicitações em qualquer intervalo de 5 minutos, a ação da regra será acionada nesse endereço IP.

Para adicionar uma instrução de redução de escopo usando esse exemplo para a sua regra baseada em taxas no console, faça o seguinte:

  1. Abra o console do AWS WAF.
  2. Selecione a ACL da Web e selecione a regra baseada em taxas existente.
  3. Para Critérios para contagem de solicitações até o limite de taxa, escolha somente as solicitações que correspondam aos critérios na instrução de regra
  4. Conte somente as solicitações que correspondem à seguinte instrução:
    Se uma solicitação corresponder a todas as instruções (AND)
    Instrução 1
    Inspecionar: selecione Originário de um país em.
    Códigos de país: selecione Estados Unidos-EUA.
    Endereço IP a ser usado para limitação de taxas: selecione Endereço IP de origem ou Endereço IP no cabeçalho.

    -e-

    Instrução 2
    Inspecionar: selecione Cabeçalho único.
    Nome do campo do cabeçalho: insira User-Agent.
    Tipo de correspondência: selecione Corresponde exatamente à string.
    String a corresponder: insira Badbot.
  5. Escolha Salvar regra.
  6. Escolha Avançar.

Consulte os logs do AWS WAF para coletar as informações específicas de atividades não autorizadas

Caso ainda não tenha feito isso, certifique-se de ativar o registro em log do AWS WAF.

Depois de ativar o registro em log para sua ACL da Web para analisar o tráfego, consulte os logs do AWS WAF para investigar os cenários de DDoS. É possível consultar os logs do AWS WAF da seguinte maneira:

Usando o analisador de log do Amazon Athena ou o analisador de log do AWS Lambda

As regras baseadas em taxas permitem que você especifique o número máximo de solicitações da Web a serem permitidas de qualquer endereço IP único em um período de cinco minutos que é atualizado continuamente. Se um endereço IP exceder o limite configurado, as novas solicitações serão bloqueadas até que a taxa de solicitação fique abaixo do limite configurado. O valor limite mínimo de taxa aceitável para regras baseadas em taxas é 100.

Em cenários em que as regras baseadas em taxas não podem ser usadas devido ao limite mínimo permitido, considere usar a Implementação do analisador de log do Athena ou do analisador de log do Lambda disponível no AWS WAF Automation. Com regras baseadas em taxas, o período de bloqueio padrão é de 240 segundos. Tanto o analisador de log do Athena quanto o do Lambda permitem selecionar o período (em minutos) para bloquear os endereços IP aplicáveis.

As implementações do analisador de log do Athena e do Lambda têm os seguintes parâmetros:

  • Limite de solicitação: o máximo de solicitações aceitáveis por cinco minutos, por endereço IP.
  • Período de bloqueio: o período (em minutos) para bloquear os endereços IP aplicáveis.

Ambas as soluções permitem definir parâmetros ao provisionar ou atualizar pilhas do AWS CloudFormation.

Use o analisador de log do Lambda ou o analisador de log do Athena quando as regras baseadas em taxas não estiverem disponíveis. Para mais informações, consulte o Analisador de log do AWS Lambda.

Esteja ciente do aumento dos custos ao usar o analisador de log do Athena. O uso do Athena será cobrado ao usar essa opção para proteção contra flood HTTP. Por padrão, cada consulta do Athena é executada a cada cinco minutos e verifica as últimas quatro horas de dados. O particionamento é aplicado a logs e consultas do Athena para manter os custos baixos. É possível configurar o número de horas de dados que uma consulta verifica alterando o valor do parâmetro do modelo período do bloco WAF. No entanto, aumentar a quantidade de dados digitalizados provavelmente aumentará o custo do Athena.

Para obter mais informações, consulte Estimativa de custo do Amazon Athena.

Crie uma regra de correspondência geográfica para bloquear as solicitações inválidas originadas de um país que não é esperado para sua empresa

Crie uma ou mais instruções de regra de correspondência geográfica para permitir ou bloquear solicitações da Web de acordo com o país de origem.

Para criar uma regra de correspondência geográfica no console do AWS WAF:

  1. Abra o console do AWS WAF.
  2. Selecione a ACL da Web, selecione Regra regular e crie uma regra de Correspondência geográfica.
  3. Em Opções de solicitação, selecione Originário de um país e escolha o código ou códigos do país na lista suspensa.
  4. Defina a ação da regra como BLOQUEAR.
  5. Selecione Adicionar regra.

Crie uma regra de correspondência de conjunto de IP para bloquear solicitações inválidas de acordo com os endereços IP

Crie uma instrução de regra de correspondência de conjunto de IP para permitir ou bloquear solicitações da Web de acordo com os endereços IP dos quais as solicitações são originadas. Uma condição de correspondência de IP lista até 10.000 endereços IP ou intervalos de endereços IP dos quais suas solicitações se originam. Posteriormente no processo, ao criar uma ACL da Web, é possível especificar se as solicitações desses endereços IP devem ser permitidas ou bloqueadas.

Para criar uma regra de correspondência de IP no console do AWS WAF:

  1. Abra o console do AWS WAF.
  2. Crie um conjunto de IPs e adicione os endereços IP na lista.
  3. Selecione a ACL da Web e, em seguida, selecione Regra regular, criar uma regra de correspondência de IP.
  4. Em Opções de solicitação, selecione Originário de um endereço IP e escolha o conjunto de IPs criados na etapa 2.
  5. Defina a ação da regra como BLOQUEAR.
  6. Selecione Adicionar regra.

Para obter mais informações, consulte Criação e gerenciamento de um conjunto de IPs.

Crie uma regra de correspondência de string para bloquear solicitações inválidas

Durante um ataque DDoS, geralmente não há um IP de origem, o que torna difícil filtrar com base em um ou alguns endereços IP. Nesses cenários, é importante que todas as seções da solicitação sejam avaliadas para identificar quaisquer padrões de distinção entre uma solicitação válida e uma inválida. Criar uma regra de correspondência de string ou uma regra de correspondência regex é uma maneira eficiente de bloquear solicitações inválidas.

Por exemplo, se as solicitações incorretas forem de User-Agent: BadBot, é possível criar uma regra de correspondência de string de acordo com os detalhes do cabeçalho.

Para criar uma regra de correspondência de string no console do AWS WAF:

  1. Abra o console do AWS WAF.
  2. Selecione a ACL da Web e, em seguida, selecione Regra regular, criar uma regra de correspondência de string.
  3. Nas opções de solicitação, selecione o seguinte:
    Para Inspecionar, selecione Cabeçalho.
    Em Nome do campo do cabeçalho, insira User-Agent.
    Para Tipo de correspondência, selecione Corresponde exatamente à string.
    Para String a corresponder, insira BadBot.
  4. Defina a ação da regra como BLOQUEAR.
  5. Selecione Adicionar regra.

Crie uma regra de correspondência regex para bloquear solicitações inválidas

Uma instrução de regra de correspondência de regex instrui o AWS WAF a corresponder um componente de solicitação a uma única expressão regular (regex). Uma solicitação da Web corresponderá à instrução se o componente da solicitação corresponder à regex especificada.

Para criar uma regra de correspondência regex no console do AWS WAF:

  1. Abra o console do AWS WAF.
  2. Selecione a ACL da Web e, em seguida, selecione Regra regular, criar uma regra de correspondência de string.
  3. Nas opções de solicitação, selecione o seguinte:
    Para Inspecionar, selecione Caminho do URI.
    Em Tipo de correspondência, selecione Corresponde à expressão regular.
    Para String a corresponder, insira a expressão regular.
  4. Defina a ação da regra como BLOQUEAR.
  5. Selecione Adicionar regra.

Este artigo foi útil?


Precisa de ajuda com faturamento ou suporte técnico?