Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Segurança em Ambientes Conteinerizados

Segurança em Ambientes Conteinerizados

Desenvolvedores e equipes de operações (DevOps) avançaram para a utilização de containers e tecnologias de conteinerização de forma geral. Os invasores também estão alcançando essas tecnologias e encontrando falhas de segurança nelas. Nesta apresentação, veremos como podemos identificar problemas de segurança e vulnerabilidades em ambientes conteinerizados, incluindo auditoria de containers Docker e clusters Kubernetes. Também veremos cenários reais em que invasores comprometeram o ecossistema de Docker e Kubernetes para obter acesso a aplicações, dados e outros ativos.

Fernando Silva

August 24, 2021
Tweet

More Decks by Fernando Silva

Other Decks in Technology

Transcript

  1. Segurança em Ambientes Conteinerizados Ataque e Auditoria de Containers Docker

    e Clusters Kubernetes Fernando Silva fernando.poa.br
  2. Visão Geral • Introdução • Vetores de Ataque • Ecossistema

    de Segurança de Contêineres • Ataques Populares • Como Melhorar a Segurança
  3. O que é Docker? Docker é uma plataforma Open Source

    que permite criar, executar, testar e implantar aplicações distribuídas dentro de containers.
  4. Docker Engine Docker Engine abstrai as chamadas de SO das

    suas aplicações e utiliza as bibliotecas e binários já existentes
  5. Onde usar Docker? Containers Docker estão em todos os lugares:

    Linux, Windows, Data center, Cloud, Serverless, etc.
  6. Kubernetes Kubernetes (K8s) é um produto Open Source utilizado para

    automatizar a implantação, o dimensionamento e o gerenciamento de aplicativos em containers
  7. Kubernetes Ele agrupa containers que compõem uma aplicação em unidades

    lógicas para facilitar o gerenciamento e a descoberta de serviço. O Kubernetes se baseia em 15 anos de experiência na execução de containers em produção no Google, combinado com as melhores ideias e práticas da comunidade.
  8. Arquitetura Kubernetes Master: ponto de controle central que provê uma

    visão unificada do cluster. É a máquina mestre que recebe as configurações preestabelecidas através dos arquivos .yaml.
  9. Arquitetura Kubernetes Node: Uma máquina ativa (gerenciada pelo master), também

    conhecida como Minion. Dentro dele ficam os serviços necessários para rodar os pods. Os serviços em um node incluem Docker, Kubelet e kube-proxy.
  10. Arquitetura Kubernetes Pods: menores unidades implantadas que podem ser criadas,

    escaladas e manuseadas. É uma coleção lógica de contêineres que pertencem a uma aplicação.
  11. Arquitetura Kubernetes Obs: Um master pode gerenciar um ou mais

    nodes, um node pode conter um ou mais pods, e um pod pode conter um ou mais containers.
  12. Análise do Ecossistema de Segurança de Contêineres A arquitetura de

    segurança do container depende de três componentes: isolamento de processos a nível do usuário gerenciado pelo daemon do Docker, aplicação do mecanismo de isolamento a nível do kernel e segurança das operações de rede Principais vulnerabilidades e soluções: • API’s do Docker abertas; • Fuga de Contêineres; • Exploração do Kernel do Linux; • Segredos de Aplicações; • Imagens com Vulnerabilidades; • Ataque de Negação de Serviço (DoS).
  13. API’s do Docker abertas Mais de 15.000 servidores com API

    exposta em 2019 • Atualmente uma das principais falhas de segurança no uso de contêineres é a configuração do ambiente Docker Fonte: Shodan (https://www.shodan.io/report/PCx2VyPJ) - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS
  14. API’s do Docker abertas A execução do Docker em uma

    porta TCP pode causar sérios riscos à segurança dos ambientes conteinerizados: • É essencial que as comunicações sejam criptografadas adequadamente usando o SSL, oferecendo acesso ao daemon sobre TCP • Implementar regras iptables do firewall do kernel. • Utilizar TLS, tivado especificando o sinalizador tlsverify, apontando para certificado de CA confiável - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS
  15. Fuga de Contêineres Como todos os contêineres compartilham o mesmo

    kernel subjacente, qualquer código mal-intencionado pode comprometer todo o servidor - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Docker (https://docs.docker.com/get-started/)
  16. Fuga de Contêineres Como todos os contêineres compartilham o mesmo

    kernel subjacente, qualquer código mal-intencionado pode comprometer todo o servidor - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Docker (https://docs.docker.com/get-started/)
  17. Fuga de Contêineres Para evitar, reduzir os privilégios padrões dos

    contêineres: • Minimizar a execução de contêineres privilegiados • Cuidado com o mapeamento de diretórios • Informar um usuário para reduzir os privilégios que são aplicados dentro do contêiner: - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS docker run -u <username> -it <container-name> /bin/bash
  18. Exploração do Kernel do Linux Privilégios de root em um

    contêiner pode permitir que um invasor acesse esse contêiner e comprometa o servidor tendo acesso ao kernel - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Docker (https://docs.docker.com/get-started/)
  19. Exploração do Kernel do Linux Docker recomenda as seguintes precauções,

    para implementar um ambiente de nuvem seguro: • Configurar o AppArmor ou o SELinux • Contêineres devem estar em grupos separados • Docker Daemon não deve ser executado como root • Minimizar a comunicação entre container - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS
  20. Segredos de Aplicações Violação de segurança dos serviços e operações,

    através do acesso a chaves, tokens, usuários e senhas - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS
  21. Segredos de Aplicações Armazenamento de dados sensíveis, como senhas, chaves

    privadas, tokens e chaves de APIs, com Docker Secrets Management - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Docker (https://blog.docker.com/2017/02/docker-secrets-management/)
  22. Imagens com Vulnerabilidades Recentemente foi publicado um relatório onde mostra

    as 10 imagens mais populares e a quantidade de vulnerabilidades que as mesmas contêm - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Snyk (https://snyk.io/blog/top-ten-most-popular-docker-images-each-contain-at-least-30 -vulnerabilities/)
  23. Imagens com Vulnerabilidades Confiança de conteúdo ou Docker Content Trust

    (DCT) é um recurso do Docker que oferece uma camada adicional de segurança para os contêineres - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Docker (https://docs.docker.com/notary/running_a_service/)
  24. Ataque de Negação de Serviço (DoS) Na arquitetura de processamento

    baseada em contêineres, todos os contêineres compartilham recursos do kernel - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Docker (https://docs.docker.com/engine/docker-overview/) Servidor com 8 GB de memória e 4 contêineres em execução sem limitação de recursos
  25. Ataque de Negação de Serviço (DoS) Na arquitetura de processamento

    baseada em contêineres, todos os contêineres compartilham recursos do kernel - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS Fonte: Docker (https://docs.docker.com/engine/docker-overview/) Servidor com 8 GB de memória e 4 contêineres em execução sem limitação de recursos Um dos contêineres monopoliza os 8GB de memória, “derrubar” os outros
  26. Ataque de Negação de Serviço (DoS) Docker utiliza o cgroup,

    para oferecer uma maneira de contabilizar e limitar os recursos de cada contêiner. Por exemplo: - API Docker aberta - Fuga de contêineres - Exploração do kernel - Segredos de aplicações - Imagens vulneráveis - DoS docker -d -storage-opt dm.basesize=5G docker run -it -cpuset=0,1 -c 2 ubuntu:latest /bin/bash • Limitando o uso de CPU: • Limitando o uso de armazenamento: docker run -it -m=128mb ubuntu:latest /bin/bash • Definindo limite de memória para cada container:
  27. Nuvem da Tesla foi invadida e usada para minerar criptomoeda

    https://blog.redlock.io/cryptojacking-tesla
  28. 17 imagens Docker disponibilizadas por uma única conta durante 10

    meses no Docker Hub, com mais de 5 milhões de pulls, podem ter minerado US $90.000 em criptomoedas Monero.
  29. Grupo de hackers está sequestrando sistemas Docker com terminais de

    API expostos https://www.zdnet.com/article/a-hacking-group-is-hijacking-docker-systems-with-exposed-api-endpoints/
  30. Anatomia do ataque • verifica mais de 59.000 redes IP

    (netblocks) • identifica um host exposto • Inicia um container Alpine Linux OS • instala um minerador de criptomoeda • desinstala os agentes de monitoramento • encerra os processos associados às botnets rivais • criptografa e rouba arquivos de configuração • cria contas de backdoor, deixando as chaves SSH