SlideShare a Scribd company logo
Is it safe to run
applications in
Linux Containers?
Jérôme Petazzoni
@jpetazzo
Docker Inc.
@docker
Is it safe to run
applications in
Linux Containers?
And, can Docker do
anything about it?
Question:
Is it safe to run
applications in
Linux Containers?
...
Yes
/* shocker: docker PoC VMM-container breakout (C) 2014 Sebastian Krahmer
*
* Demonstrates that any given docker image someone is asking
* you to run in your docker setup can access ANY file on your host,
* e.g. dumping hosts /etc/shadow or other sensitive info, compromising
* security of the host and any other docker VM's on it.
*
* docker using container based VMM: Sebarate pid and net namespace,
* stripped caps and RO bind mounts into container's /. However
* as its only a bind-mount the fs struct from the task is shared
* with the host which allows to open files by file handles
* (open_by_handle_at()). As we thankfully have dac_override and
* dac_read_search we can do this. The handle is usually a 64bit
* string with 32bit inodenumber inside (tested with ext4).
* Inode of / is always 2, so we have a starting point to walk
* the FS path and brute force the remaining 32bit until we find the
* desired file (It's probably easier, depending on the fhandle export
* function used for the FS in question: it could be a parent inode# or
* the inode generation which can be obtained via an ioctl).
* [In practise the remaining 32bit are all 0 :]
*
* tested with docker 0.11 busybox demo image on a 3.11 kernel:
*
* docker run -i busybox sh
*
* seems to run any program inside VMM with UID 0 (some caps stripped);
Wait
No!
Docker has changed its security status to
It's complicated
Who am I? Why am I here?
 Jérôme Petazzoni (@jpetazzo)
- Grumpy French Linux DevOps
 Operated dotCloud PAAS
for 3+ years
- hosts arbitrary code for arbitrary users
- all services, all apps, run in containers
- no major security issue yet (fingers crossed)
 Containerize all the things!
- VPN-in-Docker, KVM-in-Docker,
Xorg-in-Docker, Docker-in-Docker...
What are those “containers” ?
(1/3)
 Technically: ~chroot on steroids
- a container is a set of processes
(running on top of common kernel)
- isolated* from the rest of the machine
(cannot see/affect/harm host or other containers)
- using namespaces to have private view of the system
(network interfaces, PID tree, mountpoints...)
- and cgroups to have metered/limited/reserved resources
(to mitigate “bad neighbor” effect)
*Limitations may apply.
What are those “containers” ?
(2/3)
 From a distance: looks like a VM
- I can SSH into my container
- I can have root access in it
- I can install packages in it
- I have my own eth0 interface
- I can tweak routing table, iptables rules
- I can mount filesystems
- etc.
What are those “containers” ?
(3/3)
 Lightweight, fast, disposable...
virtual environments
- boot in milliseconds
- just a few MB of intrinsic disk/memory usage
- bare metal performance is possible
 The new way to build, ship, deploy,
run your apps!
Why is this a hot topic?
 Containers:
have been around for decades
 LXC (Linux Containers):
have been around for years
So, what?
Blame
Docker
Why is this a hot topic?
 Containers:
have been around for decades
 LXC (Linux Containers):
have been around for years
 Tools like Docker have commoditized LXC
(i.e. made it very easy to use)
 Everybody wants to deploy containers now
 But, oops, LXC wasn't made for security
 We want containers, and we want them now;
how can we do that safely?
Some
inspirational
quotes
“LXC is not yet secure.
If I want real security
I will use KVM.”
—Dan Berrangé
(famous LXC hacker)
This was in 2011.
The Linux Kernel has changed a tiny little bit since then.
“From security point
of view lxc is terrible and
may not be consider as
security solution.”
—someone on Reddit
(original spelling and grammar)
Common opinion among security experts and paranoid people.
To be fair, they have to play safe & can't take risks.
“Basically containers are
not functional as security
containers at present, in
that if you have root on
a container you have
root on the whole box.”
—Gentoo Wiki
That's just plain false, or misleading, and we'll see why.
“Containers do not
contain.”
—Dan Walsh
(Mr SELinux)
This was earlier this year,
and this guy knows what he's talking about.
Are we in trouble?
“For the fashion of Minas Tirith was
such that it was built on seven
levels, each delved into a hill,
and about each was set a wall,
and in each wall was a gate.”
—J.R.R. Tolkien
(also quoted in VAX/VMS Internals and Data Structures, ca. 1980)
Keyword:
levels
Let's review one of those quotes:
“If you have root on a container
you have root on the whole box.”
First things first:
just don't give root in the container
If you really have to give root,
give looks-like-root
If that's not enough, give root
but build another wall
Root in
the host
Root in the
container
Uruks
(intruders)
There are multiple threat models
 Regular applications
- web servers, databases, caches, message queues, ...
 System services (high level)
- logging, remote access, periodic command execution, ...
 System services (low level)
- manage physical devices, networking, filesystems, ...
 Kernel
- security policies, drivers, ...
 The special case of immutable infrastructure
Regular
applications
Regular applications
 Apache, MySQL, PostgreSQL, MongoDB,
Redis, Cassandra, Hadoop, RabbitMQ...
 Virtually all your programs in any language
(services/web services, workers, everything!)
 They never ever need root privileges
(except to install packages)
 Don't run them as root! Ever!
Regular applications
 Risk: they run arbitrary code
- vector: by definition, they are arbitrary code
- vector: security breach causes execution of malicious code
 Fix: nothing
- by definition, we are willing to execute arbitrary code here
 Consequence:
assume those apps can try
anything to break out
Regular applications
 Risk: escalate from non-root to root
- vector: vulnerabilities in SUID binaries
 Fix: defang SUID binaries
- remove them
- remove suid bit
- mount filesystem with nosuid
 Docker:
- you can remove SUID binaries easily
- doesn't support nosuid mount (but trivial to add)
Regular applications
 Risk: execute arbitrary kernel code
- vector: bogus syscall (e.g. vmsplice* in 2008)
 Fix: limit available syscalls
- seccomp-bpf = whitelist/blacklist syscalls
- Docker: seccomp available in LXC driver; not in libcontainer
 Fix: run stronger kernels
- GRSEC is a good idea (stable patches for 3.14 since July 4th)
- update often (i.e. have efficient way to roll out new kernels)
- Docker: more experiments needed
*More details about that: http://lwn.net/Articles/268783/
Regular applications
 Risk: leak to another container
- vector: bug in namespace code; filesystem leak
(like the one showed in the beginning of this talk!)
 Fix: user namespaces
- map UID in container to a different UID outside
- two containers run a process with UID 1000,
but it's 14298 and 15398 outside
- Docker: PR currently being reviewed
 Fix: security modules (e.g. SELinux)
- assign different security contexts to containers
- those mechanisms were designed to isolate!
- Docker: SELinux integration; AppArmor in the works
System services
(high level)
System services (high level)
 SSH, cron, syslog...
 You use/need them all the time
 Bad news: they typically run as root
 Good news: they don't really need root
 Bad news: it's hard to run them as non-root
 Good news: they are not arbitrary code
System services (high level)
 Risk: running arbitrary code as root
- vector: malformed data or similar
(note: risk is pretty low for syslog/cron; much higher for SSH)
 Fix: isolate sensitive services
- run SSH on bastion host, or in a VM
- note: this is not container-specific
(if someone hacks into your SSH server,
you'll have a bad time anyway)
System services (high level)
 Risk: messing with /dev
- vector: malicious code
 Fix: “devices” control group
- whitelist/blacklist devices
- fine-grained: can allow only read, write, none, or both
- fine-grained: can specify major+minor number of device
 Docker: ✓
- sensible defaults
- support for fine-grained access to devices in the works
System services (high level)
 Risk: use of root calls (mount, chmod, iptables...)
- vector: malicious code
 Fix: capabilities
- break down “root” into many permissions
- e.g. CAP_NET_ADMIN (network configuration)
- e.g. CAP_NET_RAW (generate and sniff traffic)
- e.g. CAP_SYS_ADMIN (big can of worms )☹
- see capabilities(7)
 Docker: ✓
- sensible default capabilities
- but: CAP_SYS_ADMIN! (see next slide)
Interlude: CAP_SYS_ADMIN
Operations controlled by CAP_SYS_ADMIN...
 quotactl, mount, umount, swapon, swapoff
 sethostname, setdomainname
 IPC_SET, IPC_RMID on arbitrary System V IPC
 perform operations on trusted and security
Extended Attributes
 set realtime priority
(ioprio_set + IOPRIO_CLASS_RT)
 create new namespaces
(clone and unshare + CLONE_NEWNS)
System services (high level)
 Risk: messing with /proc, /sys
- vector: malicious code
 Fix: prevent unauthorized access control
- Mandatory Access Control (AppArmor, SELinux)
- remount read-only, then drop CAP_SYS_ADMIN to prevent
remount
 Fix: wider implementation of namespaces
- some parts of procfs/sysfs are “namespace-aware”
- some aren't, but can be fixed (by writing kernel code)
 Docker: ✓
- locks down /proc and /sys
System services (high level)
 Risk: leaking with UID 0
- vector: malicious code
 Fix: user namespaces
- already mentioned earlier
- UID 0 in the container is mapped to some random UID outside
- you break out: you're not root
- you manage to issue weird syscalls: they're done as
unprivileged UID
 Docker: work in progress
 Caveat: user namespaces are still new.
We have to see how they behave with that!
System services
(low level)
System services (low level)
 Device management (keyboard, mouse,
screen), network and firewall config,
filesystem mounts...
 You use/need some of them all the time
 But you don't need any of them in containers
- physical device management is done by the host
- network configuration and filesystems are setup by the host
 Exceptions:
- custom mounts (FUSE)
- network appliances
System services (low level)
 Risk: running arbitrary code as root
- vector: malformed data or similar
 Fix: isolate sensitive functions
- “one-shot” commands can be fenced in privileged context
(think “sudo” but without even requiring “sudo”)
- everything else (especially processes that are long-running,
or handle arbitrary input) runs in non-privileged context
- works well for FUSE, some VPN services
 Docker: provides fine-grained sharing
- e.g. docker run --net container:… for network namespace
- nsenter for other out-of-band operations
System services (low level)
 Risk: run arbitrary code with full privileges
- vector: needs a process running with full privileges (rare!)
- vector: malformed data, unchecked input… classic exploit
 Fix: treat it as “kernel”
- we'll see that immediately in the next section
Kernel
Kernel
 Drivers
- can talk to the hardware, so can do pretty much anything
- except: virtualize the bus and use e.g. driver domains (Xen)
 Network stacks
- this probably has to live into the kernel for good performance
- except: DPDK, OpenOnload...
(networking stacks in userspace)
 Security policies
- by definition, they control everything else
- except: there might be nested security contexts some day
Kernel
 Risk: run arbitrary code with absolute
privileges
 Fix: ?
Reality check:
if you run something which by
definition needs full control over
hardware or kernel, containers
are not going to make it secure.
Please stop trying to shoot
yourself in the foot safely.
Reality check:
if you run something which by
definition needs full control over
hardware or kernel, containers
are not going to make it secure.
Please stop trying to shoot
yourself in the foot safely.
Kernel
 Risk:
run arbitrary code with absolute privileges
 Fix:
give it its own kernel and (virtual) hardware
- i.e. run it in a virtual machine
- that VM can run in a container
- that VM can hold a container
- run a privileged container, in Docker, in a VM,
while the VM runs in a container, in a Docker
https://github.com/jpetazzo/docker2docker
- inb4 xzibit meme
Immutable
immutable
infrastructure
Immutable immutable
infrastructure
 New rule:
the whole container is read-only
 Compromise:
if we must write, write to a noexec area
 Scalability has never been easier
(if totally read-only)
 It's even harder for malicious users
to do evil things
Recap (in no specific order!)
 don't run things as root
 drop capabilities
 enable user namespaces
 get rid of shady SUID binaries
 enable SELinux (or AppArmor)
 use seccomp-bpf
 get a GRSEC kernel
 update kernels often
 mount everything read-only
 ultimately, fence things in VMs
Recap (with Docker status)
 don't run things as root ☑ (you do it!)
 drop capabilities ☑ (but CAP_SYS_ADMIN!)
 enable user namespaces ☑ (work in progress)
 get rid of shady SUID binaries ☑ (but not enforced yet)
 enable SELinux (or AppArmor) ☑ (SELinux)
 use seccomp-bpf ☑ (on LXC driver)
 get a GRSEC kernel ☑ (to be confirmed)
 update kernels often ☑ (not Docker's job)
 mount everything read-only ☐ (not yet)
 ultimately, fence things in VMs ☑ (easy to do)
Recap (improvements needed)
 don't run things as root ☒ (you do it!)
 drop capabilities ☒ (but CAP_SYS_ADMIN!)
 enable user namespaces ☒ (work in progress)
 get rid of shady SUID binaries ☒ (but not enforced yet)
 enable SELinux (or AppArmor) ☒ (SELinux)
 use seccomp-bpf ☒ (on LXC driver)
 get a GRSEC kernel ☒ (to be confirmed)
 update kernels often ☒ (not Docker's job)
 mount everything read-only ☒ (not yet)
 ultimately, fence things in VMs ☒ (easy to do)
Thank you!
Questions?

More Related Content

What's hot

Docker Containers Deep Dive
Docker Containers Deep DiveDocker Containers Deep Dive
Docker Containers Deep Dive
Will Kinard
 
Introduction to Docker - VIT Campus
Introduction to Docker - VIT CampusIntroduction to Docker - VIT Campus
Introduction to Docker - VIT Campus
Ajeet Singh Raina
 
Docker networking Tutorial 101
Docker networking Tutorial 101Docker networking Tutorial 101
Docker networking Tutorial 101
LorisPack Project
 
virtualization-vs-containerization-paas
virtualization-vs-containerization-paasvirtualization-vs-containerization-paas
virtualization-vs-containerization-paas
rajdeep
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
dotCloud
 
Everything You Need To Know About Persistent Storage in Kubernetes
Everything You Need To Know About Persistent Storage in KubernetesEverything You Need To Know About Persistent Storage in Kubernetes
Everything You Need To Know About Persistent Storage in Kubernetes
The {code} Team
 
Dockers and kubernetes
Dockers and kubernetesDockers and kubernetes
Dockers and kubernetes
Dr Ganesh Iyer
 
Evolution of containers to kubernetes
Evolution of containers to kubernetesEvolution of containers to kubernetes
Evolution of containers to kubernetes
Krishna-Kumar
 
Kubernetes 101 for Beginners
Kubernetes 101 for BeginnersKubernetes 101 for Beginners
Kubernetes 101 for Beginners
Oktay Esgul
 
Kubernetes Concepts And Architecture Powerpoint Presentation Slides
Kubernetes Concepts And Architecture Powerpoint Presentation SlidesKubernetes Concepts And Architecture Powerpoint Presentation Slides
Kubernetes Concepts And Architecture Powerpoint Presentation Slides
SlideTeam
 
Introduction of Kubernetes - Trang Nguyen
Introduction of Kubernetes - Trang NguyenIntroduction of Kubernetes - Trang Nguyen
Introduction of Kubernetes - Trang Nguyen
Trang Nguyen
 
Understanding container security
Understanding container securityUnderstanding container security
Understanding container security
John Kinsella
 
Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...
Jérôme Petazzoni
 
Docker introduction & benefits
Docker introduction & benefitsDocker introduction & benefits
Docker introduction & benefits
Amit Manwade
 
Docker storage drivers by Jérôme Petazzoni
Docker storage drivers by Jérôme PetazzoniDocker storage drivers by Jérôme Petazzoni
Docker storage drivers by Jérôme Petazzoni
Docker, Inc.
 
Virtualization Vs. Containers
Virtualization Vs. ContainersVirtualization Vs. Containers
Virtualization Vs. Containers
actualtechmedia
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
Martin Danielsson
 
Containers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red HatContainers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red Hat
Amazon Web Services
 
Multi Stage Docker Build
Multi Stage Docker Build Multi Stage Docker Build
Multi Stage Docker Build
Prasenjit Sarkar
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
DuckDuckGo
 

What's hot (20)

Docker Containers Deep Dive
Docker Containers Deep DiveDocker Containers Deep Dive
Docker Containers Deep Dive
 
Introduction to Docker - VIT Campus
Introduction to Docker - VIT CampusIntroduction to Docker - VIT Campus
Introduction to Docker - VIT Campus
 
Docker networking Tutorial 101
Docker networking Tutorial 101Docker networking Tutorial 101
Docker networking Tutorial 101
 
virtualization-vs-containerization-paas
virtualization-vs-containerization-paasvirtualization-vs-containerization-paas
virtualization-vs-containerization-paas
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Everything You Need To Know About Persistent Storage in Kubernetes
Everything You Need To Know About Persistent Storage in KubernetesEverything You Need To Know About Persistent Storage in Kubernetes
Everything You Need To Know About Persistent Storage in Kubernetes
 
Dockers and kubernetes
Dockers and kubernetesDockers and kubernetes
Dockers and kubernetes
 
Evolution of containers to kubernetes
Evolution of containers to kubernetesEvolution of containers to kubernetes
Evolution of containers to kubernetes
 
Kubernetes 101 for Beginners
Kubernetes 101 for BeginnersKubernetes 101 for Beginners
Kubernetes 101 for Beginners
 
Kubernetes Concepts And Architecture Powerpoint Presentation Slides
Kubernetes Concepts And Architecture Powerpoint Presentation SlidesKubernetes Concepts And Architecture Powerpoint Presentation Slides
Kubernetes Concepts And Architecture Powerpoint Presentation Slides
 
Introduction of Kubernetes - Trang Nguyen
Introduction of Kubernetes - Trang NguyenIntroduction of Kubernetes - Trang Nguyen
Introduction of Kubernetes - Trang Nguyen
 
Understanding container security
Understanding container securityUnderstanding container security
Understanding container security
 
Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...
 
Docker introduction & benefits
Docker introduction & benefitsDocker introduction & benefits
Docker introduction & benefits
 
Docker storage drivers by Jérôme Petazzoni
Docker storage drivers by Jérôme PetazzoniDocker storage drivers by Jérôme Petazzoni
Docker storage drivers by Jérôme Petazzoni
 
Virtualization Vs. Containers
Virtualization Vs. ContainersVirtualization Vs. Containers
Virtualization Vs. Containers
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
Containers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red HatContainers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red Hat
 
Multi Stage Docker Build
Multi Stage Docker Build Multi Stage Docker Build
Multi Stage Docker Build
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
 

Similar to Docker, Linux Containers (LXC), and security

Docker, Linux Containers, and Security: Does It Add Up?
Docker, Linux Containers, and Security: Does It Add Up?Docker, Linux Containers, and Security: Does It Add Up?
Docker, Linux Containers, and Security: Does It Add Up?
Jérôme Petazzoni
 
LXC, Docker, security: is it safe to run applications in Linux Containers?
LXC, Docker, security: is it safe to run applications in Linux Containers?LXC, Docker, security: is it safe to run applications in Linux Containers?
LXC, Docker, security: is it safe to run applications in Linux Containers?
Jérôme Petazzoni
 
Lightweight Virtualization in Linux
Lightweight Virtualization in LinuxLightweight Virtualization in Linux
Lightweight Virtualization in Linux
Sadegh Dorri N.
 
How Secure Is Your Container? ContainerCon Berlin 2016
How Secure Is Your Container? ContainerCon Berlin 2016How Secure Is Your Container? ContainerCon Berlin 2016
How Secure Is Your Container? ContainerCon Berlin 2016
Phil Estes
 
Docker London: Container Security
Docker London: Container SecurityDocker London: Container Security
Docker London: Container Security
Phil Estes
 
Docker Security
Docker SecurityDocker Security
Docker Security
BladE0341
 
Containers and workload security an overview
Containers and workload security an overview Containers and workload security an overview
Containers and workload security an overview
Krishna-Kumar
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014
Carlo Bonamico
 
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Codemotion
 
Hack the whale
Hack the whaleHack the whale
Hack the whale
Marco Ferrigno
 
Tokyo OpenStack Summit 2015: Unraveling Docker Security
Tokyo OpenStack Summit 2015: Unraveling Docker SecurityTokyo OpenStack Summit 2015: Unraveling Docker Security
Tokyo OpenStack Summit 2015: Unraveling Docker Security
Phil Estes
 
Unraveling Docker Security: Lessons From a Production Cloud
Unraveling Docker Security: Lessons From a Production CloudUnraveling Docker Security: Lessons From a Production Cloud
Unraveling Docker Security: Lessons From a Production Cloud
Salman Baset
 
Docker Ecosystem on Azure
Docker Ecosystem on AzureDocker Ecosystem on Azure
Docker Ecosystem on Azure
Patrick Chanezon
 
Dockers zero to hero
Dockers zero to heroDockers zero to hero
Dockers zero to hero
Nicolas De Loof
 
Unix Security
Unix SecurityUnix Security
Unix Security
replay21
 
Hands on introduction to docker security for docker newbies
Hands on introduction to docker security for docker newbiesHands on introduction to docker security for docker newbies
Hands on introduction to docker security for docker newbies
Yigal Elefant
 
Drupalcamp es 2013 drupal with lxc docker and vagrant
Drupalcamp es 2013  drupal with lxc docker and vagrant Drupalcamp es 2013  drupal with lxc docker and vagrant
Drupalcamp es 2013 drupal with lxc docker and vagrant Ricardo Amaro
 
Agile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: IntroductionAgile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: Introduction
Agile Partner S.A.
 
Secure container: Kata container and gVisor
Secure container: Kata container and gVisorSecure container: Kata container and gVisor
Secure container: Kata container and gVisor
Ching-Hsuan Yen
 
Introduction to docker security
Introduction to docker securityIntroduction to docker security
Introduction to docker security
Walid Ashraf
 

Similar to Docker, Linux Containers (LXC), and security (20)

Docker, Linux Containers, and Security: Does It Add Up?
Docker, Linux Containers, and Security: Does It Add Up?Docker, Linux Containers, and Security: Does It Add Up?
Docker, Linux Containers, and Security: Does It Add Up?
 
LXC, Docker, security: is it safe to run applications in Linux Containers?
LXC, Docker, security: is it safe to run applications in Linux Containers?LXC, Docker, security: is it safe to run applications in Linux Containers?
LXC, Docker, security: is it safe to run applications in Linux Containers?
 
Lightweight Virtualization in Linux
Lightweight Virtualization in LinuxLightweight Virtualization in Linux
Lightweight Virtualization in Linux
 
How Secure Is Your Container? ContainerCon Berlin 2016
How Secure Is Your Container? ContainerCon Berlin 2016How Secure Is Your Container? ContainerCon Berlin 2016
How Secure Is Your Container? ContainerCon Berlin 2016
 
Docker London: Container Security
Docker London: Container SecurityDocker London: Container Security
Docker London: Container Security
 
Docker Security
Docker SecurityDocker Security
Docker Security
 
Containers and workload security an overview
Containers and workload security an overview Containers and workload security an overview
Containers and workload security an overview
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014
 
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
 
Hack the whale
Hack the whaleHack the whale
Hack the whale
 
Tokyo OpenStack Summit 2015: Unraveling Docker Security
Tokyo OpenStack Summit 2015: Unraveling Docker SecurityTokyo OpenStack Summit 2015: Unraveling Docker Security
Tokyo OpenStack Summit 2015: Unraveling Docker Security
 
Unraveling Docker Security: Lessons From a Production Cloud
Unraveling Docker Security: Lessons From a Production CloudUnraveling Docker Security: Lessons From a Production Cloud
Unraveling Docker Security: Lessons From a Production Cloud
 
Docker Ecosystem on Azure
Docker Ecosystem on AzureDocker Ecosystem on Azure
Docker Ecosystem on Azure
 
Dockers zero to hero
Dockers zero to heroDockers zero to hero
Dockers zero to hero
 
Unix Security
Unix SecurityUnix Security
Unix Security
 
Hands on introduction to docker security for docker newbies
Hands on introduction to docker security for docker newbiesHands on introduction to docker security for docker newbies
Hands on introduction to docker security for docker newbies
 
Drupalcamp es 2013 drupal with lxc docker and vagrant
Drupalcamp es 2013  drupal with lxc docker and vagrant Drupalcamp es 2013  drupal with lxc docker and vagrant
Drupalcamp es 2013 drupal with lxc docker and vagrant
 
Agile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: IntroductionAgile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: Introduction
 
Secure container: Kata container and gVisor
Secure container: Kata container and gVisorSecure container: Kata container and gVisor
Secure container: Kata container and gVisor
 
Introduction to docker security
Introduction to docker securityIntroduction to docker security
Introduction to docker security
 

More from Jérôme Petazzoni

Use the Source or Join the Dark Side: differences between Docker Community an...
Use the Source or Join the Dark Side: differences between Docker Community an...Use the Source or Join the Dark Side: differences between Docker Community an...
Use the Source or Join the Dark Side: differences between Docker Community an...
Jérôme Petazzoni
 
Orchestration for the rest of us
Orchestration for the rest of usOrchestration for the rest of us
Orchestration for the rest of us
Jérôme Petazzoni
 
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Jérôme Petazzoni
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Jérôme Petazzoni
 
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Jérôme Petazzoni
 
Containers, docker, and security: state of the union (Bay Area Infracoders Me...
Containers, docker, and security: state of the union (Bay Area Infracoders Me...Containers, docker, and security: state of the union (Bay Area Infracoders Me...
Containers, docker, and security: state of the union (Bay Area Infracoders Me...
Jérôme Petazzoni
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...
Jérôme Petazzoni
 
How to contribute to large open source projects like Docker (LinuxCon 2015)
How to contribute to large open source projects like Docker (LinuxCon 2015)How to contribute to large open source projects like Docker (LinuxCon 2015)
How to contribute to large open source projects like Docker (LinuxCon 2015)
Jérôme Petazzoni
 
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Jérôme Petazzoni
 
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxConAnatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Jérôme Petazzoni
 
Microservices. Microservices everywhere! (At OSCON 2015)
Microservices. Microservices everywhere! (At OSCON 2015)Microservices. Microservices everywhere! (At OSCON 2015)
Microservices. Microservices everywhere! (At OSCON 2015)Jérôme Petazzoni
 
Deploy microservices in containers with Docker and friends - KCDC2015
Deploy microservices in containers with Docker and friends - KCDC2015Deploy microservices in containers with Docker and friends - KCDC2015
Deploy microservices in containers with Docker and friends - KCDC2015
Jérôme Petazzoni
 
Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015
Jérôme Petazzoni
 
Immutable infrastructure with Docker and containers (GlueCon 2015)
Immutable infrastructure with Docker and containers (GlueCon 2015)Immutable infrastructure with Docker and containers (GlueCon 2015)
Immutable infrastructure with Docker and containers (GlueCon 2015)
Jérôme Petazzoni
 
The Docker ecosystem and the future of application deployment
The Docker ecosystem and the future of application deploymentThe Docker ecosystem and the future of application deployment
The Docker ecosystem and the future of application deployment
Jérôme Petazzoni
 
Docker: automation for the rest of us
Docker: automation for the rest of usDocker: automation for the rest of us
Docker: automation for the rest of us
Jérôme Petazzoni
 
Docker Non Technical Presentation
Docker Non Technical PresentationDocker Non Technical Presentation
Docker Non Technical Presentation
Jérôme Petazzoni
 
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special EditionIntroduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Jérôme Petazzoni
 
Introduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" EditionIntroduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" Edition
Jérôme Petazzoni
 
Containers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific TrioContainers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific Trio
Jérôme Petazzoni
 

More from Jérôme Petazzoni (20)

Use the Source or Join the Dark Side: differences between Docker Community an...
Use the Source or Join the Dark Side: differences between Docker Community an...Use the Source or Join the Dark Side: differences between Docker Community an...
Use the Source or Join the Dark Side: differences between Docker Community an...
 
Orchestration for the rest of us
Orchestration for the rest of usOrchestration for the rest of us
Orchestration for the rest of us
 
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
 
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
 
Containers, docker, and security: state of the union (Bay Area Infracoders Me...
Containers, docker, and security: state of the union (Bay Area Infracoders Me...Containers, docker, and security: state of the union (Bay Area Infracoders Me...
Containers, docker, and security: state of the union (Bay Area Infracoders Me...
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...
 
How to contribute to large open source projects like Docker (LinuxCon 2015)
How to contribute to large open source projects like Docker (LinuxCon 2015)How to contribute to large open source projects like Docker (LinuxCon 2015)
How to contribute to large open source projects like Docker (LinuxCon 2015)
 
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
 
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxConAnatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
 
Microservices. Microservices everywhere! (At OSCON 2015)
Microservices. Microservices everywhere! (At OSCON 2015)Microservices. Microservices everywhere! (At OSCON 2015)
Microservices. Microservices everywhere! (At OSCON 2015)
 
Deploy microservices in containers with Docker and friends - KCDC2015
Deploy microservices in containers with Docker and friends - KCDC2015Deploy microservices in containers with Docker and friends - KCDC2015
Deploy microservices in containers with Docker and friends - KCDC2015
 
Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015
 
Immutable infrastructure with Docker and containers (GlueCon 2015)
Immutable infrastructure with Docker and containers (GlueCon 2015)Immutable infrastructure with Docker and containers (GlueCon 2015)
Immutable infrastructure with Docker and containers (GlueCon 2015)
 
The Docker ecosystem and the future of application deployment
The Docker ecosystem and the future of application deploymentThe Docker ecosystem and the future of application deployment
The Docker ecosystem and the future of application deployment
 
Docker: automation for the rest of us
Docker: automation for the rest of usDocker: automation for the rest of us
Docker: automation for the rest of us
 
Docker Non Technical Presentation
Docker Non Technical PresentationDocker Non Technical Presentation
Docker Non Technical Presentation
 
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special EditionIntroduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
 
Introduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" EditionIntroduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" Edition
 
Containers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific TrioContainers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific Trio
 

Recently uploaded

JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 

Recently uploaded (20)

JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 

Docker, Linux Containers (LXC), and security

  • 1. Is it safe to run applications in Linux Containers? Jérôme Petazzoni @jpetazzo Docker Inc. @docker
  • 2. Is it safe to run applications in Linux Containers? And, can Docker do anything about it?
  • 3. Question: Is it safe to run applications in Linux Containers?
  • 4. ...
  • 5. Yes
  • 6. /* shocker: docker PoC VMM-container breakout (C) 2014 Sebastian Krahmer * * Demonstrates that any given docker image someone is asking * you to run in your docker setup can access ANY file on your host, * e.g. dumping hosts /etc/shadow or other sensitive info, compromising * security of the host and any other docker VM's on it. * * docker using container based VMM: Sebarate pid and net namespace, * stripped caps and RO bind mounts into container's /. However * as its only a bind-mount the fs struct from the task is shared * with the host which allows to open files by file handles * (open_by_handle_at()). As we thankfully have dac_override and * dac_read_search we can do this. The handle is usually a 64bit * string with 32bit inodenumber inside (tested with ext4). * Inode of / is always 2, so we have a starting point to walk * the FS path and brute force the remaining 32bit until we find the * desired file (It's probably easier, depending on the fhandle export * function used for the FS in question: it could be a parent inode# or * the inode generation which can be obtained via an ioctl). * [In practise the remaining 32bit are all 0 :] * * tested with docker 0.11 busybox demo image on a 3.11 kernel: * * docker run -i busybox sh * * seems to run any program inside VMM with UID 0 (some caps stripped);
  • 8. No!
  • 9. Docker has changed its security status to It's complicated
  • 10. Who am I? Why am I here?  Jérôme Petazzoni (@jpetazzo) - Grumpy French Linux DevOps  Operated dotCloud PAAS for 3+ years - hosts arbitrary code for arbitrary users - all services, all apps, run in containers - no major security issue yet (fingers crossed)  Containerize all the things! - VPN-in-Docker, KVM-in-Docker, Xorg-in-Docker, Docker-in-Docker...
  • 11. What are those “containers” ? (1/3)  Technically: ~chroot on steroids - a container is a set of processes (running on top of common kernel) - isolated* from the rest of the machine (cannot see/affect/harm host or other containers) - using namespaces to have private view of the system (network interfaces, PID tree, mountpoints...) - and cgroups to have metered/limited/reserved resources (to mitigate “bad neighbor” effect) *Limitations may apply.
  • 12. What are those “containers” ? (2/3)  From a distance: looks like a VM - I can SSH into my container - I can have root access in it - I can install packages in it - I have my own eth0 interface - I can tweak routing table, iptables rules - I can mount filesystems - etc.
  • 13. What are those “containers” ? (3/3)  Lightweight, fast, disposable... virtual environments - boot in milliseconds - just a few MB of intrinsic disk/memory usage - bare metal performance is possible  The new way to build, ship, deploy, run your apps!
  • 14. Why is this a hot topic?  Containers: have been around for decades  LXC (Linux Containers): have been around for years So, what?
  • 16. Why is this a hot topic?  Containers: have been around for decades  LXC (Linux Containers): have been around for years  Tools like Docker have commoditized LXC (i.e. made it very easy to use)  Everybody wants to deploy containers now  But, oops, LXC wasn't made for security  We want containers, and we want them now; how can we do that safely?
  • 18. “LXC is not yet secure. If I want real security I will use KVM.” —Dan Berrangé (famous LXC hacker) This was in 2011. The Linux Kernel has changed a tiny little bit since then.
  • 19. “From security point of view lxc is terrible and may not be consider as security solution.” —someone on Reddit (original spelling and grammar) Common opinion among security experts and paranoid people. To be fair, they have to play safe & can't take risks.
  • 20. “Basically containers are not functional as security containers at present, in that if you have root on a container you have root on the whole box.” —Gentoo Wiki That's just plain false, or misleading, and we'll see why.
  • 21. “Containers do not contain.” —Dan Walsh (Mr SELinux) This was earlier this year, and this guy knows what he's talking about. Are we in trouble?
  • 22. “For the fashion of Minas Tirith was such that it was built on seven levels, each delved into a hill, and about each was set a wall, and in each wall was a gate.” —J.R.R. Tolkien (also quoted in VAX/VMS Internals and Data Structures, ca. 1980)
  • 24. Let's review one of those quotes: “If you have root on a container you have root on the whole box.” First things first: just don't give root in the container If you really have to give root, give looks-like-root If that's not enough, give root but build another wall
  • 25. Root in the host Root in the container Uruks (intruders)
  • 26. There are multiple threat models  Regular applications - web servers, databases, caches, message queues, ...  System services (high level) - logging, remote access, periodic command execution, ...  System services (low level) - manage physical devices, networking, filesystems, ...  Kernel - security policies, drivers, ...  The special case of immutable infrastructure
  • 28. Regular applications  Apache, MySQL, PostgreSQL, MongoDB, Redis, Cassandra, Hadoop, RabbitMQ...  Virtually all your programs in any language (services/web services, workers, everything!)  They never ever need root privileges (except to install packages)  Don't run them as root! Ever!
  • 29. Regular applications  Risk: they run arbitrary code - vector: by definition, they are arbitrary code - vector: security breach causes execution of malicious code  Fix: nothing - by definition, we are willing to execute arbitrary code here  Consequence: assume those apps can try anything to break out
  • 30. Regular applications  Risk: escalate from non-root to root - vector: vulnerabilities in SUID binaries  Fix: defang SUID binaries - remove them - remove suid bit - mount filesystem with nosuid  Docker: - you can remove SUID binaries easily - doesn't support nosuid mount (but trivial to add)
  • 31.
  • 32. Regular applications  Risk: execute arbitrary kernel code - vector: bogus syscall (e.g. vmsplice* in 2008)  Fix: limit available syscalls - seccomp-bpf = whitelist/blacklist syscalls - Docker: seccomp available in LXC driver; not in libcontainer  Fix: run stronger kernels - GRSEC is a good idea (stable patches for 3.14 since July 4th) - update often (i.e. have efficient way to roll out new kernels) - Docker: more experiments needed *More details about that: http://lwn.net/Articles/268783/
  • 33. Regular applications  Risk: leak to another container - vector: bug in namespace code; filesystem leak (like the one showed in the beginning of this talk!)  Fix: user namespaces - map UID in container to a different UID outside - two containers run a process with UID 1000, but it's 14298 and 15398 outside - Docker: PR currently being reviewed  Fix: security modules (e.g. SELinux) - assign different security contexts to containers - those mechanisms were designed to isolate! - Docker: SELinux integration; AppArmor in the works
  • 35. System services (high level)  SSH, cron, syslog...  You use/need them all the time  Bad news: they typically run as root  Good news: they don't really need root  Bad news: it's hard to run them as non-root  Good news: they are not arbitrary code
  • 36. System services (high level)  Risk: running arbitrary code as root - vector: malformed data or similar (note: risk is pretty low for syslog/cron; much higher for SSH)  Fix: isolate sensitive services - run SSH on bastion host, or in a VM - note: this is not container-specific (if someone hacks into your SSH server, you'll have a bad time anyway)
  • 37. System services (high level)  Risk: messing with /dev - vector: malicious code  Fix: “devices” control group - whitelist/blacklist devices - fine-grained: can allow only read, write, none, or both - fine-grained: can specify major+minor number of device  Docker: ✓ - sensible defaults - support for fine-grained access to devices in the works
  • 38. System services (high level)  Risk: use of root calls (mount, chmod, iptables...) - vector: malicious code  Fix: capabilities - break down “root” into many permissions - e.g. CAP_NET_ADMIN (network configuration) - e.g. CAP_NET_RAW (generate and sniff traffic) - e.g. CAP_SYS_ADMIN (big can of worms )☹ - see capabilities(7)  Docker: ✓ - sensible default capabilities - but: CAP_SYS_ADMIN! (see next slide)
  • 39. Interlude: CAP_SYS_ADMIN Operations controlled by CAP_SYS_ADMIN...  quotactl, mount, umount, swapon, swapoff  sethostname, setdomainname  IPC_SET, IPC_RMID on arbitrary System V IPC  perform operations on trusted and security Extended Attributes  set realtime priority (ioprio_set + IOPRIO_CLASS_RT)  create new namespaces (clone and unshare + CLONE_NEWNS)
  • 40. System services (high level)  Risk: messing with /proc, /sys - vector: malicious code  Fix: prevent unauthorized access control - Mandatory Access Control (AppArmor, SELinux) - remount read-only, then drop CAP_SYS_ADMIN to prevent remount  Fix: wider implementation of namespaces - some parts of procfs/sysfs are “namespace-aware” - some aren't, but can be fixed (by writing kernel code)  Docker: ✓ - locks down /proc and /sys
  • 41. System services (high level)  Risk: leaking with UID 0 - vector: malicious code  Fix: user namespaces - already mentioned earlier - UID 0 in the container is mapped to some random UID outside - you break out: you're not root - you manage to issue weird syscalls: they're done as unprivileged UID  Docker: work in progress  Caveat: user namespaces are still new. We have to see how they behave with that!
  • 43. System services (low level)  Device management (keyboard, mouse, screen), network and firewall config, filesystem mounts...  You use/need some of them all the time  But you don't need any of them in containers - physical device management is done by the host - network configuration and filesystems are setup by the host  Exceptions: - custom mounts (FUSE) - network appliances
  • 44. System services (low level)  Risk: running arbitrary code as root - vector: malformed data or similar  Fix: isolate sensitive functions - “one-shot” commands can be fenced in privileged context (think “sudo” but without even requiring “sudo”) - everything else (especially processes that are long-running, or handle arbitrary input) runs in non-privileged context - works well for FUSE, some VPN services  Docker: provides fine-grained sharing - e.g. docker run --net container:… for network namespace - nsenter for other out-of-band operations
  • 45. System services (low level)  Risk: run arbitrary code with full privileges - vector: needs a process running with full privileges (rare!) - vector: malformed data, unchecked input… classic exploit  Fix: treat it as “kernel” - we'll see that immediately in the next section
  • 47. Kernel  Drivers - can talk to the hardware, so can do pretty much anything - except: virtualize the bus and use e.g. driver domains (Xen)  Network stacks - this probably has to live into the kernel for good performance - except: DPDK, OpenOnload... (networking stacks in userspace)  Security policies - by definition, they control everything else - except: there might be nested security contexts some day
  • 48. Kernel  Risk: run arbitrary code with absolute privileges  Fix: ?
  • 49. Reality check: if you run something which by definition needs full control over hardware or kernel, containers are not going to make it secure. Please stop trying to shoot yourself in the foot safely.
  • 50. Reality check: if you run something which by definition needs full control over hardware or kernel, containers are not going to make it secure. Please stop trying to shoot yourself in the foot safely.
  • 51. Kernel  Risk: run arbitrary code with absolute privileges  Fix: give it its own kernel and (virtual) hardware - i.e. run it in a virtual machine - that VM can run in a container - that VM can hold a container - run a privileged container, in Docker, in a VM, while the VM runs in a container, in a Docker https://github.com/jpetazzo/docker2docker - inb4 xzibit meme
  • 52.
  • 54. Immutable immutable infrastructure  New rule: the whole container is read-only  Compromise: if we must write, write to a noexec area  Scalability has never been easier (if totally read-only)  It's even harder for malicious users to do evil things
  • 55. Recap (in no specific order!)  don't run things as root  drop capabilities  enable user namespaces  get rid of shady SUID binaries  enable SELinux (or AppArmor)  use seccomp-bpf  get a GRSEC kernel  update kernels often  mount everything read-only  ultimately, fence things in VMs
  • 56. Recap (with Docker status)  don't run things as root ☑ (you do it!)  drop capabilities ☑ (but CAP_SYS_ADMIN!)  enable user namespaces ☑ (work in progress)  get rid of shady SUID binaries ☑ (but not enforced yet)  enable SELinux (or AppArmor) ☑ (SELinux)  use seccomp-bpf ☑ (on LXC driver)  get a GRSEC kernel ☑ (to be confirmed)  update kernels often ☑ (not Docker's job)  mount everything read-only ☐ (not yet)  ultimately, fence things in VMs ☑ (easy to do)
  • 57. Recap (improvements needed)  don't run things as root ☒ (you do it!)  drop capabilities ☒ (but CAP_SYS_ADMIN!)  enable user namespaces ☒ (work in progress)  get rid of shady SUID binaries ☒ (but not enforced yet)  enable SELinux (or AppArmor) ☒ (SELinux)  use seccomp-bpf ☒ (on LXC driver)  get a GRSEC kernel ☒ (to be confirmed)  update kernels often ☒ (not Docker's job)  mount everything read-only ☒ (not yet)  ultimately, fence things in VMs ☒ (easy to do)
  • 58.