Como uso o AWS WAF com o AWS Global Accelerator para impedir que o método HTTP de camada 7 e os cabeçalhos acessem meu aplicativo?

5 minuto de leitura
0

Quero bloquear solicitações para minha aplicação quando o método de solicitação for POST ou se valor do cabeçalho User-Agent corresponder a curl/7.79. Para isso, quero usar o AWS WAF associado ao Application Load Balancer com o AWS Global Accelerator.

Breve descrição

Você pode usar o AWS WAF e o Application Load Balancer com o Global Accelerator para bloquear o acesso de métodos e cabeçalhos HTTP da camada 7. Nessa arquitetura, o AWS WAF usa as regras da lista de controle de acesso à web (ACL da web) com o Application Load Balancer. O balanceador de carga torna-se um endpoint para o Global Accelerator.
Observação: o AWS Global Accelerator em si não oferece suporte ao AWS WAF.

A regra da ACL da web associada ao balanceador de carga avalia o tráfego de entrada, e encaminha para o endpoint somente as solicitações que estejam em conformidade com ela.

Resolução

As regras da ACL da web oferecem um controle refinado para seus recursos protegidos sobre todas as solicitações HTTP e HTTPS da web. Use uma regra para configurar uma correspondência de string ou de regex com um ou mais atributos de solicitação. Por exemplo, você pode usar um URI, uma string de consulta, um método HTTP ou uma chave de cabeçalho como atributo.

Pré-requisitos

  • Verifique se a configuração de fluxo de tráfego entre o Global Accelerator, o Application Load Balancer e o AWS WAF é a seguinte:
    User --> Global Accelerator --> Application Load Balancer with AWS WAF --> EC2 instance
    Observação: nessa configuração, o usuário acessa a aplicação fazendo uma solicitação ao acelerador. O acelerador direciona o tráfego do usuário para o Application Load Balancer e o AWS WAF associado a ele. O AWS WAF avalia a solicitação que tem o método HTTP da camada 7 de aplicação o ou valor de cabeçalho User‑Agent. Então, ou bloqueia ou permite a solicitação.

Crie uma ACL da web baseada em regras

Siga o processo de três etapas abaixo para criar uma ACL da web baseada em regras. Para mais informações, consulte Creating a web ACL (Como criar uma ACL da web).

Crie uma ACL da web

  1. Navegue até o console do AWS WAF para criar uma ACL da web.
  2. Escolha Create web ACL (Criar ACL da web).
  3. Nomeie a ACL da web. Selecione a região do Application Load Balancer.
  4. Associe o Application Load Balancer à ACL da web.
  5. Escolha Next (Avançar).

Adicione uma regra personalizada à ACL da web

Continue a configuração da seguinte forma:

  1. Escolha Add Rules (Adicionar regras). Selecione Add my own rules and rule groups (Adicionar minhas próprias regras e grupos de regras) na lista suspensa.
  2. Em Rule builder (Builder de regras), adicione uma regra.
  3. Dê um nome à regra (por exemplo, negar_User-Agent_com_POST).
  4. Em Type (Tipo), selecione Regular rule (Regra regular).

Configure os critérios de correspondência da regra

Conclua as etapas restantes:

  1. Selecione corresponde a pelo menos uma das instruções (OU).

  2. Preencha a instrução1 da seguinte forma:
    Inspecionar: Um único cabeçalho
    Nome do campo de cabeçalho: User-Agent
    Tipo de correspondência: Corresponde exatamente à string
    String a ser correspondida: curl/7.79.0

    Preencha a instrução2 da seguinte forma:
    Inspecionar: Método HTTP
    Tipo de correspondência: Corresponde exatamente à string
    String a ser correspondida: POST

  3. Escolha Block (Bloquear) em Ação.

Teste os resultados com o valor do cabeçalho User‑Agent

Acesse a aplicação usando a URL do Global Accelerator e curl/7.79.0 como valor do cabeçalho User‑Agent, com o método de solicitação GET.

curl http://<your Global Accelerator URL> -v -H "User-Agent:curl/7.79.0"
> GET / HTTP/1.1
> Host: <your Global Accelerator DNS>
> User-Agent:curl/7.79.0

< HTTP/1.1 403 Forbidden  
< Server: awselb/2.0
<
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
</body>
</html>

Observação: substitua <your Global Accelerator URL> pela sua URL do Global Accelerator. Substitua <your Global Accelerator DNS> pelo seu DNS.

Observe que o AWS WAF bloqueou a solicitação e o Application Load Balancer respondeu com uma mensagem de 403 Proibido.

Teste o resultado com uma solicitação POST

Acesse a aplicação usando a URL do Global Accelerator e curl/7.79.1 como valor do cabeçalho User‑Agent, com o método de solicitação POST.

curl -X POST http://<your Global Accelerator URL> --user "test-user:test-password" -v
> POST / HTTP/1.1
> Host: <your Global Accelerator DNS>
> Authorization: Basic dGVzdC11c2VyOnRlc3QtcGFzc3dvcmQ=
> User-Agent: curl/7.79.1
>
< HTTP/1.1 403 Forbidden
< Server: awselb/2.0
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
</body>
</html>

Observação: substitua <your Global Accelerator URL> pela sua URL do Global Accelerator. Substitua <your Global Accelerator DNS> pelo seu DNS.

Observe que o AWS WAF bloqueou a solicitação e o Application Load Balancer respondeu com uma mensagem de 403 Proibido.

AWS OFICIAL
AWS OFICIALAtualizada há um ano