Cuatro claves de seguridad para contenedores Linux

Kimberly Craven, Senior Manager de Marketing comercial de Plataformas y Contenedores de Red Hat, desarrolla las claves de seguridad de contenedores Linux.

Los contenedores ayudan a los desarrolladores de software a ahorrar tiempo y dinero, proporcionando un mecanismo para construir aplicaciones mucho más manejables a través de desarrollo, testing y entornos de implementación. La naturaleza ubicua de los contenedores también presenta desafíos para su adopción empresarial, incluyendo la propia seguridad de los contenedores. En relación a este tema, Forrester realizó un estudio en el que se reveló que el 53% de los responsables de operaciones y desarrollo de TI consideran la seguridad como la mayor preocupación a la hora de adoptar contenedores.

Las empresas que buscan adoptar contenedores deberían mirar de cerca cómo plantear la seguridad de sus contenedores, centrándose en su procedencia, contenido, aislamiento y confianza.

Utilizar fuentes de confianza

Más del 30% de las imágenes oficiales en Docker Hub contienen vulnerabilidades de alta prioridad según un estudio publicado por BanyanOps. La certificación –mediante firmas digitales, por ejemplo- aumenta el nivel de seguridad, confirmando quién ha creado el contenedor y con qué propósito.

Cuando se tiene registrada la propiedad de una obra de arte o una antigüedad, tienes que validar su autenticidad o calidad. Introducir en tu centro de datos un contenedor cuyo contenido no es de confianza puede hacer mucho más daño que colgar una obra de arte falsificada en tu oficina. Esta es la razón por la que Red Hat y otros líderes de la industria están trabajando para establecer normas y prácticas para la certificación de contenedores. La certificación ayuda a asegurar que:

  • Todos los componentes provienen de fuentes de confianza
  • Los paquetes de la plataforma no han sido manipulados y están actualizados
  • La imagen del contenedor está libre de vulnerabilidades conocidas en los componentes y capas de la plataforma
  • Los contenedores son compatibles y se ejecutarán mediante entornos host certificados

¿Qué hay dentro de un contenedor?

Verificar la procedencia de un contenedor es elemental, pero verificar que hay dentro de la imagen del contenedor debe ser lo más importante. De manera similar a la forma en que una inspección profunda de paquetes mira dentro de la red en busca de contenido malicioso, Deep Container Inspection (DCI) analiza más allá del formato de la imagen del contenedor, hasta su contenido mismo. Tener visibilidad dentro del código de tus contenedores es fundamental para mantener la seguridad durante y después del desarrollo.

Aislamiento

Una vez que tengamos aplicaciones basadas en contenedores de confianza, necesitamos asegurar que no se vean comprometidas por otras imágenes de contenedores en el mismo host. Lo cierto es que los contenedores, en realidad, no “contienen” aplicaciones de la misma forma que vehículos blindados contienen dinero. Es más acertado decir que los contenedores empaquetan códigos de aplicaciones junto con sus dependencias. Si te imaginas los contenedores como si tuvieran paredes, verás que estas paredes son delgadas. El contenido malicioso de un solo contenedor puede irrumpir dentro de otro contenedor o en el host del sistema operativo. Cada proceso que se ejecuta dentro de un contenedor se comunica directamente con el host kernel. Para todos los contenedores de ese host, el kernel funciona como único punto de fallo. Una vulnerabilidad dentro del kernel de Linux podría permitir el acceso a un contenedor, apoderándose del SO host y todos los demás contenedores de ese host. Por esto, es importante contar con un SO host mantenido por ingenieros de confianza, y actualizarlo frecuentemente con las últimas actualizaciones de seguridad. Los contenedores construidos en un host débil heredan el peligroso modelo de seguridad proporcionado por ese host. El kernel debe incluir funcionalidades que proporcionen unos niveles adecuados de aislamiento y separación como SELinux, Seccomp, Namespaces y más. Las aplicaciones de contenedores requieren las mismas precauciones de seguridad que las aplicaciones tradicionales. Muchas organizaciones están buscando en la combinación de los contenedores y la virtualización, asegurar sus entornos multi-usuario. 

La confianza en el contendor es temporal

Aunque confíes en una imagen de contenedor cuando se crea, has de saber que este contenedor y su contenido se vuelven obsoletos con el tiempo. Se identifican nuevas vulnerabilidades a diario, y la imagen del contenedor depende del código y las dependencias que contiene. Sólo se necesita una vulnerabilidad para poner en peligro tu contenedor y toda tu infraestructura.

Mientras que la velocidad y la agilidad son factores clave para la adopción de contenedores en la empresa, éstas no se pueden lograr a costa de la seguridad. Esta es la razón por la que un DCI de nivel empresarial, junto con certificaciones, políticas y fiabilidad, serán esenciales para el desarrollo, despliegue y gestión de los contenedores. Para aprovechar al máximo los beneficios que ofrecen los contenedores, garantizando al tiempo su seguridad y contenido, las organizaciones necesitan mejores formas de determinar:

  • La procedencia. Antes de mover un contenedor a tu red, asegúrate de saber lo que hay dentro y dónde se originó. Investiga la tecnología de validación y las opciones de certificación para confiar en la fuente del contenedor.
  • El contenido. Una inspección en profundidad de contenedores puede identificar desde el formato de imagen del contenedor y su contenido, hasta identificar y mitigar vulnerabilidades.
  • El aislamiento. Considera la posibilidad de aislar la ruta de ejecución del contenedor utilizando SELinux. En entornos multiusuario, ten en cuenta los contenedores de acoplamiento con virtualización para una capa adicional de protección.
  • La confianza en el tiempo. Inspecciona el contenido de los contenedores con regularidad para validar la mitigación de riesgos de seguridad. Utiliza herramientas runtime como Red Hat OpenShift Enterprise para detectar y reparar las vulnerabilidades.