Segurança de container — Tempo de execução

Victor BatistaX
3 min readJul 5, 2023

--

A segurança em tempo de execução oferece proteção ativa aos contêineres durante a execução. E no que isso importa ?
A ideia é detectar e evitar que atividades maliciosas ocorram em seus contêineres durante o voo.

Então aqui vai algumas dicas…

Forneça apenas os recursos de que cada container precisa para operações normais, para que containers não autorizados não consumam todos os recursos.

- No ECS, isso é feito pelo dimensionamento de tarefas (tasks)
- No EKS, isso é feito com “resource limits, namespace limit ranges, and namespace resource quotas”

Restringir privilégios root aos containers

A menos que você especifique um usuário, seus containers serão executados como o mesmo usuário do Docker
Isso significa ROOT

Containers priviligiados são um risco à segurança.

Para o Amazon ECS:
- ECS_DISABLE_PRIVILEGED = true

Contexto de segurança de container Kubernetes

  • Não execute como root
  • Não permitir escalonamento de privilégios
  • Sistema de arquivos com somente leitura
  • Tire todos os recursos desnecessarios do Linux

Práticas recomendadas de segurança em tempo de execução do Kubernetes

  • Negar “mounting host path” (exceto para EmptyDir)
  • Restringir o uso da rede de host
  • Habilitar o perfil Seccomp fornecido pelo runtime do container
    • Recurso do kernel Linux que restringe chamadas de sistema não autorizadas

• Imponha políticas de segurança usando Política como código (PaC)

  • OPA, Gatekeeper, Kyverno
  • Os PSPs estão limitados a pods (em breve também serão descontinuados — versão 1.25.1)
  • Soluções PaC pode gerenciar todos os recursos do Kubernetes

Perícia forense de tempo de execução de containers com Falco

Falco é um OSS “… Ferramenta cloud native open source da CNCF de segurança”.

  • Um shell está sendo executado dentro de um container ou pod no Kubernetes.
  • Um container está sendo executado no modo privilegiado ou está montando um caminho sensível, como /proc, a partir do host.
  • Um processo do servidor está gerando um processo filho de um tipo inesperado.
  • Leitura inesperada de um arquivo confidencial, como/etc/shadow.
  • Um arquivo que não seja do dispositivo é gravado em /dev.
  • Um binário de sistema, como ls, está fazendo uma conexão de rede de saída.
  • Um pod privilegiado é iniciado em um cluster do Kubernetes.

Segurança de runtime com soluções de terceiros

  • Análise dinâmica de ameaças para containers
  • Avaliação dinâmica de riscos de cargas de trabalho em um cluster Kubernetes
  • Varreduras estáticas e dinâmicas para examinar imagens no pipeline de CI/CD
  • Evite desvios e imponha a imutabilidade dos containers em funcionamento
  • Injeção de segredos sem persistência no disco

Referências
https://docs.aws.amazon.com/pt_br/AmazonECS/latest/bestpracticesguide/security-runtime.html

--

--

Victor BatistaX

Computer Scientist | Architect Cloud | AWS Community Builder - Security Topics