Docker ejecuta procesos de contenedor como root, ¿debería preocuparme?

7

Estoy ejecutando un NAS (QNAP) con funcionalidad Docker (" containererstation "). Pensé que sería mucho más seguro instalar aplicaciones a través de contenedores en lugar de aplicaciones de la tienda (o tiendas de terceros).

Muchos paquetes están desactualizados en su tienda oficial y QNAP ejecuta todos los programas y aplicaciones como root / admin (incluso el servidor web), por lo que pensé que Docker sería una solución.

Ahora tengo implementadas algunas instancias de Docker y sus procesos parecen ejecutarse también como root / admin.

Loquemehacepensar:¿esunfalsosentidodeseguridadquetengoenestemomento?¿Oesmuchomássegurousarloscontenedoresdelaventanaacoplablequelaraíz"normal"?

    
pregunta Critical joe 27.12.2017 - 19:45
fuente

1 respuesta

8

Supongo que le preocupan las aplicaciones en contenedor que se ejecutan como root.

la raíz en el contenedor es un riesgo. Todavía interactúa con el núcleo como raíz. Y si una aplicación logra salir del contenedor, tiene privilegios de root en el host.

Aunque, la raíz en el contenedor ha restringido capacidades en comparación con raíz en el host. P.ej. no tiene la capacidad SYS_ADMIN que se necesita para mount . Sin embargo, evite la raíz en el contenedor siempre que sea posible para minimizar los riesgos.

Si sus aplicaciones en contenedores no necesitan privilegios de root, puede ejecutar contenedores con un usuario sin privilegios. La forma más fácil es especificar la opción --user UID:GID en docker run .

Pero supongo que necesita privilegios de root para sus aplicaciones en contenedores. Docker proporciona espacios de nombre de usuario para abordar esto.

No doy una configuración de ejemplo aquí ya que no estoy realmente familiarizado con el espacio de nombres de los usuarios. Lo instalé una vez y puedo confirmar que funciona. Recomiendo leer la documentación: enlace

Para abreviar: la configuración del espacio de nombres del usuario logra un usuario root "falso" en un contenedor que en el host se asigna a un usuario sin privilegios. Si la aplicación se rompe, no tiene privilegios de root en el host.

Aparte de eso, puede reducir las capacidades del contenedor para mejorar la seguridad del contenedor. Use la opción --cap-drop=xyz y descarte todo lo que su contenedor no necesita. O incluso mejor, use --cap-drop=ALL y agregue solo las capacidades que realmente se necesitan con por ejemplo. %código%. Mire enlace

Otra opción para mejorar la seguridad del contenedor es --cap-add=CHOWN .

    
respondido por el mviereck 30.12.2017 - 00:40
fuente

Lea otras preguntas en las etiquetas