Slide 1

Slide 1 text

Segurança e hacking de containers Docker Fernando Silva @FernandoDebrand

Slide 2

Slide 2 text

Sobre mim! Fernando Silva Analista de Desenvolvimento

Slide 3

Slide 3 text

Visão Geral - Estatísticas - Preocupações com segurança ao usar Docker - Práticas de segurança - Ferramentas de análise de segurança e hacking

Slide 4

Slide 4 text

O que é Docker? VMs Containers

Slide 5

Slide 5 text

Estatísticas Pesquisa realizada entre 14 e 25 de agosto 2017 36 participantes

Slide 6

Slide 6 text

Já utilizou Docker em produção?

Slide 7

Slide 7 text

Verifica vulnerabilidades nas imagens utilizadas?

Slide 8

Slide 8 text

∎ Processo de análise manual, analisando o dockerfile e suas dependências ∎ Autenticação, permissões e qualquer tipo de comunicação com o host é mapeada ∎ Clair, TwistLock e Aqua ∎ Mais de 80% não verifica Como verificar vulnerabilidades?

Slide 9

Slide 9 text

Preocupações com segurança ao usar Docker

Slide 10

Slide 10 text

Ao contrário de uma VM, o kernel é compartilhado entre todos os containers e o host, aumentando a importância de qualquer vulnerabilidade que explore o kernel. Kernel exploits (exploração do kernel)

Slide 11

Slide 11 text

Como todos os containers compartilham recursos do kernel, se um container pode monopolizar o acesso a certos recursos, incluindo memória, ou até IDs de usuário (UIDs), pode faltar recursos para outros containers, resultando em uma negação de serviço (DoS). Denial-of-service attacks (ataque de negação de serviço)

Slide 12

Slide 12 text

Um invasor que tem acesso a um container não pode ter acesso a outros containers ou ao host. Se você usa root no container, você será root no host. Container breakouts (invasão de container)

Slide 13

Slide 13 text

Quando um container acessa um banco de dados ou serviço, provavelmente exigirá credenciais, como um token ou mesmo usuário e senha. Se um invasor tiver acesso ao container terá acesso a estes dados. Application secrets (segredos de aplicações)

Slide 14

Slide 14 text

Como você sabe que as imagens que você está usando são seguras, não foram adulteradas, e vêm de onde elas afirmam vir? Poisoned images (imagens “envenenadas”)

Slide 15

Slide 15 text

Poisoned images (imagens “envenenadas”) https://hub.docker.com/r/fernandosilva/nginx-trojanized/

Slide 16

Slide 16 text

Poisoned images (imagens “envenenadas”)

Slide 17

Slide 17 text

Como hackers estão explorando conteinerização

Slide 18

Slide 18 text

https://medium.com/@FernandoDebrand/docker-hackers-conteinerizacao-a9e2b267676a 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.

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

https://github.com/docker/hub-feedback/issues/1554

Slide 21

Slide 21 text

https://blog.aquasec.com/cryptocurrency-miners-abusing-containers-anatomy-of-an-attempted-attack Anatomia dos ataques

Slide 22

Slide 22 text

Anatomia dos ataques

Slide 23

Slide 23 text

Anatomia dos ataques

Slide 24

Slide 24 text

Anatomia dos ataques

Slide 25

Slide 25 text

API do Docker Aberta na Internet?

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Nuvem da Tesla foi invadida e usada para minerar criptomoeda https://blog.redlock.io/cryptojacking-tesla

Slide 29

Slide 29 text

Tesla é vítima de cryptojacking Os hackers se infiltraram no console Kubernetes da Tesla, que não era protegido por senha. Em um pod Kubernetes, as credenciais de acesso foram expostas ao ambiente AWS da Tesla, que continha um bucket do Amazon S3 (Amazon Simple Storage Service) que tinha dados confidenciais, como telemetria.

Slide 30

Slide 30 text

Script de mineração de criptomoeda em execução no pod Kubernetes da Tesla

Slide 31

Slide 31 text

Práticas de segurança

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

Como não devemos armazenar dados sensíveis

Slide 34

Slide 34 text

Não use variáveis de ambiente ou incorpore na imagem de container https://wycd.net/posts/2017-02-21-ibm-whole-cluster-privilege-escalation-disclosure.html

Slide 35

Slide 35 text

Docker Secrets Management

Slide 36

Slide 36 text

O Docker Secrets funciona como um cofre onde você pode colocar coisas sensíveis lá e só quem tem a chave do cofre consegue utilizar, no caso essa chave é designada aos nós dos serviços que a chave for atribuída. Docker Secrets Management http://www.mundodocker.com.br/docker-secrets/

Slide 37

Slide 37 text

Docker Secrets Management

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

Vault HashiCorp

Slide 40

Slide 40 text

∎ Certifique-se de que seu host e a configuração do Docker engine sejam seguras ∎ Mantenha seu SO atualizado ∎ Impor controle de acesso para evitar operações indesejadas, tanto no host como nos containers, usando ferramentas como SecComp, AppArmor ou SELinux Proteja seu host

Slide 41

Slide 41 text

∎ Tomar cuidado ao executar como root ∎ Crie namespaces isolados ∎ Limitar privilégios ao máximo ∎ Verifique se o container é confiável (verifique a imagem) Redução dos privilégios

Slide 42

Slide 42 text

∎ Limite os recursos no kernel ou no container ∎ Fazer testes de carga antes de pôr em produção ∎ Implemente monitoramento e alertas Alto uso de recursos do container

Slide 43

Slide 43 text

∎ De onde veio? ∎ Você confia no criador? ∎ Quais políticas de segurança está usando? ∎ Identificação do autor ∎ Não use se não confia na fonte ∎ Use um servidor Docker Registry próprio ∎ Verifique a assinatura da imagem Autenticidade da imagem

Slide 44

Slide 44 text

∎ Inspecionar as imagens ∎ Atualize para pegar novos patches de segurança ∎ Utilize uma ferramenta de scanner de vulnerabilidades ∎ Integre esse scanner como etapa do seu CI/CD Vulnerabilidades de segurança presentes na imagem

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

TLS precisa ser ativado especificando o sinalizador tlsverify e apontando o tlscacert do Docker para um certificado de CA confiável. Há um processo passo-a-passo explicado como proteger em https://docs.docker.com/engine/security/https. Proteja o soquete do daemon do Docker

Slide 47

Slide 47 text

Ferramentas de análise de segurança e hacking

Slide 48

Slide 48 text

Docker Security Scanning

Slide 49

Slide 49 text

hub.docker.com

Slide 50

Slide 50 text

store.docker.com

Slide 51

Slide 51 text

cloud.docker.com

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

Discover, Analyze, and Certify Container Images anchore.io

Slide 56

Slide 56 text

imagelayers.io

Slide 57

Slide 57 text

microbadger.com

Slide 58

Slide 58 text

No content

Slide 59

Slide 59 text

Open source project for the static analysis of vulnerabilities in appc and docker containers. github.com/coreos/clair

Slide 60

Slide 60 text

Online automatic analysis quay.io

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

Container Security for Docker, Kubernetes and Beyond twistlock.com

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

Aqua Container Security Platform aquasec.com

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

No content

Slide 67

Slide 67 text

https://blog.aquasec.com/aqua-microscanner-free-image-vulnerability-scanning-plug-in-for-jenkins

Slide 68

Slide 68 text

https://blog.aquasec.com/kube-hunter-kubernetes-penetration-testing

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

No content

Slide 71

Slide 71 text

No content

Slide 72

Slide 72 text

No content

Slide 73

Slide 73 text

The Behavioral Activity Monitor With Container Support github.com/draios/falco

Slide 74

Slide 74 text

Audit your images, assessing both running containers and cold images open-scap.org

Slide 75

Slide 75 text

github.com/kost/dockscan

Slide 76

Slide 76 text

Docker Scan github.com/cr0hn/dockerscan

Slide 77

Slide 77 text

Exemplo DockerScan

Slide 78

Slide 78 text

Exemplo DockerScan

Slide 79

Slide 79 text

Exemplo DockerScan

Slide 80

Slide 80 text

Mais conteúdo sobre... Docker Security - Play Safe scaledocker.com cisecurity.org/benchmark/docker

Slide 81

Slide 81 text

Mais conteúdo sobre... oreilly.com/docker-security docker.com/docker-security

Slide 82

Slide 82 text

Referências / Links ● https://gianarb.it/blog/Docker-Security-Benchmark ● https://sysdig.com/blog/20-docker-security-tools ● https://sysdig.com/blog/7-docker-security-vulnerabilities ● http://techfree.com.br/2015/06/seguranca-no-docker ● https://blog.docker.com/2016/05/docker-security-scanning ● https://blog.docker.com/2015/05/understanding-docker-security-and-best-practices ● http://rancher.com/container-security-tools-breakdown ● https://medium.com/enterstone/protegendo-docker-f95a831a31f3 ● https://securitytraning.com/docker-containers-security ● https://www.tripwire.com/state-of-security/featured/security-risks-consider-deploying-container s-docker ● https://blog.sqreen.io/docker-security ● https://blog.docker.com/2017/02/docker-secrets-management

Slide 83

Slide 83 text

OBRIGADO! fernando.poa.br speakerdeck.com/fernandodebrando Perguntas? VENHA FAZER PARTE DO NOSSO TIME king.host/talentos