Seguridad de Contenedores
Are your containers secure?
Los contenedores a menudo son penetrados por ataques como el control de acceso o vulnerabilidades de código de aplicaciones, o los atacantes se aprovechan de las vulnerabilidades de la imagen del contenedor. Esto puede provocar pánico en el kernel, la ejecución de escalaciones de privilegios u otras amenazas contra su sistema.
A pesar de estos riesgos, la contenerización ofrece varios beneficios. Son rápidos y livianos, lo que facilita la replicación de los entornos de sus aplicaciones. También son un gran activo durante la fase de prueba y refinamiento del proceso de desarrollo.
Sin las medidas de seguridad adecuadas, los contenedores podrían exponer su proceso a amenazas con las que no tendría que lidiar de otra manera. Los beneficios, sin embargo, ciertamente superan los riesgos. Aquí hay cinco pasos prácticos que puede tomar para mejorar la seguridad de su contenedor.
5 pasos que puede tomar para mejorar la seguridad de su contenedor
1. Recorte la grasa del sistema operativo
Debe eliminar todas las campanas, silbidos y activos innecesarios del sistema operativo en el que se ejecutará su contenedor. Si bien esto puede parecer un enfoque alarmista, lo cierto es que los ciberdelincuentes utilizan cada uno de los diversos servicios que realizan los sistemas operativos como superficies de ataque. Incluso si tiene un sistema alojado a través de la nube privada o pública, eliminando todo lo extra (además del seguridad en la nube funcionalidades) puede prevenir un problema crítico de seguridad.
Por lo tanto, debe intentar lo siguiente:
- Identificar los sistemas que necesitan soportar su contenedor
- Desechar todo lo demás
- Pruebe su contenedor después de la primera ronda de eliminaciones
- Busque cualquier función innecesaria que haya pasado por alto la primera vez y deséchese
- Vuelva a probar el contenedor
Por qué necesita quitar el exceso de funciones del sistema operativo de su contenedor
El razonamiento que justifica este enfoque es relativamente sencillo. Cada carga de trabajo tiene sus propios requerimientos. La carga de trabajo del contenedor, por ejemplo, tiene ciclos de actualización, arquitecturas de pila, parámetros de control de acceso, herramientas de seguridad y otras características importantes de los procesos DevOps que un sistema operativo tiene que administrar. Esto es cierto tanto si utiliza máquinas virtuales como entornos tradicionales.
Cada una de estas características tiene protocolos de seguridad adecuados para satisfacer sus necesidades. Al mismo tiempo, otra aplicación que se ejecuta en el SO host tiene sus propios requerimientos de infraestructura. Estas aplicaciones extrañas no solo roban recursos del sistema operativo lejos de sus equipos de DevOps, sino que cada una, sin darse cuenta, crea una superficie de ataque adicional. Esto se debe a que las medidas de seguridad de los contenedores requieren invariablemente recursos diferentes a los diseñados para asegurar los otros programas. Si bien su sistema operativo puede proteger el código de aplicaciones auxiliares, puede dejar sus contenedores expuestos.
2. Desconfía del software que viene con el contenedor
Es importante tener en cuenta que, aparte de las afirmaciones del proveedor, no tienes idea de lo fuertes que son las medidas de seguridad de los contenedores, no importa cómo funcionan. Algunas preguntas importantes incluyen:
- ¿El proveedor realizó el análisis de vulnerabilidades necesario?
- ¿Qué tipo de sistema de prevención de intrusiones implementaron?
- Cuando se combina con sus aplicaciones en contenedores, ¿el entorno las expone a riesgos inesperados?
Debido a que no conoce los detalles de las herramientas de seguridad incluidas con el contenedor, no puede ver ni predecir posibles vulnerabilidades. Por lo tanto, antes de poner su fe en las protecciones que vienen con su paquete contenedor, intente implementar estas mejores prácticas de seguridad:
- Verifique dos veces el contenido del contenedor
- No ejecute un contenedor si tiene software obsoleto
- Si no está familiarizado con el software, obtenga una comprensión de cómo funciona antes de implementarlo
- Verifique cada programa y biblioteca para ver si, de hecho, brindan las últimas y mejores protecciones
3. Inspeccionar el tiempo de ejecución del contenedor
Debido a que los tiempos de ejecución son responsables del lanzamiento y la administración de los contenedores, es necesario realizar un seguimiento cuidadoso de sus parches de seguridad. Se sabe que los tiempos de ejecución tienen vulnerabilidades distintas. Si bien esto no es necesariamente común, las posibles consecuencias son significativas.
Por ejemplo, en algunos casos, la configuración del tiempo de ejecución puede dar al contenedor acceso completo a los dispositivos del host, así como a sus directorios. En ese caso, el contenedor, una vez infectado con malware, podría usarse para lanzar un ataque en el host. Además, si no ha implementado adecuadamente segmentación de red, otros contenedores y áreas afectadas por las comunicaciones de red también podrían infectarse.
Las vulnerabilidades pueden ser más pronunciadas en los programas de tiempo de ejecución más antiguos. Si bien el programa pudo haber sido sólido cuando se codificó por primera vez, desde sus inicios, los ciberdelincuentes han estado diseñando nuevos métodos de ataque. Por lo tanto, las posibilidades de que las vulnerabilidades sean explotadas en los programas de tiempo de ejecución heredados aumentan mes a mes. Además, en un entorno de código abierto, puede ser difícil diferenciar las fuentes confiables de las sospechosas, lo que subraya aún más la necesidad de precaución.
4. Garantizar una visibilidad completa
Con la adopción de contenedores, la cantidad de sistemas que se ejecutan en cargas de trabajo de máquinas virtuales de metal desnudo puede aumentar exponencialmente. Debido a la naturaleza encapsulada de los contenedores, no puede asumir que la visibilidad de la carga de trabajo que hospeda el contenedor proporciona una visibilidad adecuada para el contenedor en sí. Es importante ver cada contenedor como su propia entidad y poner en marcha medidas de visibilidad en consecuencia. Para garantizar una visibilidad completa, debe:
- Detallar la ubicación de cada contenedor
- Describe lo que cada contenedor está haciendo
- Mapear el flujo de datos que van hacia y desde el contenedor
- Describe los recursos que cada contenedor puede consumir, incluidas las aplicaciones, los archivos y los del sistema operativo
Esta última medida es crucial porque si bien el contenedor en sí puede ser seguro, extrae recursos de otros lugares. Por lo tanto, puede, inadvertidamente, causar vulnerabilidades en otro lugar. Además, dependiendo de su industria, es posible que necesite establecer los estándares de cumplimiento necesarios que se aplican a los datos de cada contenedor.
5. Uso de la segmentación de red
Cuando una red se segmenta cuidadosamente, obtiene los beneficios de soluciones de seguridad diseñadas a medida para cada segmento combinadas con el control mejorado que resulta de minimizar sus respectivas superficies de protección.
Cómo la segmentación de red protege sus contenedores
Una red no segmentada es como un apartamento sin paredes. Si las plagas entraran, tendrían reinado libre para propagarse por todos los espacios habitables. Una red sin segmentación tiene el mismo tipo de vulnerabilidad principal. Los contenedores, a pesar de su nombre, no están intrínsecamente “contenidos” ni protegidos contra malware, virus y otras plagas cibernéticas.
Si usas segmentación de red para estructurar su red de manera que los contenedores tengan sus propios segmentos, una amenaza a un segmento no afecta a los demás. En efecto, estás construyendo muros a prueba de plagas. Incluso si una ciberamenaza pudiera entrar, se quedaría atrapada dentro de ese segmento. Esto detiene la contaminación lateral o este-oeste, dejando a su equipo libre para mantener la productividad, incluso si un ataque cibernético penetra en una sección de la red.
Mediante el uso de la segmentación de red, la comprobación triple de la seguridad de su contenedor, la inspección de programas en tiempo de ejecución y la eliminación del exceso de aplicaciones de su sistema operativo y la garantía de una visibilidad completa, puede crear un entorno más seguro y productivo para sus equipos de DevOps.
Más información
Descubre cómo Segmentación de confianza cero protege las implementaciones de contenedores, incluidas las plataformas Kubernetes y RedHat OpenShift.