SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Globalcode – Open4education
Protegendo Docker
Guilherme Oki
Globalcode – Open4education
Quem sou eu?
• SRE na Stone Pagamentos
• Apaixonado por open source
• Entusiasta da cultura e do desenvolvimento ágil
Globalcode – Open4education
O que é Docker?
"Docker is about running random crap
from the internet as root on your host"
Globalcode – Open4education
O que são containers?
Globalcode – Open4education
Por que eles precisam de proteção?
Globalcode – Open4education
O que precisa de proteção?
• Application
• Containers <-> Containers
• Containers <-> Hosts
Globalcode – Open4education
Como proteger?
Globalcode – Open4education
Capabilities
• Capabilities foram adicionadas no kernel há 15 anos atrás.
• Tenta dividir o poder de root
• Lista atuais capabilities no Docker
• getpcaps 1
• Algumas capabilities
• chow
• kill
• setuid
• dac_override
• Enabled by default
"nothing should need this. If your container need this, it's probably doing something
horrible."
Steve Grubb, security expert at Red Hat
Globalcode – Open4education
Quais capabilities eu realmente preciso no meu container?
• Entre em modo permissivo
• setsebool virt_sandbox_use_all_caps=0
• setenforce 0
• Execute seu container com todas as caps.
• docker run --cap-add all IMAGE ...
• Isto irá gerar uma mensagem sobre as capabilities usadas
• grep capability /var/log/audit/audit.log
"type=AVC msg=audit(1495655327.756:44343): avc: denied { syslog } for pid=5246
comm="rsyslogd" capability=34 scontext=system_u:system_r:container_t:s0:c795,c887
tcontext=system_u:system_r:container_t:s0:c795,c887 tclass=capability2 "
• cap_name[31]="cap_setfcap"
• cap_name[32]="cap_mac_override"
• cap_name[33]="cap_mac_admin"
• cap_name[34]="cap_syslog"
Globalcode – Open4education
Limite o recurso disponível
• Recurso do cgroups
• Memory
• --memory
• Swap
• --memory-swap
• CPU
• --cpu-shares
• DISK I/O
• --device-read-iops
• --device-write-iops
Globalcode – Open4education
Linux Security Modules
Globalcode – Open4education
SELinux
Globalcode – Open4education
SELinux
• Type Enforcement e Multi Category Security ( MCS )
• sandbox_lxc_process = "system_u:system_r:container_t:s0"
• cada container s0:c1, s0:c2, …
• Adicione este parâmetro no docker daemon para habilitar o SELinux
• --selinux-enabled
Globalcode – Open4education
AppArmor
• Profile padrão é o docker-default
• Para carregar o profile padrão
• --security-opt apparmor=docker-default
• Você pode gerenciar syscalls, capabilities e paths
• Você pode utilizar um gerador de profiles
• https://github.com/jessfraz/bane
Globalcode – Open4education
Use patch de segurança para o Kernel
Globalcode – Open4education
Seccomp
• Docker tem um profile padrão para seccomp
• Adicione este parâmetro para usar um custom profile
• --security-opt seccomp:custom.json
{
"defaultAction": "SCMP_ACT_ALLOW",
"syscalls": [
{
"name": "chown",
"action": "SCMP_ACT_ERRNO"
},
{
"name": "chmod",
"action": "SCMP_ACT_ERRNO"
}
]
}
Globalcode – Open4education
Como funciona uid/gid?
Globalcode – Open4education
Read only images
• docker run --read-only IMAGE
Globalcode – Open4education
Limpe seus container
• Dockerfile
• RUN for i in `find / -not ( -path /proc -prune ) -perm +6000 -type f`; chmod a-s $i;
done
Globalcode – Open4education
Escaneie seus containers
Globalcode – Open4education
Assine sua imagem
Globalcode – Open4education
Futuro - Rootless containers
• Runc executando como usuário não-privilegiado
• Alguns problemas com cgroups
• Alguns problemas com host network
Globalcode – Open4education
Futuro - Intel Clear Containers
• Pula diretamente para o Kernel Linux usando kvmtool
• In-place Kernel Load
• Suporte para Docker Containers
• Boot em 0.2 seconds
• Slim Kernel
Globalcode – Open4education
Dúvidas?
Globalcode – Open4education
Obrigado! :-)
Protegendo Docker

Weitere ähnliche Inhalte

Was ist angesagt?

Docker na vida real
Docker na vida realDocker na vida real
Docker na vida realFernando Ike
 
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...Tchelinux
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o DockerWebSix
 
TDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhaTDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhatdc-globalcode
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoSérgio Lima
 
InfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda Parte
InfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda ParteInfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda Parte
InfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda ParteCarlos Carvalho
 
Verdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerVerdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerLuís Bianchin
 
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...tdc-globalcode
 
Docker Swarm Cluster
Docker Swarm ClusterDocker Swarm Cluster
Docker Swarm ClusterFernando Ike
 
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?tdc-globalcode
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)Wellington Silva
 
Vagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoVagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoDiogo Lucas
 
TDC2018SP | Trilha Containers - Docker Swarm - Os problemas
TDC2018SP | Trilha Containers - Docker Swarm - Os problemasTDC2018SP | Trilha Containers - Docker Swarm - Os problemas
TDC2018SP | Trilha Containers - Docker Swarm - Os problemastdc-globalcode
 
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers tdc-globalcode
 
Dicas de como entrar no mundo do DevSecOps
Dicas de como entrar no mundo do DevSecOpsDicas de como entrar no mundo do DevSecOps
Dicas de como entrar no mundo do DevSecOpsGDGFoz
 
Docker 1.12 - Swarm Mode
Docker 1.12 - Swarm ModeDocker 1.12 - Swarm Mode
Docker 1.12 - Swarm ModeRafael Gomes
 
Escalando Aplicações com Redis
Escalando Aplicações com RedisEscalando Aplicações com Redis
Escalando Aplicações com RedisWaldyr Felix
 
Kubecon EU 2019 Remarks
Kubecon EU 2019 RemarksKubecon EU 2019 Remarks
Kubecon EU 2019 RemarksRicardo Katz
 

Was ist angesagt? (20)

Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o Docker
 
TDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhaTDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unha
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimento
 
InfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda Parte
InfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda ParteInfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda Parte
InfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda Parte
 
Verdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerVerdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre Docker
 
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
 
Docker Swarm Cluster
Docker Swarm ClusterDocker Swarm Cluster
Docker Swarm Cluster
 
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)
 
Vagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoVagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolso
 
TDC2018SP | Trilha Containers - Docker Swarm - Os problemas
TDC2018SP | Trilha Containers - Docker Swarm - Os problemasTDC2018SP | Trilha Containers - Docker Swarm - Os problemas
TDC2018SP | Trilha Containers - Docker Swarm - Os problemas
 
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
 
Dicas de como entrar no mundo do DevSecOps
Dicas de como entrar no mundo do DevSecOpsDicas de como entrar no mundo do DevSecOps
Dicas de como entrar no mundo do DevSecOps
 
Apresentação docker
Apresentação dockerApresentação docker
Apresentação docker
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
 
Docker 1.12 - Swarm Mode
Docker 1.12 - Swarm ModeDocker 1.12 - Swarm Mode
Docker 1.12 - Swarm Mode
 
Escalando Aplicações com Redis
Escalando Aplicações com RedisEscalando Aplicações com Redis
Escalando Aplicações com Redis
 
Kubecon EU 2019 Remarks
Kubecon EU 2019 RemarksKubecon EU 2019 Remarks
Kubecon EU 2019 Remarks
 

Ähnlich wie Protegendo Docker

Seguranca - docker
Seguranca - dockerSeguranca - docker
Seguranca - dockerStefani Lima
 
Aplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com DockerAplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com DockerWellington Silva
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginnersRafael Chiavegatto
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Javatdc-globalcode
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting dockerRafael Gomes
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesRodrigo Cândido da Silva
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucaoFernando Ike
 
TDC2019Floripa - Não existe container de prata
TDC2019Floripa - Não existe container de prataTDC2019Floripa - Não existe container de prata
TDC2019Floripa - Não existe container de prataBruno Pedroso
 
Testadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de DockerTestadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de DockerStefan Teixeira
 
Containers em produção!
Containers em produção!Containers em produção!
Containers em produção!Evandro Couto
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes Rhuan Karlus Silva
 
Docker Everywhere - MTAC Week
Docker Everywhere - MTAC WeekDocker Everywhere - MTAC Week
Docker Everywhere - MTAC WeekLuiz Carlos Faria
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfdadalt1
 
12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com DockerWellington Silva
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao DockerRafael Dutra
 

Ähnlich wie Protegendo Docker (20)

Seguranca - docker
Seguranca - dockerSeguranca - docker
Seguranca - docker
 
Aplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com DockerAplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com Docker
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginners
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 
Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Java
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting docker
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
TDC2019Floripa - Não existe container de prata
TDC2019Floripa - Não existe container de prataTDC2019Floripa - Não existe container de prata
TDC2019Floripa - Não existe container de prata
 
IC-Testes Invasao
IC-Testes InvasaoIC-Testes Invasao
IC-Testes Invasao
 
Docker + Django
Docker + DjangoDocker + Django
Docker + Django
 
Testadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de DockerTestadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de Docker
 
.Net Core + Docker
.Net Core +  Docker.Net Core +  Docker
.Net Core + Docker
 
Containers em produção!
Containers em produção!Containers em produção!
Containers em produção!
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
 
Docker Everywhere - MTAC Week
Docker Everywhere - MTAC WeekDocker Everywhere - MTAC Week
Docker Everywhere - MTAC Week
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com Docker
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao Docker
 

Protegendo Docker