O blog da AWS

Protegendo seu site com o AWS WAF e Amazon CloudFront

Bruno Silveira, Senior Solutions Architect, Brazil Public Sector

 

Nos últimos anos, estamos vendo uma onda crescente de ataques cibernéticos não apenas contra empresas, mas também contra instituições governamentais, educacionais e sem fins lucrativos. Além disso, essas mesmas instituições têm tido dificuldade em atualizar seus aplicativos da Web não apenas para inovação, mas também para tornar seu software mais seguro e menos vulnerável.

Neste blog post iremos mostrar 2 serviços que podem ser integrados em seu site para ajudar a diminuir esse gap de segurança, otimizando seu tempo para que você possa focar na diminuição das vulnerabilidades de seu software.

Visão geral técnica

Uma das arquiteturas mais comuns em sites é a arquitetura em 3 níveis comumente composta pelos níveis web, aplicação e dados. Uma característica comum dessas aplicações é o uso do Elastic Load Balance. O Elastic Load Balance (ELB distribui automaticamente o tráfego de aplicativos recebidos por vários destinos, como instâncias, contêineres e endereços IP (do Amazon EC2 e on-premises) e várias zonas de disponibilidade, o que minimiza o risco de sobrecarregar um único recurso. Para mais informações, acesse detalhes sobre zonas de disponibilidade.

Abaixo um exemplo de arquitetura de três camadas dentro da AWS:

 

Na perspectiva de segurança, essa arquitetura está usando boas práticas no que diz respeito à isolamentos de rede: uso de VPC, segmentação de redes publicas e privadas e uso de NAT Gateway para acesso a internet dos recursos privados. Outra boa prática, no ponto de vista de perímetro de segurança, é o uso do ELB que oferece um ponto único de entrada e gerenciamento e pode servir como uma linha de defesa entre a Internet e suas instâncias privadas do EC2 que estejam respondendo a sua aplicação.

O ELB suporta apenas solicitações TCP válidas, portanto, ataques de Negação de Serviço (DDoS) como UDP e SYN flood serão tratados, absorvidos e bloqueados ainda na camada do ELB, não afetando as instâncias EC2 que estiverem respondendo a essa aplicação. Essa feature está disponível sem nenhum custo adicional.

 

Detectando e Filtrando Requisições Maliciosas na camada WEB

AWS WAF é um firewall de nível de aplicação que ajuda a proteger seu site de explorações comuns que podem afetar a disponibilidade do aplicativo, comprometer a segurança ou consumir recursos excessivos. Ao usar o AWS WAF, você pode configurar as listas de controle de acesso (ACLs) para filtrar e bloquear solicitações com base em tipos de solicitações como XSS (Cross-site Scripting), SQL Injection, entre outros. Para mais informações, consulte lista de instruções de regras do AWS WAF.

Cada lista de controle de acesso à web (web ACL) dará controle granular sobre as solicitações da web aos quais o ELB responde. Você pode permitir ou bloquear as requisições a partir de um ou mais atributos (ou campos HTTP) de solicitação como URI, query string, método HTTP ou header key. Você também pode configurar sua ACL com regras gerenciadas que foram criadas por Parceiros de Tecnologia da AWS como F5, Fortinet, Imperva, etc.

Além disso, usando as regras baseadas em rate do AWS WAF, você pode bloquear automaticamente os endereços IP de usuários não válidos quando as solicitações correspondentes a uma regra excederem o limite que você definir. As solicitações de endereços IP do cliente ofensivos receberão erro 403 e permanecerão bloqueadas até que as taxas de solicitação caiam abaixo do limite. Isso é útil para mitigar ataques de flood HTTP disfarçados de tráfego regular da Web.

O modelo de preço do AWS WAF é baseado no numero de ACLs que você cria, numero de regras que você adiciona em cada ACL e o numero de requisições da web que você recebe.  Por exemplo, vamos supor que você tenha um aplicativo com o tráfego de 10 milhões de solicitações por mês.

Cobranças de ACL da Web = 5USD x 1 = 5 USD

Cobranças de regra = 1 USD x 8 = 8 USD

Cobranças de solicitação = 0,60 USD/milhões x 10 = 6 USD

Total de cobranças combinadas = 19 USD

Abaixo um exemplo do fluxo de como funciona o AWS WAF:

 

Aumentando seu perímetro de segurança

Amazon CloudFront pode ajudar a aumentar o desempenho de seus aplicativos da web e diminuir significativamente a latência da entrega de conteúdo para seus clientes. Para entregar conteúdo aos usuários finais com menor latência, o Amazon CloudFront usa uma rede global de 210 pontos de presença (199 locais de borda e 11 caches de borda regionais) em 78 cidades em 37 países. Explore nossa infraestrutura com este mapa interativo.

O Amazon CloudFront é um serviço que pode ser usado para fornecer todo o site, incluindo conteúdo estático, dinâmico, streaming e interativo. Conexões TCP persistentes e configurações de time-to-live (TTL) podem ser usadas para descarregar o tráfego da sua origem, mesmo se você não estiver exibindo conteúdo armazenável em cache. Esses recursos significam que o uso do Amazon CloudFront reduz o número de solicitações e conexões TCP de volta à sua origem, o que ajuda a proteger seu aplicativo Web contra HTTP flood. O Amazon CloudFront aceita apenas conexões bem formadas, o que ajuda a impedir que muitos ataques DDoS comuns, como SYN flood e ataques de UDP reflection atinjam sua origem. Os ataques DDoS também são geograficamente isolados perto da fonte, o que impede o tráfego de afetar outros locais. Esses recursos podem melhorar muito sua capacidade de continuar servindo tráfego aos usuários durante grandes ataques DDoS.

O modelo de preço do CloudFront, você só paga pelo que você usa e é baseado no numero de requisições da web, solicitações de anulações de cache, transferência de dados para fora (internet ou origin) e solicitação de criptografia de campo. Há um nível gratuito que a AWS oferece no primeiro ano de uso, onde os clientes podem usar até 2 milhões de requisições web por mês e até 50GB de transferência de dados para fora por mês.

Em conjunto com o AWS WAF, o CloudFront também pode ajudá-lo a proteger seus aplicativos da web, aumentando seu perímetro de segurança.

Por meio dessa integração, eles podem estabelecer políticas para bloquear o acesso e fechar tentativas de conexões de endereços IP que sugerem que um ataque DDoS está iniciando, como a 9Splay fez.

 

Como criar sua primeira ACL e começar a proteger seu site?

Para você usar o Cloudfront com o WAF em sua aplicação você precisa seguir os seguintes passos:

1.      Criar uma ACL  no AWS WAF.

2.      Criar uma distribuição do Cloudfront com a origin sendo o Elastic Load Balance da aplicação (Adicionar a ACL criada em sua distribuição do Cloudfront).

3.      Configurar um Security Group para o Elastic Load Balance (ELB) somente receba conexões da distribuição criada.

Depois de aproximadamente 15 minutos a distribuição do Cloudfront estará habilitada e o seu site mais seguro.

 

Conclusão e próximos passos

Neste blog post mostramos como a adição de dois serviços AWS podem ajudar a aumentar a segurança de seu site.

Para centralizar a visualização dos alertas de segurança provenientes do AWS WAF é uma boa prática adicionar soluções para tratamento dos logs do AWS WAF e criar dashboards e visualizações para análise e tomada de decisões em seus ambientes.

 


 

Sobre o autor

 

Bruno Silveira

Arquiteto de Soluções da AWS no time de Setor Publico com foco em Governo. Com carreira prévia em instituições como Caixa, Itaipu Binacional, Parque Tecnológico Itaipu, Ministério de Minas e Energia e Ministério da Cultura, Bruno é entusiasta de Software Livre e práticas ágeis como Lean e Scrum e gosta muito de um bom rock’n roll com uma boa cerveja.