Atualmente na era digital, a segurança online se tornou uma prioridade, especialmente quando se trata da proteção de aplicações web contra ameaças cibernéticas. No ecossistema da Amazon Web Services (AWS), a implementação de medidas robustas de segurança é fundamental para garantir a integridade e disponibilidade de seus recursos na nuvem. Neste post, exploraremos em detalhes a utilização do WAF (Web Application Firewall) na AWS, uma ferramenta essencial para fortificar a segurança de suas aplicações web. Descubra como o WAF pode ser uma barreira eficaz contra ameaças do tipo: ataques DDoS, injeção de SQL e outros exploits comuns, proporcionando uma camada adicional de proteção para o seu site hospedado na AWS. Prepare-se para aprofundar seus conhecimentos e elevar o nível de segurança de sua presença online na nuvem.
Essa publicação demonstrará como configurar o WAF como a primeira camada de proteção da aplicação, trabalhando em conjunto com o CloudFront (CDN).
O Cloud Front é uma CDN (Content Delivery Network) da AWS para entrega de conteúdo com alta velocidade e baixa latência devido a sua quantidade de (PoPs) Pontos de Presença espalhados pelo mundo. Mais detalhes sobre esse serviço aqui: https://aws.amazon.com/pt/cloudfront/
Acessando a console do WAF pela primeira vez, será exibida uma janela similar a essa abaixo, clique no botão laranja Create web ACL:
![](https://brenocarvalho.cloud/wp-content/uploads/2023/12/waf_getstarted_1-1-1024x466.png)
Será carregada uma janela de configuração da Web ACL, nessa primeira etapa será necessário informar o tipo de recurso que você irá associar a essa ACL, existem duas opções CloudFront distributions (opção padrão) ou recursos regionais, por exemplo: Application Load Balancers, API Gateway entre outros serviços.
Nessa demonstração iremos criar a ACL para o CloudFront, inserindo o nome da Web ACL, o campo CloudWatch metric name será automaticamente preenchido, esse nome será para indentificar as métricas da Web ACL no Cloud Watch:
![](https://brenocarvalho.cloud/wp-content/uploads/2023/12/waf_create_webacl1.png)
No próximo bloco de configurações podemos definir o Body size limit que o WAF irá inspecionar, esse limite se aplica ao request body, headers e cookies. Para essa demonstração, iremos deixar a opção Default (Padrão) que é 16 KB, pagando um valor adicional, esse valor pode ser alterado até 64 KB conforme imagem abaixo:
![](https://brenocarvalho.cloud/wp-content/uploads/2023/12/waf_create_webacl2.png)
Definido o Body size limit, iremos selecionar o CloudFront Distribution que iremos associar a Web ACL que estamos criando.
![](https://brenocarvalho.cloud/wp-content/uploads/2023/12/waf_create_webacl3.png)
Clicando no botão Add AWS resource conforme imagem acima, irá carregar uma janela com as Distributions existentes, selecione o Distribution e clique no botão Add conforme imagem abaixo:
![](https://brenocarvalho.cloud/wp-content/uploads/2023/12/waf_create_webacl4.png)
Irá voltar para a tela anterior (imagem abaixo), clique no botão Next:
![](https://brenocarvalho.cloud/wp-content/uploads/2023/12/waf_create_webacl5.png)
Nessa etapa, iremos definir as regras conforme os comportamentos das requisições web e de acordo com o que for identificado na requisição, a ação que será tomada. Por exemplo, se será liberado (Allow) ou bloqueado (Block).
![](https://brenocarvalho.cloud/wp-content/uploads/2023/12/waf_create_webacl6.png)
Clicando em Add rules e depois em Add managed rule groups, será carregado uma tela com as regras gerenciadas, existem regras da própria AWS (que iremos usar aqui) e também de outros diversos fabricantes. Clicando em AWS managed rule groups vai expandir as regras gerenciadas pela AWS…
![](https://brenocarvalho.cloud/wp-content/uploads/2023/12/waf_create_webacl7-1.png)
Iremos selecionar as regras gratuitas da AWS chamada Core rule set, que inclui proteções para aplicações Web incluindo OWASP publications (publicações OWASP) e Amazon IP reputation list que é baseada na Amazon threat intelligence (Inteligência de Ameaças Amazon) e irá bloquear IPs associados a bots entre outras ameaças já conhecidas pela AWS.
Após selecionar as regras desejadas, basta clicar no botão Add rules no final da página.
Um ponto importante que deve ser considerado é que cada regra (Rules) tem um limite de capacidade que é de 5000 WCUs, mas usando acima de 1500 WCUs existirá um custo adicional. O WCU é basicamente uma unidade de medida de capacidade da Web ACL, que a AWS utiliza para calcular e controlar os recursos necessários para executar as regras. Para saber dos custos envolvidos nas regras, acesse: https://aws.amazon.com/waf/pricing/
Entendendo a regra abaixo, no nosso cenário usamos somente duas regras que utilizam uma capacidade de 725 WCUs e estaremos liberando o tráfego das requisições que o comportamento não for o esperado nas regras adicionadas na sessão Rules:
![](https://brenocarvalho.cloud/wp-content/uploads/2023/12/waf_create_webacl8-1.png)
Clique no botão Next.
Após configurar as regras e seu comportamento, iremos definir a prioridade de processamento delas no WAF, quando uma requisição chegar eles serão avaliadas de cima para baixo.
No cenário da nossa Web ACL, é necessário que o WAF faça o bloqueio de qualquer IP que esteja na lista AWS-AWSManagedRulesAmazonIpReputationList, antes que ele faça a análise da regra AWS-AWSManagedRulesCommonRuleSet, com isso será alterada a ordem de processamento. Observe no vídeo abaixo:
Nessa etapa, iremos configurar o nome que as métricas serão enviadas para o CloudWatch para monitoramento, deixaremos com as opções padrão:
![](https://brenocarvalho.cloud/wp-content/uploads/2023/12/waf_create_webacl9.png)
Ao clicar no botão Next será exibida a tela de Review (análise), onde você poderá visualizar o que foi configurado em todas as etapas da configuração da Web ACL, caso esteja de acordo, é só clicar no botão Create web ACL para criar a Web ACL.
Finalizada a criação da Web ACL, navegaremos pelo Dashboards e analisaremos o tráfego. Para popular os Dashboards, foi realizado um teste online através de sites gratuitos para gerar tráfego e conseguirmos ver o WAF em funcionamento.
Acessando a Web ACL criada, iremos selecionar a aba Traffic overview. Conforme janela abaixo:
![](https://brenocarvalho.cloud/wp-content/uploads/2023/12/waf_create_webacl10-1024x444.png)
Na primeira parte temos o resumo com a quantidade total do tráfego, o que foi liberado (allow), bloqueado (blocked) e em qual regra foi bloqueado:
![](https://brenocarvalho.cloud/wp-content/uploads/2023/12/webacl_traffic_overview1-1024x446.png)
Na segunda parte (Traffic characteristics), conseguimos ver a característica do tráfego que são informações importantes, tais como: o tipo do cliente, os tipos de ataques, se é tráfego de Bot ou não e o país de origem do tráfego.
![](https://brenocarvalho.cloud/wp-content/uploads/2023/12/webacl_traffic_overview2-1024x473.png)
Já nessa última parte, é possível ver em qual regra / grupo de regra a requisição foi categorizada.
![](https://brenocarvalho.cloud/wp-content/uploads/2023/12/webacl_traffic_overview3-1024x294.png)
A partir de agora, teremos mais uma camada de proteção na aplicação web.
É fundamental destacar que nessa demonstração, foram empregadas apenas duas regras. Isso se deu com o propósito de elucidar o funcionamento da solução de WAF da AWS. No entanto, ao lidar com um ambiente que envolva uma aplicação real e crítica, é imperativo realizar uma análise detalhada da aplicação. Essa análise permitirá identificar quais regras (proteções) devem ser configuradas na WebACL, garantindo uma abordagem personalizada e eficaz para a segurança do ambiente.
Abaixo, observe algumas regras que poderiam ser adicionadas a WebACL:
![](https://brenocarvalho.cloud/wp-content/uploads/2023/12/rule_options-1024x795.png)
Espero que essa publicação possa ser uma contribuição valiosa para a comunidade da AWS, como um auxílio para quem está buscando conhecimento na área de Cloud.
Até breve!!