¿Cuál es la diferencia entre `ssh -Y` (reenvío X11 confiable) y` ssh -X` (reenvío X11 no confiable)?

114

¿Cuál es la diferencia entre ssh -Y(reenvío X11 confiable) y ssh -X(reenvío X11 no confiable)? Por lo que he entendido, tiene algo que ver con la seguridad, pero no comprendí la diferencia y cuándo usar cuál.

Martin Ueding
fuente

Respuestas:

89

Ambas opciones tienen algo que ver con el reenvío X11. Esto significa que si habilita esto, puede usar un cliente gráfico a través de su sesión SSH (por ejemplo, usar Firefox u otra cosa).

Si utiliza ssh -X remotemachinela máquina remota se trata como un cliente no confiable. Entonces su cliente local envía un comando a la máquina remota y recibe la salida gráfica. Si su comando viola algunas configuraciones de seguridad, recibirá un error.

Pero si utiliza ssh -Y remotemachinela máquina remota se trata como un cliente de confianza. Esta última opción puede abrir problemas de seguridad. Debido a que otros clientes gráficos (X11) podrían rastrear datos de la máquina remota (hacer capturas de pantalla, hacer keylogging y otras cosas desagradables) e incluso es posible alterar esos datos.

Si desea saber más sobre esas cosas, le sugiero que lea la página de manual de Xsecurity o la especificación de la extensión X Security . Además, puedes consultar las opciones ForwardX11y ForwardX11Trusteden tu /etc/ssh/ssh_config.

qbi
fuente
66
La página de manual de ssh usa una redacción desafortunada, sugiriendo (al menos para mí) que -X no es seguro de usar y -Y es mejor. Así que gracias por esta respuesta.
Torsten Bronger
Entonces, ¿con -Xqué es imposible para otros clientes oler o alterar datos?
musiphil
66
Entonces, ¿por qué uno querría usar en -Ylugar de -Xen general?
Wernight
Tengo la misma pregunta (por qué usar -Y) y el único caso que entendí que puede ser útil es cuando el control de seguridad en el lado del servidor de alguna manera no está implementado / no es compatible. También he leído que reenviar X11 es generalmente una herramienta poderosa y peligrosa que debe tratarse como tal.
MakisH
55
Respondiendo a "¿Por qué usar -Y en lugar de -X?" pregunta, -X elimina el reenvío después de un tiempo de espera, mientras que -Y no lo hace. Sin embargo, puede anular esa configuración usando ForwardX11Timeout para la opción -X.
Seb
23

No utilice ninguno cuando no necesite ejecutar programas X11 de forma remota; úsalo -Xcuando lo hagas; e hipotéticamente usar -Ysi un programa X11 que le interesa funciona mejor con -Y que con -X. Pero actualmente (Ubuntu 15.10), -X es idéntico a -Y, a menos que edite ssh_configpara decir ForwardX11Trusted no. -X originalmente estaba destinado a habilitar la extensión X Security de la década de 1990, pero eso es antiguo e inflexible, y bloquea algunos programas, por lo que se ignora de manera predeterminada.

Tanto ssh -Ycomo le -Xpermiten ejecutar un programa X11 en una máquina remota, con sus ventanas apareciendo en el monitor X local. El problema es qué puede hacer el programa en las ventanas de otros programas y en el servidor X en sí.

local$ ssh -X remote
remote$ xlogo
# Runs xlogo on remote, but the logo pops up on the local screen.

El reenvío de confianza de X11 está habilitado por -Y. Este es el comportamiento histórico. Se confía en un programa con acceso a la pantalla con acceso a toda la pantalla. Puede capturar, registrar teclas e inyectar entradas en todas las ventanas de otros programas. Y puede usar todas las extensiones de servidor X, incluidas las como gráficos acelerados, que son exposiciones de seguridad. Lo cual es bueno para funcionar sin problemas, pero malo para la seguridad. Confía en que los programas remotos sean tan seguros como sus programas locales.

El reenvío X11 no confiable intenta restringir los programas remotos para acceder solo a sus propias ventanas y usar solo aquellas partes de X que son relativamente seguras. Lo que suena bien, pero actualmente no funciona bien en la práctica.

El significado de -Xactualmente depende de su configuración ssh.

En Ubuntu 14.04 LTS, a menos que edite su ssh_config, no hay diferencia entre -Xy -Y. "[B] porque demasiados programas se bloquean actualmente en modo [no confiable]".

ubuntu1404$ man ssh
...
 -X      Enables X11 forwarding.  This can also be specified on a per-host
         basis in a configuration file.
         ...
         (Debian-specific: X11 forwarding is not subjected to X11 SECURITY
         extension restrictions by default, because too many programs cur‐
         rently crash in this mode.  Set the ForwardX11Trusted option to
         “no” to restore the upstream behavior.  This may change in
         future depending on client-side improvements.)

ubuntu1404$ grep ForwardX11Trusted /etc/ssh/ssh_config
#   ForwardX11Trusted yes

Si ForwardX11Trusted no, entonces -Xhabilita el reenvío no confiable . De lo contrario, -Xse trata de la misma manera -Y, confiando en que los programas remotos con acceso a la pantalla son amigables.

Mitchell
fuente
1

La -Xopción habilita el reenvío X11:

-X   Enables X11 forwarding.  This can also be specified on a per-host
     basis in a configuration file.

     X11 forwarding should be enabled with caution.  Users with the
     ability to bypass file permissions on the remote host (for the
     user's X authorization database) can access the local X11 display
     through the forwarded connection.  An attacker may then be able
     to perform activities such as keystroke monitoring.

     For this reason, X11 forwarding is subjected to X11 SECURITY
     extension restrictions by default.  Please refer to the ssh -Y
     option and the ForwardX11Trusted directive in ssh_config(5) for
     more information.

La opción -Y, correspondiente a la directiva ForwardX11Trusted en ssh_config (5), es aún menos segura porque elimina los controles de extensión X11 SECURITY.

-Y      Enables trusted X11 forwarding.  Trusted X11 forwardings are not
        subjected to the X11 SECURITY extension controls.

Es más seguro de usar -x

-x   Disables X11 forwarding.
Ortomala Lokni
fuente