Docker es una de las plataformas de contenedorización más utilizadas y es muy querida entre los ingenieros de software. Viene con una poderosa herramienta CLI para administrar contenedores Docker y otras tareas relacionadas.
De forma predeterminada, necesita privilegios de root para ejecutar cualquier comando relacionado con Docker en Linux. Por supuesto, puede cambiar esto por conveniencia y ejecutar los comandos de Docker sin privilegios de root, pero debe tener en cuenta las implicaciones de seguridad.
¿Qué es la superficie de ataque de Docker?
Una superficie de ataque es la cantidad de puntos de ataque, más como la cantidad de ventanas, que un usuario malintencionado puede usar para ingresar a su sistema y causar estragos. Como regla general, los sistemas de TI deben tener superficies de ataque mínimas para reducir los riesgos de seguridad.
En general, la superficie de ataque de Docker es mínima. Los contenedores se ejecutan en un entorno seguro y aislado y no afectan al sistema operativo del host a menos que se indique lo contrario. Además, los contenedores Docker solo ejecutan servicios mínimos, lo que los hace más seguros.
Puede configurar su sistema Linux para controlar Docker sin privilegios de sudo. Esto puede ser conveniente en entornos de desarrollo, pero puede ser una vulnerabilidad de seguridad grave en los sistemas de producción. Y he aquí por qué nunca debe ejecutar Docker sin sudo.
1. Capacidad para controlar contenedores Docker
Sin los privilegios de sudo, cualquiera que tenga acceso a su sistema o servidor puede controlar todos los aspectos de Docker. Tienen acceso a sus archivos de registro de Docker y pueden detener y eliminar contenedores a voluntad o accidentalmente. También podría perder datos críticos que son vitales para la continuidad del negocio.
Si está utilizando contenedores Docker en entornos de producción, el tiempo de inactividad da como resultado una pérdida de negocios y confianza.
2. Obtenga el control de los directorios del sistema operativo host
Docker Volumes es un servicio poderoso que le permite compartir y conservar datos de contenedores escribiéndolos en una carpeta específica en el sistema operativo anfitrión.
Una de las mayores amenazas que presenta la ejecución de Docker sin sudo es que cualquiera en su sistema puede obtener el control de los directorios del sistema operativo host, incluido el directorio raíz.
Todo lo que tiene que hacer es ejecutar una imagen Docker de Linux, por ejemplo, la imagen de Ubuntu, y montarla en la carpeta raíz con el siguiente comando:
ventana acoplable ejecuta -ti -v /:/hostproot ubuntu bash
Y dado que los contenedores Docker de Linux se ejecutan como usuario raíz, esencialmente significa que tiene acceso a toda la carpeta raíz.
El comando antes mencionado descargará y ejecutará la última imagen de Ubuntu y la montará en el directorio raíz.
En la terminal de contenedores de Docker, vaya a la /hostproot directorio usando el comando cd:
cd /hostproot
Listado del contenido de este directorio usando el comando ls muestra todos los archivos del sistema operativo host que ahora están disponibles en su contenedor. Ahora, puede manipular archivos, ver archivos secretos, ocultar y mostrar archivos, cambiar permisos, etc.
3. Instalar software malicioso
Una imagen de Docker bien diseñada puede ejecutarse en segundo plano y manipular su sistema o recopilar datos confidenciales. Peor aún, un usuario malicioso podría propagar código malicioso en su red a través de contenedores Docker.
Hay varios casos prácticos de uso de contenedores Docker, y con cada aplicación viene un conjunto diferente de amenazas de seguridad.
Proteja sus contenedores Docker en Linux
Docker es una plataforma potente y segura. Ejecutar Docker sin sudo aumenta su superficie de ataque y hace que su sistema sea vulnerable. En entornos de producción, se recomienda encarecidamente que utilice sudo con Docker.
Con tantos usuarios en un sistema, se vuelve extremadamente difícil asignar permisos a cada usuario. En tales casos, seguir las mejores prácticas de control de acceso puede ayudarlo a mantener la seguridad de su sistema.