Limitar os acessos com Security Groups

Sempre conceda as permissões mínimas exigidas em grupos de segurança (least privilege)

Verifique se as permissões concedidas são as necessárias. Desenvolvedores geralmente criam Security Groups abertos (sem restrições) para teste e se esquecem de fechá-los antes de ir para a produção.

O AWS Config conta com regras como restricted-ssh que podem ser utilizadas para detectar Security Groups que tem a porta 22 (utilizada para ssh) aberta para qualquer IP, o que não é uma boa prática. Para acessar suas instâncias, recomenda-se o uso do AWS Systems Manager Fleet Manager que não requer a abertura de portas inbound ou o uso de bastion hosts.

Caso sejam usadas imagens Microsoft Windows, é possível utilizar o AWS Systems Manager Session Manager para gerenciar essas instâncias via Powershell, porém é necessário um bastion host para acesso por Remote Desktop (RDP). Pode ser utilizado a regra restricted-common-ports do AWS Config indicando a porta 3389 como um dos parâmetros e assim detectar portas RDP abertas.

Uso de Security Groups como referência

Outra recomendação é o uso de Security Groups como referência, por exemplo, em uma aplicação web:

  • Um Application Load Balancer com o Security Group “sg-alb” permite conexões inbound na porta 80/443;
  • Um Autoscaling Group com Web Servers em múltiplas zonas de disponibilidade usando o Security Group “sg-webservers” aceita tráfego na porta 80/433 somente do Security Group “sg-alb” (ou seja, somente a partir do Load Balancer);
  • Um serviço de bancos de dados, como o Amazon Aurora ou o Amazon RDS configurado com um Security Group “sg-db” aceita tráfego na porta 3306 somente a partir das instâncias que estão no Security Group “sg-webservers”.

Deste modo, os Web Servers recebem tráfego somente do ALB, assegurando que os pacotes de entrada tenham sido inspecionados. O serviço de banco de dados atende somente os Web Servers, e se tiverem instâncias novas adicionadas pelas regras de auto-scaling, elas serão adicionadas ao Security Group e poderão assim acessar o banco de dados.

Security Groups

Veja o exemplo simplificado a seguir somente com as camadas de web server e backend:

Security Groups

Security Groups

Security Groups