DOCKER. Seguridad y monitorización en contenedores e imágenes

DOCKER. Seguridad y monitorización en contenedores e imágenes

Este charla tiene como objetivo introducir los conocimientos para entender cómo gestiona Docker la seguridad tanto desde el punto de vista de la máquina donde lo ejecutamos, como desde el desarrollo y despliegue de imágenes.

Docker es una herramienta portable para virtualización basada en contenedores y permite también la portabilidad de las aplicaciones.Se comentarán el conjunto de buenas prácticas que minimicen en la medida de lo posible la exposición de nuestra aplicación ante posibles ataques.

Desde el punto de vista del análisis de imágenes comentaremos una serie de herramientas que permiten al usuario analizar cada una de las capas de las imágenes y contenedores en búsqueda de librerías desactualizadas, y vulnerabilidades y exposiciones comunes que podemos encontrar en la base de datos (CVE).

Entre los puntos a tratar podemos destacar:
- Introducción a la seguridad en docker
- Seguridad en contenedores e imágenes
- Monitorización en contenedores Docker
- Auditorías sobre imágenes y vulnerabilidades

Además he escrito un libro sobre este tema:
https://rclibros.es/producto/docker-seguridad-y-monitorizacion-en-contenedores-e-imagenes/

7c4b1ae16723b56facc7a8a8f95aa6ce?s=128

jmortegac

June 14, 2019
Tweet

Transcript

  1. DOCKER Seguridad y monitorización en contenedores e imágenes José Manuel

    Ortega @jmortegac
  2. AGENDA @jmortegac jmortega.github.io about.me/jmortegac

  3. AGENDA

  4. AGENDA CONFERENCIAS Y CURSOS http://jmortega.github.io/

  5. AGENDA

  6. AGENDA INTRODUCCIÓN A LA PROGRAMACIÓN CON PYTHON METODOLOGÍA Y HERRAMIENTAS

    DE DESARROLLO LIBRERÍAS Y MÓDULOS PARA REALIZAR PETICIONES RECOLECCIÓN DE INFORMACIÓN CON PYTHON EXTRACCIÓN DE INFORMACIÓN CON PYTHON WEBSCRAPING CON PYTHON ESCANEO DE PUERTOS Y REDES CON PYTHON HERRAMIENTAS AVANZADAS
  7. AGENDA

  8. AGENDA

  9. AGENDA

  10. AGENDA • Introducción a la seguridad en docker • Seguridad

    en contenedores e imágenes • Monitorización en contenedores Docker • Auditorías sobre imágenes y vulnerabilidades
  11. Introducción a la seguridad en docker

  12. Introducción a la seguridad en docker • Linux kernel namespaces

    • Linux Control Groups (cgroups) • Docker daemon • Linux capabilities (libcap) • Mecanismos de seguridad en linux ◦ AppArmor, SELinux, Seccomp
  13. Introducción a la seguridad en docker

  14. Introducción a la seguridad en docker

  15. Introducción a la seguridad en docker

  16. Introducción a la seguridad en docker

  17. Introducción a la seguridad en docker

  18. Introducción a la seguridad en docker http://man7.org/linux/man-pages/man7/capabilities.7.html

  19. Introducción a la seguridad en docker

  20. Introducción a la seguridad en docker

  21. Introducción a la seguridad en docker

  22. Introducción a la seguridad en docker

  23. Introducción a la seguridad en docker

  24. Introducción a la seguridad en docker

  25. Docker network

  26. Docker network

  27. Docker network

  28. Docker network

  29. Introducción a la seguridad en docker

  30. Introducción a la seguridad en docker docker run --name mysql

    --read-only -v /var/lib/mysql -v /tmp -d -e MYSQL_ROOT_PASSWORD=password mysql
  31. Introducción a la seguridad en docker

  32. Introducción a la seguridad en docker

  33. Introducción a la seguridad en docker

  34. Introducción a la seguridad en docker

  35. Introducción a la seguridad en docker

  36. Introducción a la seguridad en docker

  37. Docker inspect

  38. Alpine https://github.com/gliderlabs/docker-alpine

  39. Distroless https://github.com/GoogleContainerTools/distroless

  40. Distroless https://github.com/GoogleContainerTools/distroless/tree/master/examples/python3

  41. Distroless

  42. Docker Content Trust

  43. Docker Content Trust

  44. Docker Content Trust

  45. DockerFiles

  46. Docker Registry

  47. Docker Registry https://hub.docker.com/_/registry

  48. Docker Registry

  49. Docker Registry

  50. Docker Registry

  51. Docker Bench for Security https://hub.docker.com/r/docker/docker-bench-security

  52. Docker Bench for Security docker run -it --net host --pid

    host --userns host --cap-add audit_control \ -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \ -v /var/lib:/var/lib \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/lib/systemd:/usr/lib/systemd \ -v /etc:/etc --label docker_bench_security \ docker/docker-bench-security
  53. Benchmarks https://www.cisecurity.org/cis-benchmarks/

  54. Docker Bench for Security • La configuración del host •

    La configuración del Daemon Docker • Los archivos de configuración de Docker Daemon • Contenedor de imágenes y archivos de compilación • Contenedor en tiempo de ejecución • Operaciones de seguridad de Docker
  55. Docker Bench for Security

  56. Docker Bench for Security

  57. Docker Bench for Security

  58. Kubebench https://github.com/aquasecurity/kube-bench

  59. Kubebench

  60. Kubebench

  61. Monitorización en contenedores Docker

  62. Monitorización de contenedores docker docker stats [OPTIONS] [CONTAINER...]

  63. Monitorización de contenedores docker curl -s http://localhost:2375/v1.12/containers /<id_container>/stats

  64. Monitorización de contenedores docker

  65. Monitorización de contenedores docker https://github.com/google/cadvisor

  66. Monitorización de contenedores docker

  67. Monitorización de contenedores docker

  68. Monitorización de contenedores docker

  69. Monitorización de contenedores docker

  70. Monitorización de contenedores docker

  71. Monitorización de contenedores docker

  72. Monitorización de contenedores docker

  73. Monitorización de contenedores docker

  74. Monitorización de contenedores docker

  75. Monitorización de contenedores docker https://www.katacoda.com/portainer/scenarios/deploying-to-swarm

  76. Monitorización de contenedores docker

  77. Sysdig

  78. Sysdig falco

  79. Sysdig falco

  80. Sysdig falco

  81. Sysdig falco

  82. Csysdig

  83. Seccomp docker info | grep seccomp grep SECCOMP /boot/config-$(uname -r)

  84. Seccomp https://github.com/docker/labs/tree/master/security/seccomp/ seccomp-profiles docker container run -it --rm --security-opt seccomp=<profile>.json

    alpine sh
  85. Seccomp

  86. Seccomp

  87. Seccomp https://github.com/antitree/syscall2seccomp

  88. Auditorías sobre imágenes y vulnerabilidades

  89. Container image scanning • Comprobar paquetes de software, binarios, librerías,

    sistemas operativos y sus vulnerabilidades • Analizar dockerfile y metadatos • Políticas de usuario: blacklist, no permitir imágenes con determinado software
  90. Container image scanning

  91. Docker Security Scanning

  92. Docker Security Scanning

  93. Clair Scanner Quay.io registry

  94. Clair Scanner Databases Quay.io registry

  95. Clair Scanner Quay.io registry

  96. Clair Scanner Quay.io registry # Descarga e instalación de la

    herramienta $ git clone https://github.com/hxquangnhat/clair-analyze-local-images. git $ cd clair-analyze-local-images/ $ docker-compose up -d # Análisis imagen Docker $ docker exec clair_clair analyzer <image_name>
  97. Clair Scanner Quay.io registry

  98. Clair Scanner Quay.io registry $ docker exec clair_clair analyzer <image_name>

  99. Clair Scanner Quay.io registry

  100. Quay.io registry

  101. Quay.io registry

  102. Quay.io registry

  103. Quay.io registry

  104. Anchore engine

  105. Anchore engine https://github.com/anchore/anchore-engine

  106. Anchore engine

  107. Anchore cli • pip install anchorecli • git clone https://github.com/anchore/anchore-cli

    cd anchore-cli pip install --user --upgrade . • python setup.py install
  108. Anchore cli

  109. Anchore cli # Disponibilizar una imagen a Anchore $ [docker

    run anchore-cli] anchore-cli image add <image_name> # Visualizar contenido de la imagen $ anchore-cli image content <image_name> os # Analizar contenido de la imagen $ anchore-cli image content <image_name> os # Evaluar en base al cumplimiento de la política $ anchore-cli evaluate check <image_name> os
  110. Anchore cli

  111. Anchore open source https://anchore.com/opensource/

  112. Anchore slack channel https://communityinviter.com/apps/anchorecommunity/anchore

  113. Dagda https://github.com/eliasgranderubio/dagda

  114. Dagda https://github.com/eliasgranderubio/dagda

  115. Dagda

  116. Dagda

  117. Dagda

  118. NVD https://nvd.nist.gov/vuln/search/results?form_type=Basic&results_type=overvi ew&query=docker&search_type=all

  119. NVD

  120. NVD

  121. NVD

  122. Docker CVE

  123. Docker CVE

  124. Docker Vulnerabilities

  125. Docker Vulnerabilities

  126. Amenazas • Dirty cow exploit: Escalada de privilegios root en

    un host o contenedor • Buffer overflow en librerías de Python y Ruby permitiendo la ejecución maliciosa de código • Vulnerabilidades en glibc • OpenSSL heap corruption
  127. Docker Vulnerabilities CVE-2015-0235 GHOST Buffer Overflow

  128. Docker Vulnerabilities CVE-2014-0160 Heartbleed struct { HeartbeatMessageType type; uint16 payload_length;

    opaque payload[HeartbeatMessage.payload_length]; opaque padding[padding_length]; } HeartbeatMessage
  129. Dirty Cow https://dirtycow.ninja/

  130. Dirty Cow https://github.com/dirtycow/dirtycow.github.io/ wiki/PoCs

  131. Dirty Cow https://github.com/Alpha-Cybersecurity/dirtyc 0w-docker

  132. Dirty Cow

  133. Dirty Cow execution

  134. Prevent DirtyCow with apparmor

  135. Dirty Cow https://security-tracker.debian.org/tracker/CVE-2016-5195

  136. Vulnerabilidad en imágenes alpine https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-5021

  137. Vulnerabilidad en imágenes alpine

  138. Vulnerabilidad en imágenes alpine

  139. Vulnerabilidad en imágenes alpine

  140. Soluciones enterprise

  141. Soluciones enterprise

  142. Soluciones enterprise https://www.twistlock.com/labs/

  143. Soluciones enterprise

  144. Soluciones enterprise

  145. Formación https://thesecuritysentinel.es/curso/hcds-docker-secdevops/