Segurizar entorno Docker

Segurizar entorno Docker

De sobra es sabido que Docker se ha convertido en una forma ágil, sencilla y fiable de probar y desplegar aplicaciones en los diferentes entornos que se manejan, pero ¿tenemos realmente la certeza que el entorno configurado en Docker es tan seguro como debería ser?. Este articulo tiene como propósito el mostrar las acciones que se pueden realizar para comprobar el estado actual y aplicar (si procede) las acciones correctivas necesarias.

Controles CIS

Estas comprobaciones están basadas en las recomendaciones listadas desde el C.I.S (Center for Internet Security) que periódicamente publica plantillas con controles de seguridad para diferentes tecnologías, en este caso que nos trata se comentará sobre la plantillas de los controles de seguridad para Docker.

CIS Docker Security Benchmarks

Este documento, en su versión 1.6 y está formado por 7 categorías que van desde la configuración del propio host hasta la configuración de Swarm o del runtime de los contenedores.


Como muestra de alguno de los controles y usando para ello el primero se puede ver:

1.1.1 Ensure a separate partition for containers has been created

En este caso el control indica que los containers deberían (así como la información asociadas a ellos) debería estar en una partición (o logical volume) diferente al de raíz o la partición "var" para evitar el llenado de dichas particiones. En el propio documento muestra como comprobar esto:

grep '/var/lib/docker\s' /proc/mounts        

y como remediarlo en caso que hubiera necesidad de hacerlo. Adicionalmente mapea estos controles uno a uno (con CIS v8) para ver si se cumplen con ellos en nuestro entorno.

Bueno, se podría hacer así, pero eso sería un trabajo algo costoso, pesado y porqué no decirlo, aburrido... Para poder comprobar todos estos controles de una manera más ágil, Docker publicó en su Github un script que automatiza estas comprobaciones:

Script comprobación controles CIS para Docker

Uso del script

El script, como se ha comentado, está alojado en un repositorio de Github, con lo que el primer paso será clonar dicho repositorio.


Desde el directorio clonado se lanzará el script, es importante que el servicio "docker" esté iniciado, si no se mostrará un error y el script no podrá continuar

si se lanza el script como usuario regular mostrará algunas advertencias indicando que algunos de los tests que se ejecutarán deben ser lanzados con permisos de "root":

Si se lanza de nuevo con permisos de "root", se ejecutarán todos los tests:

Como se puede ver en la imagen anterior, los controles 1.1.[3-18] han mostrado una advertencia, y si se lee el mensaje indica que el servicio docker (así como los servicios y archivos asociados) no están siendo monitoreados con "auditd", mirando en la hoja de los controles CIS para Docker muestra como resolver estas advertencias, ejemplo del punto 1.1.3:

Una vez añadidas las reglas indicadas en /etc/auditd/rules.d/audit.rules y reiniciado el servicio "auditd" (o recargadas las reglas) al volver al lanzar el script se puede ver que ya no muestra esas advertencias:

Estas remediaciones se pueden automatizar también (bien mediante templates en ansible o cualquier otra solución de orquestación o mediante scripting).

En definitiva, esta herramienta resultará de total utilidad para segurizar el entorno Docker, así como para ir consiguiendo la correcta aplicación de todos los controles CIS en el entorno y mejorar tanto la seguridad como el nivel de cumplimiento.

Hasta la próxima!!


Inicia sesión para ver o añadir un comentario.

Más artículos de Roberto Ivars

  • MISP - Splunk (III)

    MISP - Splunk (III)

    En esta tercera entrega de la serie se integrará MISP en Splunk para poder consultar si alguno de los sistemas…

  • MISP - Splunk (II)

    MISP - Splunk (II)

    Segundo articulo de 3 en los que se va a integrar MISP en Splunk para poder hacer uso de los miles de IoCs de los que…

  • MISP - Splunk (I)

    MISP - Splunk (I)

    Comienza una pequeña serie sobre como poder aprovechar en Splunk la gran cantidad de IOCs que proporciona MISP, en este…

  • Detection as Code (III)

    Detection as Code (III)

    Continuando con la serie de artículos sobre Detection as Code, en esta ocasión llega la tercera entrega que tratará…

  • Detection as Code (II)

    Detection as Code (II)

    Anteriormente se introdujeron algunas de las bases y beneficios del uso de esta metodología y se listaron las…

  • Detection as Code (I)

    Detection as Code (I)

    De hace unos años se oye hablar del termino "* as Code" o como también se le conoce "Everything as Code". Algunas…

  • Retomando aficiones

    Retomando aficiones

    Si bien este es un articulo que poco tiene que ver con los que suelo subir, sí me gustaría compartir los beneficios de…

    4 comentarios
  • Ataque por fatiga de MFA (Detectar y prevenir)

    Ataque por fatiga de MFA (Detectar y prevenir)

    Como bien es sabido entre otras muchas premisas, en lo que a Ciberseguridad se refiere, hay dos que se deben tener en…

    4 comentarios
  • Emulando adversarios (FIN6 - Parte - 3, Ejecución Fase 2)

    Emulando adversarios (FIN6 - Parte - 3, Ejecución Fase 2)

    Anteriormente se mostró la Fase1 del plan de emulació de adversario para FIN6, en ese articulo se tratará la Fase2, la…

  • Emulando adversarios (FIN6 - Parte 2, Ejecución)

    Emulando adversarios (FIN6 - Parte 2, Ejecución)

    En la entrega anterior se hizo una pequeña definición de lo que sería este ejercicio, se presentó el escanario, la…

Otros usuarios han visto

Ver temas