Seguridad de reenvío de Docker X11

4

Actualmente estoy ejecutando un contenedor Docker con un programa con una GUI reenviada a través de SSH (usando reenvío X sobre OpenSSH). El servidor virtualizado tiene habilitado X11Forwarding y puedo conectarme a él desde mi máquina host y abrir una aplicación desde él sin mucho problema.

¿Esto es seguro? ¿Esto le da al sistema / aplicación de espacio de arena acceso al host de alguna manera? ¿Cómo estoy exponiendo mi sistema a la aplicación posiblemente no confiable? ¿El sistema que se está conectando a través de SSH está exponiendo toda su sesión de pantalla X a la máquina virtual?

Soy consciente de que puede capturar pulsaciones de teclas y otras cosas incluso mientras está escondido en segundo plano (minimizado a la barra de tareas / bandeja de KDE), como lo demostró aplicaciones como Skype, pero me gustaría saber si esto se extiende más allá de eso , como el acceso directo al sistema en cualquier forma.

    
pregunta Mythical Juggernaut 31.10.2015 - 06:38
fuente

3 respuestas

3

En general, debe no reenviar la visualización de X11 desde entornos no confiables a su entorno local. X11 es una tecnología antigua que no fue concebida teniendo en cuenta la seguridad desde el principio, al contrario, fue diseñada para permitir que cada aplicación se comunique entre sí.

¿Significa " comunicarse "? Como dijiste, podría agarrarte las pulsaciones de teclado. También podría tomar capturas de pantalla. Podría interactuar con otras ventanas, inyectar pulsaciones de teclas, movimientos del mouse, etc., etc., etc. Bueno, supongo que lo consiguió: permitir que un sistema no confiable para exportar la pantalla X11 a su servidor local es un poco como pasar su pantalla. Teclado y mouse para este sistema no confiable. Tiene razón en el sentido de que es posible que no pueda acceder directamente a sus archivos locales, pero será casi equivalente.

Sin embargo, se ha realizado cierto trabajo para mitigar el riesgo. De hecho, X11 incluye una distinción entre clientes confiables y no confiables. Un cliente no confiable debe estar confinado en un subconjunto de acciones diseñadas para prevenir la mayoría de las acciones infames descritas anteriormente.

SSH integra este modo, incluso si alguna distribución de Linux lo deshabilita y considera que todos los clientes X11 son confiables para la conveniencia del usuario final (!). Es posible que desee verificar los parámetros ForwardX11 y ForwardX11Trusted en sus archivos de configuración de cliente SSH:

  • ForwardX11 dice si X11 está habilitado de forma predeterminada cuando establece una conexión SSH (debe usar el parámetro de línea de comando -x (minúscula 'x') para deshabilitarlo a petición),
  • ForwardX11Trusted dice si, cuando habilita el reenvío X11, el cliente se considerará automáticamente como confiable. Le recomiendo encarecidamente que ponga este a no .

Cuando ForwardX11Trusted se establece en no , el comando ssh le ofrecerá seleccionar el nivel de confianza para su sesión:

  • El parámetro de línea de comando -X considerará al cliente como no seguro, esta es la forma recomendada de hacerlo.
  • El parámetro de línea de comando -Y considerará al cliente como seguro, esto solo es necesario para casos de uso muy específicos y se debe usar con cuidado, ya que debe considerar que las aplicaciones remotas tendrán acceso completo a su sistema. .

Sin embargo, como mencioné anteriormente, no debe confiar en la sensación de seguridad que proporciona el modo "seguro" -X para exportar la visualización desde un entorno no confiable a su servidor X local. Pero esto debería ser lo suficientemente sensato si considera este entorno Docker como un entorno confiable.

El aislamiento de la aplicación GUI es un dominio que se está estudiando en la actualidad. Si bien todos los demás sistemas Linux han pasado por grandes medidas de endurecimiento hasta ahora, tengo la impresión de que X casi siempre se dejó en suspenso, demasiado grande y complejo para evolucionar realmente y adaptarse a las necesidades actuales, pero dejando ahora una debilidad desagradable. / p>

Las plataformas seguras como Qubes OS , que se basa precisamente en un conjunto de Xen VM aislado, exportan X a un dominio Dom0 a través del dolor de desarrollar su propio protocolo X "proxy inverso" entre los clientes X y el servidor para garantizar la seguridad del servidor. No conozco ningún equivalente independiente de dicha tecnología, pero puede encontrar ideas interesantes aquí: El mejor método para sandbox X aplicaciones en Ubuntu . El servidor X está abandonando sus últimos tiempos y debería ser reemplazado por una alternativa más moderna y segura tan pronto como tales alternativas estén listas (consulte Wayland y Mir por ejemplo), pero hasta entonces, al menos, consulte a quién ¡Confía tu escritorio!

    
respondido por el WhiteWinterWolf 01.11.2015 - 15:33
fuente
2

Para ejecutar aplicaciones GUI en la ventana acoplable y evitar las fugas de seguridad de X, he publicado x11docker en github .

La idea principal es ejecutar un segundo servidor X con sus propias cookies de autenticación. los contenedores de la ventana acoplable obtienen acceso al nuevo servidor X y se separan de la pantalla: 0.

    
respondido por el mviereck 02.12.2016 - 18:32
fuente
0

Lo que esencialmente hiciste fue mostrar una aplicación remota (en tu caso, acoplada en un docker) en tu servidor X local.

Esta no es una forma diferente de mostrar tal aplicación desde cualquier servidor remoto, que es tan seguro como X11 (así que no hay acceso a su host local).

La aplicación usa indirectamente tu host local (aunque docker ) pero este es un entorno de espacio aislado (aparte de las vulnerabilidades docker ). Sin embargo, tiene la capacidad de, por ejemplo, escribir archivos en su disco (escribiéndolos en su sistema de archivos virtualizado, que luego se traduce en archivos en su host)

    
respondido por el WoJ 01.11.2015 - 11:52
fuente

Lea otras preguntas en las etiquetas