testing docker security linuxlab 2017

59
Testing Docker Security LinuxLab 2017 José Manuel Ortega

Upload: jose-manuel-ortega-candel

Post on 22-Jan-2018

113 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Testing Docker Security Linuxlab 2017

Testing Docker SecurityLinuxLab 2017

José Manuel Ortega

Page 2: Testing Docker Security Linuxlab 2017

@jmortegac

Page 3: Testing Docker Security Linuxlab 2017

Agenda

● Introduction to docker security● Security best practices● Tools for auditing docker host● Tools for auditing docker images● Demo

Page 4: Testing Docker Security Linuxlab 2017

Virtualization vs containers

Page 5: Testing Docker Security Linuxlab 2017

Container pipeline

Page 6: Testing Docker Security Linuxlab 2017

Security mechanims

● Docker uses several mechanisms:○ Linux kernel namespaces○ Linux Control Groups (cgroups)○ The Docker daemon○ Linux capabilities (libcap)○ Linux security mechanisms like

AppArmor,SELinux,Seccomp

Page 7: Testing Docker Security Linuxlab 2017

Namespaces

● Provides an isolated view of the system where processes cannot see other processes in other containers

● Each container also gets its own network stack.

● A container doesn’t get privileged access to the sockets or interfaces of another container.

Page 8: Testing Docker Security Linuxlab 2017

Cgroups && capabilities

● Cgroups: kernel feature that limits and isolates the resource usage (CPU, memory, network) of a collection of processes.

● Linux Capabilities: divides the privileges of root into distinct units and smaller groups of privileges

Page 9: Testing Docker Security Linuxlab 2017

Docker images

Page 10: Testing Docker Security Linuxlab 2017

Docker images

Page 11: Testing Docker Security Linuxlab 2017

Dockerfile

Page 12: Testing Docker Security Linuxlab 2017
Page 13: Testing Docker Security Linuxlab 2017
Page 14: Testing Docker Security Linuxlab 2017
Page 15: Testing Docker Security Linuxlab 2017
Page 16: Testing Docker Security Linuxlab 2017

Docker Content Trust

Page 17: Testing Docker Security Linuxlab 2017

Docker Content Trust

● We can verify the integrity of the image● Checksum validation when pulling image

from docker hub● Pulling by digest to enforce consistent

Page 18: Testing Docker Security Linuxlab 2017
Page 19: Testing Docker Security Linuxlab 2017
Page 20: Testing Docker Security Linuxlab 2017

Docker Capabilites● A capability is a unix action a user can

perform● Goal is to restrict “capabilities”● Privileged process = all the capabilities!● Unprivileged process = check individual user

capabilities● Example Capabilities:

○ CAP_CHOWN○ CAP_NET_RAW

Page 21: Testing Docker Security Linuxlab 2017
Page 22: Testing Docker Security Linuxlab 2017
Page 23: Testing Docker Security Linuxlab 2017
Page 24: Testing Docker Security Linuxlab 2017

--cap-drop all--cap-add <specific_functionality>

Page 25: Testing Docker Security Linuxlab 2017

Docker security is about limiting and controlling the attack surface on the kernel.

Page 26: Testing Docker Security Linuxlab 2017

Run filesystems as read-only so that attackers can not overwrite data or save malicious scripts to the image.

Page 27: Testing Docker Security Linuxlab 2017

Least privilege principle

● Do not run processes in a container as root to avoid root access from attackers.

● Enable User-namespace

● Run filesystems as read-only so that attackers can not overwrite data or save malicious scripts to file.

● Cut down the kernel calls that a container can make to reduce the potential attack surface.

Page 28: Testing Docker Security Linuxlab 2017

DockerFile security

● Set a specific user.

● Don’t run your applications as root in containers.

Page 29: Testing Docker Security Linuxlab 2017

Read only containers & volumes

Page 30: Testing Docker Security Linuxlab 2017

Privileged vs non-privileged

Page 31: Testing Docker Security Linuxlab 2017

Privileged vs non-privileged

Page 32: Testing Docker Security Linuxlab 2017

Seccomp

● Restricts system calls based on a policy● Block/limit things like:

○ Kernel manipulation (init_module, finit_module, delete_module)

○ Executing mount options○ Change permissions○ Change owner and groups

Page 33: Testing Docker Security Linuxlab 2017
Page 34: Testing Docker Security Linuxlab 2017

Audit Docker Host

Page 35: Testing Docker Security Linuxlab 2017

Docker bench security

● Auditing docker environment and containers

● Open-source tool for running automated tests

● Inspired by the CIS Docker 1.11 benchmark

● Runs against containers currently running on same host

● Checks for AppArmor, read-only volumes, etc...https://github.com/docker/docker-bench-security

Page 36: Testing Docker Security Linuxlab 2017

Docker bench security

Page 37: Testing Docker Security Linuxlab 2017

Docker bench security

● The host configuration● The Docker daemon configuration● The Docker daemon configuration files● Container images and build files● Container runtime● Docker security operations

Page 38: Testing Docker Security Linuxlab 2017

Lynis

● https://github.com/CISOfy/lynis-docker● Lynis is a Linux, Mac and Unix security

auditing and system hardening tool that includes a module to audit Dockerfiles.

● lynis audit system● lynis audit dockerfile <file>

Page 39: Testing Docker Security Linuxlab 2017
Page 40: Testing Docker Security Linuxlab 2017

Demo time

Page 41: Testing Docker Security Linuxlab 2017

Audit Docker Images

Page 42: Testing Docker Security Linuxlab 2017

● You can scan your images for known vulnerabilities

● Find known vulnerable binaries○ Docker Security Scanning○ OWASP Dependency checker○ Anchore Cloud○ Dagda○ Tenable.io Container Security

Page 43: Testing Docker Security Linuxlab 2017

Docker security scanning

Page 44: Testing Docker Security Linuxlab 2017

Docker security scanning

Page 45: Testing Docker Security Linuxlab 2017
Page 46: Testing Docker Security Linuxlab 2017

OWASP Dependency checker

Page 47: Testing Docker Security Linuxlab 2017

Anchore

Page 48: Testing Docker Security Linuxlab 2017

Anchore

Page 49: Testing Docker Security Linuxlab 2017

Anchore

Page 50: Testing Docker Security Linuxlab 2017
Page 51: Testing Docker Security Linuxlab 2017

Dagda

Page 52: Testing Docker Security Linuxlab 2017

Tenable.io container security

Page 53: Testing Docker Security Linuxlab 2017
Page 54: Testing Docker Security Linuxlab 2017
Page 55: Testing Docker Security Linuxlab 2017
Page 56: Testing Docker Security Linuxlab 2017

Docker images for malware analysis

Page 57: Testing Docker Security Linuxlab 2017

References● https://docs.docker.com/engine/security● http://www.oreilly.com/webops-perf/free/files/docker-securi

ty.pdf● http://container-solutions.com/content/uploads/2015/06/15.0

6.15_DockerCheatSheet_A2.pdf● Docker Content Trust

https://docs.docker.com/engine/security/trust/content_trust● Docker Security Scanning● https://docs.docker.com/docker-cloud/builds/image-scan● https://blog.docker.com/2016/04/docker-security● http://softwaretester.info/docker-audit

Page 58: Testing Docker Security Linuxlab 2017
Page 59: Testing Docker Security Linuxlab 2017

Thanks!

Contact:

@jmortegac

jmortega.github.io

about.met/jmortegac