Un poco más sobre Docker

viernes, 3 de agosto de 2018

un poco más sobre docker imagen

En una entrada anterior, nuestro CSA de ElevenPaths, Diego Espitia, nos hablaba sobre la seguridad de los contenedores de Docker, la importancia de realizar pruebas de seguridad sobre ellos y algunas herramientas con las que llevarlas a cabo.  Con el objetivo de complementar un poco más todo lo que vimos en su post y dada la gran cantidad de empresas que utilizan esta tecnología en su día a día, no queríamos dejar de analizar las siguientes cuestiones para que saquéis el máximo rendimiento a Docker de una forma segura.

Educación de los equipos:
No siempre los equipos que definen los contenedores e imágenes dentro de una empresa son del todo conscientes de las medidas de seguridad que deberían adoptar, lo que provoca que ante incidentes de seguridad, resulte "muy fácil" culparles. Sin embargo, el motivo real por el que muchas veces ocurren este tipo de incidentes es consecuencia directa de la adopción de nuevas tecnologías que a primera vista aportan agilidad y versatilidad, pero sobre las que no se tiene en cuenta recomendaciones de seguridad destinadas a prevenir que de su utilización se puedan generar problemas de seguridad.

Es muy común que los DevOps que escriben el código de las aplicaciones y a su vez realizan las configuraciones de la plataforma que más tarde pondrán en producción, comentan errores involuntarios que pueden desembocar en incidentes de seguridad.  En el mundo de Docker, la sencillez y conveniencia de su implementación ha causado que muchas empresas se vieran "tentadas" a utilizar esta tecnología sin cerciorarse que los aspectos básicos en materia de seguridad eran conocidos por los equipos encargados de utilizar Docker. Ya sea por desconocimiento, por falta de tiempo o por negligencia pura, la cuestión principal es que:

“Siempre se debe tener en cuenta el entrenamiento en seguridad”.

Actualmente existen imágenes de Docker para “jugar” y de paso practicar cuestiones comunes de seguridad, como por ejemplo la versión de la famosa DVWA dockerizada: ver enlace 

Definición de un estándar de trabajo: 
Definir un estándar de trabajo dentro de un equipo de trabajo en ocasiones está mal visto ya que “reduce la flexibilidad” y en determinadas situaciones puede llegar a limitar, pero a la vista de los problemas que podrían originarse al no establecer un proceso de trabajo claro, reutilizable y verificable para descargar imágenes, generar contenedores nuevos, o mantener los actuales, es muy probable que tarde o temprano se produzca un incidente de seguridad. Es por esto que definir una serie de pautas a cumplir por todos los integrantes del equipo de DevOps, debería pasar de ser algo “recomendable” a "obligatorio". De este modo los equipos de auditoria y seguridad interna estarían al tanto de estas pautas para poder realizar las pruebas de cumplimiento y seguridad correspondientes.  La definición un estándar con controles específicos puede generarse desde cero ( al igual que cualquier estándar) , pero la utilización de guías conocidas ayuda a disminuir el margen de error al empezar a trabajar con una base establecida.  Aquí os dejamos una guía gratuita que os ayudará a establecer vuestros propios estándares.

Está claro que dentro de estas definiciones, además de mencionar cuáles son las configuraciones básicas a tener en cuenta, qué está permitido y qué no dentro de una empresa a la hora de trabajar con Dockers, también se pueden definir otras cuestiones como por ejemplo si sólo se permitirán ejecutar imágenes conocidas y firmadas en las que confiemos habilitando Content Trust o si se gestionará la confianza mediante llaves públicas y privadas utilizando un Docker Notary (os recomendamos leer este post sobre Docker Notary).

Búsqueda de vulnerabilidades:
Como mencionábamos en nuestro anterior post, es de suma importancia realizar pruebas de seguridad sobre los contenedores puestos en producción o pendientes de descarga para evitar percances como el que ocurrió con los 17 contenedores que tuvieron que darse de baja del Docker Hub por estar infectados, y si bien ya comentamos herramientas que podríamos utilizar para evitar esto, hoy añadimos a esa lista un framework opensource llamado Dagda que resulta muy interesante.

Pruebas de automatización periódicas:
A veces, se comete el error de presuponer que las pruebas de seguridad se realizan una sola vez. De esto hemos hablado en numerosas ocasiones en referencia a nuestro querido Faast. Sin embargo, no solo las pruebas de seguridad se pueden automatizar,  también puede hacerse con las pruebas de configuraciones y para ello es necesario usar nuestras habilidades armando scripts contra nuestros estándares o adaptar proyectos como el Docker Bench Security que realiza las pruebas basadas en el estándar CISSecurity que os compartíamos más arriba.

En resumen, una vez que entras al mundo de Docker seguramente quedarás fascinado por todas las posibilidades que ofrece, pero es importante recordar que la seguridad no es un mecanismo que se aplique de forma aislada, si no que es un proceso que debe mantenerse vivo y actualizado con cada nueva tecnología que implementemos y que de no hacerse,  puede conllevar incidentes en seguridad.

Si tienes dudas o comentarios ya sabes que nos los puedes hacer llegar a nuestra comunidad de ElevenPaths y compartirlo con el resto de usuarios.


Claudio Caracciolo
Team Leader of the CSA and the Bs. As. Research Office at ElevenPaths

No hay comentarios:

Publicar un comentario