Como uso o AWS WAF com o AWS Global Accelerator para proteger meu aplicativo contra ataques maliciosos?

4 minuto de leitura
0

Quero proteger meu aplicativo contra ataques de DDoS de camada 7 usando a regra de limitação de taxa do AWS WAF com o Application Load Balancer por trás do Global Accelerator.

Breve descrição

Você pode usar o AWS Global Accelerator, o Application Load Balancer e o AWS WAF para se defender contra ataques distribuídos de negação de serviço (DDoS) na camada de aplicação.

Observação: a limitação da taxa do cliente por meio do Application Load Balancer e do WAF exige que você defina o IP de origem preserved=true no acelerador. Para obter mais informações, consulte Preservar endereços IP de clientes no AWS Global Accelerator.

Resolução

A regra de limitação de taxa do AWS WAF permite que você bloqueie automaticamente clientes de endereços IP específicos que enviam uma grande enxurrada de solicitações ao seu aplicativo. Sua regra baseada em tarifas rastreia o número de solicitações enviadas por cada endereço IP, com base em uma janela de tempo variável. Quando as solicitações excedem o limite de taxa, a regra bloqueia imediatamente as solicitações do endereço IP de origem, até que o endereço reduza o número de solicitações.

Observação: você também pode configurar a regra para inspecionar e bloquear vários componentes de uma solicitação, incluindo o país de origem da solicitação.

Pré-requisitos

  • Certifique-se de ter a seguinte configuração de fluxo de tráfego para Global Accelerator, Application Load Balancer e AWS WAF:
    User --> Global Accelerator --> Application Load Balancer with WAF --> EC2 instance
    Observação: nessa configuração, o usuário acessa o aplicativo fazendo uma solicitação ao acelerador. O acelerador direciona o tráfego do usuário para o Application Load Balancer e o WAF associado a ele. O WAF avalia e bloqueia ou permite a solicitação do usuário usando a regra de limitação de taxa que você cria.
  • Instale uma ferramenta de teste de carga, como o loadtest do GitHub. Ou use uma ferramenta de teste de carga de sua escolha que ofereça a visibilidade necessária.

Criar uma ACL da web baseada em regras

Crie uma regra baseada em taxas na ACL da web, com um limite de taxa agressivo de 100. Em seguida, use o caso de teste para verificar se sua regra está funcionando.

  1. Navegue até o console do AWS WAF para criar uma regra de ACL na web.
  2. Adicione uma regra personalizada à sua ACL da web.
  3. Dê um nome a ela e defina a regra baseada na taxa como Tipo.
  4. Defina 100 como seu limite de taxa.
  5. Deixe todas as outras configurações como estão. Em seguida, clique em Adicionar regra.
  6. Salve a ACL da web.

Testar os resultados

O teste simula um ataque de flood de HTTP. A ferramenta de teste de carga mostra o progresso das solicitações recebidas. Em algum momento, as solicitações começam a falhar porque são bloqueadas pela regra de limitação de taxa que você configurou.

  1. Execute a ferramenta de teste de carga no seu computador.
    Observação: ou abra o AWS CloudShell em seu console. Você pode receber uma solicitação para mudar para a região onde ele tem suporte.

    # Install globally as root:
    npm install -g loadtest
    # On AWS CloudShell, Ubuntu or Mac OS X systems install using sudo:
    sudo npm install -g loadtest
  2. Insira o URL do Global Accelerator, conforme mostrado abaixo:

    # Global Accelerator url
    GA_URL=http://your_Global_Acclerator_URL

    Observação: substitua your_Global_Accelerator_URL pelo seu URL do Global Accelerator.

  3. Execute o comando em seu terminal para iniciar a enxurrada de solicitações de simulação de teste de carga.

    Observação: isso deve levar 45 segundos para ser executado, então fique de olho no fluxo.

    loadtest -n 1000 -c 1 --rps 25 $GA_URL

    O comando envia um total de 1.000 solicitações, com simultaneidade de 1 e 25 solicitações por segundo. Com essa taxa de solicitações por segundo, você atinge o limite definido no quarto segundo.

  4. Analise o fluxo de saída. Observe que, em algum momento, as solicitações começaram a falhar. Os erros indicam que a regra do WAF bloqueou todas as solicitações do seu endereço IP de origem.

    [Fri Apr 21 2023 20:26:45 GMT+0000 ] INFO Requests: 0 (0%), requests per second: 0, mean latency: 0 ms
    [Fri Apr 21 2023 20:26:50 GMT+0000 ] INFO Requests: 106 (11%), requests per second: 21, mean latency: 22.9 ms
    [Fri Apr 21 2023 20:26:50 GMT+0000 ] INFO Errors: 106, accumulated errors: 106, 100% of total requests
AWS OFICIAL
AWS OFICIALAtualizada há um ano