Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Firewalls da AWS 101: como e quando usar cada um

By Joshua FoxDec 16, 20206 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

Em novembro de 2020, a AWS anunciou o "AWS Network Firewall". Essa profusão de firewalls acaba confundindo, então escrevi este post para colocar tudo em ordem.

Começamos com uma comparação entre os firewalls da AWS e sistemas de defesa de rede semelhantes, os casos de uso de cada um, contra quais ataques eles protegem e quais regras usam para detectar ameaças.

Em seguida, contamos uma história para ilustrar os casos de uso que você pode encontrar conforme sua aplicação cresce e ganha relevância financeira.

Quando usar cada serviço de firewall da AWS

Vamos começar pela base, da infraestrutura de mais baixo nível, e subir a partir daí — afinal, em geral, é assim que você também deve construir suas defesas.

Security Groups

Os Security Groups protegem Elastic Network Interfaces, normalmente associadas a instâncias EC2, mas também a outros serviços como RDS ou Lambda dentro de uma VPC. Eles podem proteger, por exemplo, contra conexões SSH não autorizadas. O bloqueio de acesso é feito com base em portas de origem e destino e em faixas de IP. Sempre que criar instâncias, defina Security Groups liberando apenas o acesso mínimo necessário.

Network ACLs

As Network ACLs protegem sub-redes — por exemplo, contra conexões não autorizadas a um banco de dados feitas pelo servidor de backend a partir de qualquer lugar. Assim como os Security Groups, elas bloqueiam acesso com base em portas de origem e destino e em faixas de IP. Defina NACLs ao particionar seus sistemas em sub-redes por função, o que costuma acontecer quando você define suas camadas. Com as NACLs, os subsistemas podem acessar uns aos outros conforme sua função na arquitetura, desde que as sub-redes estejam definidas adequadamente.

Kubernetes Network Policies

As Kubernetes Network Policies protegem aplicações no Elastic Kubernetes Service. Assim como Security Groups e NACLs, elas bloqueiam acesso com base em portas de origem e destino e em faixas de IP. Mas também podem usar labels do Kubernetes, viabilizando um controle de acesso funcional em unidades bastante granulares. Defina essas Network Policies sempre que criar qualquer conjunto de serviços Kubernetes que vá além do mais trivial.

Network Firewalls

Os Network Firewalls protegem todas as redes de uma organização — por exemplo, contra bots Trojan que exfiltram dados. O bloqueio é feito com base em conjuntos de regras (rulesets) padrão, disponíveis para download. Como nos Security Groups e NACLs, esses rulesets incluem assinaturas definidas por portas de origem e destino e por faixas de IP. Além disso, eles também usam deep packet inspection e podem bloquear com base em domínios, URLs e protocolos (desde que o TLS seja terminado antes do Network Firewall). Adote Network Firewalls quando precisar de políticas consistentes de Detecção e Prevenção de Intrusão em toda a organização.

AWS Shield Standard

O AWS Shield Standard protege aplicações web e APIs contra DDOS. Ele bloqueia acesso com base em padrões de tráfego HTTP(S), incluindo a frequência e a origem das chamadas. Adicione o AWS Shield Standard a qualquer aplicação web pública relevante para o negócio. (É gratuito e já vem habilitado por padrão em alguns recursos.)

AWS Shield Advanced

O AWS Shield Advanced faz o mesmo que o Standard, mas com mais monitoramento, reembolso pelos custos de ataques e, principalmente, uma equipe humana de operações qualificada. Considere o AWS Shield Advanced para qualquer aplicação web crítica para o negócio, levando em conta o custo do Advanced em relação ao Standard.

Web Application Firewall

O Web Application Firewall (WAF) protege aplicações web contra Cross-Site Scripting, SQL Injection, Insecure Direct Object References e outras ameaças da lista OWASP. Ele detecta e bloqueia acessos com base em assinaturas definidas por padrões nos cabeçalhos ou no corpo de uma requisição HTTP(s). Considere o WAF para se proteger enquanto corrige vulnerabilidades conhecidas da aplicação, ou caso esteja usando aplicações vulneráveis cujo código está fora do seu controle, ou ainda se acredita que seu código tem vulnerabilidades mínimas, mas quer uma camada extra de proteção, só para garantir.

Instâncias com Security Groups, sub-redes com NACLs, uma organização multi-rede com Network Firewall. AWS Shield contra DDOS e WAF protegem os pontos de entrada

Uma história sobre firewalls

Para mostrar como você adota diferentes firewalls conforme a aplicação cresce, vai aqui uma pequena história de casos de uso.

Pat acabou de começar a desenvolver uma aplicação web para a startup dela. Como é um pouco old school, decide usar uma única instância EC2 para uma prova de conceito simples. Configura um security group como firewall em nível de instância, liberando o acesso à instância apenas nas portas 80 e 443, para que as requisições HTTP/S cheguem até ela; e na porta 22 para a faixa de IPs do escritório, para administrá-la via SSH. Pronto: a instância já está protegida contra acesso de invasores em portas que não sejam a 80 ou 443, e qualquer acesso SSH a partir de endereços IP não autorizados também está bloqueado.

A prova de conceito já está segura, ainda nesse estágio inicial, contra vários tipos de ataque. Mas, à medida que ela adicionar mais complexidade à rede e à aplicação, e conforme a aplicação ganhar mais peso financeiro, vai precisar de mais defesas.

Para ir além da prova de conceito simples e partir para uma aplicação n-tier robusta, ela monta um banco de dados e separa os servidores de front-end e back-end. Cada camada ganha uma sub-rede própria. Ela configura Network Access Control Lists (NACLs) como firewall na entrada da sub-rede, liberando que as requisições HTTP/S acessem a sub-rede do frontend, que o frontend acesse o backend, que o backend acesse o banco de dados — e nada mais.

A escalabilidade tem seus limites; e, mesmo que a aplicação aguente a carga, um ataque DDOS faria as despesas dispararem. Então ela ativa o AWS Shield Standard, que é gratuito. Para DDOS, essa proteção é suficiente. Bem mais adiante, quando a aplicação tiver escalado muito e se tornado uma fonte importante de receita, o investimento no AWS Shield Advanced talvez valha a pena. O Advanced oferece, sobretudo, uma equipe de operações qualificada da AWS — um lembrete válido para a área de segurança em geral: a ameaça vem de pessoas inteligentes inventando novas formas de atacar você, então você precisa de pessoas inteligentes encontrando a forma certa de defender você o tempo todo.

Pat migra a aplicação para o Elastic Kubernetes Service, em busca de orquestração e gerenciamento mais simples. Aí entra a Kubernetes Network Policy, que define restrições sobre quais serviços Kubernetes podem se comunicar com outros serviços, permitindo um controle de acesso funcional mais granular do que era possível com sub-redes.

Os testes de penetração da aplicação revelam várias vulnerabilidades da lista OWASP, incluindo Insecure Direct Object References, Cross Site Scripting e SQL Injection. Então Pat e o time de desenvolvimento adicionam o AWS Web Application Firewall e, ao mesmo tempo, priorizam as correções necessárias e um esforço de segurança de longo prazo dentro do time de desenvolvimento.

Finalmente chega o grande dia: Exit!, e a startup é adquirida por uma grande corporação. Agora a aplicação passa a fazer parte de um portfólio maior, e a rede vira parte de uma infraestrutura complexa, com várias VPCs e redes on-premises gerenciadas por diferentes unidades organizacionais. Para manter tudo isso protegido, a corporação definiu políticas de rede consistentes em toda a organização. O AWS Network Firewall entra em cena para restringir o acesso por meio de rulesets defensivos padrão definidos por portas, endereços IP, domínios, URLs e protocolos. Isso protege não só contra os mesmos ataques que Security Groups e Network ACLs, como também detecta e previne intrusão por bots trojan ou hackers humanos que executam código na rede e corrompem ou exfiltram dados.

Grandes organizações exigem uma abordagem centralizada para gerenciar seus recursos e políticas — um sistema é tão forte quanto seu elo mais fraco. Entra em cena o AWS Firewall Manager, para gerenciar Network Firewalls, WAFs e outros sistemas, mantendo uma proteção consistente em toda a organização.

Espero que isso ajude a esclarecer os muitos firewalls da AWS. Se tiver dúvidas, fique à vontade para perguntar nos comentários.

— —

Obrigado ao meu colega Dr. Artem Shchodro pelos comentários valiosos.