Si bien los contenedores y los microservicios siguen ganando popularidad entre los desarrolladores, no es de extrañar que también haya crecido el interés en las mejores prácticas de seguridad de contenedores . Aunque la arquitectura basada en contenedores presenta una serie de ventajas: portabilidad, ligereza, fácil mantenimiento y escalabilidad, también plantea desafíos de seguridad específicos.
En comparación con las máquinas virtuales, los contenedores son más ágiles y eficientes en cuanto a recursos. A diferencia de ejecutar aplicaciones directamente en el sistema operativo, ofrecen una mayor flexibilidad y seguridad. Además gracias a plataformas como Kubernetes, son realmente sencillas de gestionar.
Dado que su empleo en el área comercial no solo aumentó en los últimos 10 años sino que continuó creciendo, ahora está claro para todos que los beneficios que ofrecen los contenedores superan los riesgos de seguridad que implican.
“Escribir una vez, ejecutar en cualquier lugar” es un sueño hecho realidad para los desarrolladores, y todos sabemos cómo vivir su sueño puede ser un negocio arriesgado. Entonces, antes de llegar a la lista de verificación de mejores prácticas imprescindibles para la seguridad de los contenedores que prometí revelar, hagamos un breve desvío para familiarizarnos más con su enemigo y las amenazas potenciales que podría traer.
Factores de riesgo comunes en la seguridad de los contenedores
- Malware de contenedor : los actores de amenazas pueden implementar software malicioso en varios momentos a lo largo del ciclo de vida del contenedor. Después de todo, los contenedores son software empaquetado y, como cualquier software, pueden estar infectados con malware .
- Imágenes de contenedor : siempre asegúrese de verificar la fuente de la imagen que decide implementar. Los actores de amenazas pueden publicar en Docker tan bien como cualquier desarrollador legítimo y un contenedor infectado también podría propagar malware a otros contenedores.
- Registros de contenedores : tenga cuidado de almacenar las imágenes de sus contenedores de forma segura. Los registros públicos son una solución rápida y sencilla, pero los privados suelen ser más seguros. En un mundo ideal, los datos confidenciales solo deberían almacenarse en un registro de contenedor privado.
- Entorno de tiempo de ejecución del contenedor : configurar los contenedores para que se ejecuten en modo privilegiado y darles acceso a datos confidenciales puede generar fugas de datos . Siga monitoreando el tráfico de la red y corte cualquier comunicación insegura.
- Privilegios de contenedores mal protegidos : las medidas de seguridad básicas de autenticación y autorización no deben descuidarse, pero sucede que se pasaron por alto. Eso permitió a los actores de amenazas obtener acceso a información confidencial o incluso tomar el control de toda la consola.
- La tubería como objetivo : si los actores de amenazas aprovechan cualquier configuración incorrecta de CI/CD, asegúrese de que aprovecharán cualquier vulnerabilidad que les dé acceso a las bases de datos utilizadas en toda la tubería.
Después de repasar los factores de riesgo más comunes que podrían afectar un sistema de contenedores, es hora de asegurarse de tomar las medidas adecuadas para mantener sus contenedores protegidos contra malware, fugas de datos y ataques DDoS.
Lista de verificación de mejores prácticas de seguridad de contenedores
1. Asegure sus imágenes
Cuando no esté creando la imagen desde cero y decida usar imágenes base de un registro de contenedor externo, asegúrese de que las imágenes que elija sean seguras y verifique las firmas de las imágenes. Utilice la herramienta de código abierto Notario para verificar las firmas.
Obtenerlos de repositorios famosos como Docker Hub no significa necesariamente que esté a salvo. Cualquiera puede cargar imágenes en Docker y los actores de amenazas conocen y usan esta técnica para propagar malware. El almacenamiento es igualmente importante y, aunque sin duda es más costoso y requiere más tiempo, si se hace bien el almacenamiento privado le evita el riesgo de manipulación.
Al incluir una aplicación dentro de la imagen del contenedor, reduzca la superficie de ataque eliminando cualquier elemento que la aplicación no necesite para funcionar correctamente, como los binarios “sed” y “awk”. El escaneo de contenedores en busca de vulnerabilidades también es imprescindible.
2. Registros seguros
Para empezar, asegúrese de que su equipo solo use imágenes seguras. Utilice medidas de control de acceso privilegiado si trabaja con un registro privado para restringir las posibilidades de interacción. Evite que terceros no autorizados accedan o publiquen imágenes en su registro.
Pero los contenedores pueden volverse vulnerables debido a una variedad de factores, incluido el software dentro del contenedor, las interacciones con el sistema operativo host y otros contenedores, las configuraciones de redes y almacenamiento, etc.
Por lo tanto, escanee imágenes en busca de vulnerabilidades de forma continua o al menos periódicamente. Incluso si elige cuidadosamente imágenes libres de vulnerabilidades, en algún momento podrían infectarse y querrá saber lo más rápido posible cuando esto suceda.
3. Diseña contenedores inmutables
El acceso de Shell a las imágenes, que los desarrolladores a menudo dejan para que puedan hacer correcciones en producción, también puede ser utilizado por los actores de amenazas para inyectar código malicioso. Puede evitar esto creando contenedores inmutables, que no se pueden modificar.
Aplicar parches , reconstruir la imagen o volver a implementar el contenedor son formas más seguras para las necesidades de actualización de su aplicación. Siempre puede volver a implementar la imagen anterior si necesita revertir los cambios.
Tenga en cuenta que debido a la naturaleza inmutable de los contenedores, la persistencia de los datos se ve afectada, así que asegúrese de evitar perder bases de datos utilizando soluciones de almacenamiento fuera de los contenedores.
4. Aplicar el principio del mínimo privilegio
Reduzca la superficie de ataque mediante el diseño de redes virtuales no conectadas para sus contenedores, a fin de mejorar el aislamiento. Le recomendamos encarecidamente que solo permita la conectividad entre contenedores cuando realmente no haya otra forma de evitarlo.
Al igual que con muchos otros temas de ciberseguridad, es imprescindible seguir el principio de privilegio mínimo.
La seguridad de la comunicación es oro, así que valore su privacidad. Utilice Transport Layer Security (TLS) para cifrar los datos que comunica y evitar que los hackers se hagan con sus contraseñas.
5. ¡No se permiten contenedores privilegiados a menos que sea absolutamente necesario!
No permita que ninguno de sus contenedores se ejecute en modo privilegiado a menos que no tenga otra opción. Un contenedor en ejecución en modo privilegiado tendrá acceso a todos los componentes del host, por lo que, en caso de que se vea comprometido, otorgará a los hackers acceso al servidor.
6. Supervisar la actividad del contenedor
La “necesidad de velocidad” no solo significa una alta productividad, sino que también requiere un seguimiento profesional. Con nuevas imágenes y versiones que se implementan constantemente, las cosas pueden salirse de control rápidamente. Si algo sale mal querrá saberlo lo antes posible y tal vez tener la oportunidad de detener la infección antes de que se propague a todos los demás contenedores.
El monitoreo de aplicaciones en contenedores y arquitecturas de microservicios implica recopilar métricas y controlar su estado. Las herramientas de monitoreo le permiten identificar comportamientos inusuales y remediar el problema en el sitio.
Use herramientas de monitoreo nativas de contenedores para estar atento a los motores de contenedores, las cargas de trabajo que se ejecutan en contenedores, los procesos de red y los nodos maestros. El filtrado de DNS le permite aprovechar cualquier pico de tráfico o flujos de tráfico extraños.
7. Garantice la seguridad del sistema operativo host
Use sistemas de operación de host minimalistas, diseñados con el propósito de ejecutar contenedores únicamente. Si se elimina toda la funcionalidad innecesaria, la superficie de ataque será mucho más pequeña que la de un sistema operativo “normal”.
Las buenas prácticas habituales también funcionan aquí: implementar la autenticación de usuarios, establecer roles de acceso y especificar permisos para el acceso a archivos binarios. Utilice el filtrado de salida para detectar signos de actividad maliciosa.
Otra buena idea es ejecutar el motor del contenedor en modo kernel y los contenedores en modo usuario.
8. Usa una plataforma de orquestación
Las plataformas de orquestación le ofrecen una gestión automatizada de su entorno de contenedores, con implementación, escalado y redes incluidas. También vienen con capacidades de seguridad nativas, por lo que el uso de plataformas como Kubernetes, Azure AKS, Google GKE, Amazon EKS, etc. puede proporcionar control de acceso basado en roles (RBAC) y puntos finales de API seguros.
¿Cómo puede Heimdal® ayudar a mantener un entorno de contenedor saludable?
La aplicación de las mejores prácticas en la seguridad de los contenedores incluye no solo proteger el sistema operativo del host, hacer cumplir la administración de acceso de privilegios o buscar vulnerabilidades. Monitorear el tráfico de comunicaciones es un paso vital para asegurar los contenedores. Trabajar con sistemas que emplean cientos o miles de contenedores hace obligatoria la automatización de procesos.
Heimdal® Threat Prevention detecta amenazas cibernéticas emergentes y ocultas, inhibe los ataques cibernéticos que el software antivirus estándar pasa por alto y bloquea la fuga de datos. Bloquea dominios maliciosos e impide la comunicación con la infraestructura ciberdelincuente al escanear el tráfico de tus usuarios en tiempo real.
Es un conocido experto en seguridad móvil y análisis de malware. Estudió Ciencias de la Computación en la NYU y comenzó a trabajar como analista de seguridad cibernética en 2003. Trabaja activamente como experto en antimalware. También trabajó para empresas de seguridad como Kaspersky Lab. Su trabajo diario incluye investigar sobre nuevos incidentes de malware y ciberseguridad. También tiene un profundo nivel de conocimiento en seguridad móvil y vulnerabilidades móviles.