Qual é a diferença entre `ssh -Y` (encaminhamento X11 confiável) e` ssh -X` (encaminhamento X11 não confiável)?

114

Qual é a diferença entre ssh -Y(encaminhamento X11 confiável) e ssh -X(encaminhamento X11 não confiável)? Até onde eu entendi, isso tem algo a ver com segurança, mas eu não entendi a diferença e quando usar qual.

Martin Ueding
fonte

Respostas:

89

Ambas as opções têm algo a ver com o encaminhamento do X11. Isso significa que, se você habilitar isso, poderá usar um cliente gráfico na sua sessão SSH (por exemplo, usar o Firefox ou outra coisa).

Se você usar ssh -X remotemachinea máquina remota, será tratado como um cliente não confiável. Portanto, seu cliente local envia um comando para a máquina remota e recebe a saída gráfica. Se o seu comando violar algumas configurações de segurança, você receberá um erro.

Mas se você usar ssh -Y remotemachinea máquina remota, será tratado como um cliente confiável. Esta última opção pode abrir problemas de segurança. Como outros clientes gráficos (X11) podem farejar dados da máquina remota (fazer capturas de tela, registrar keylogging e outras coisas desagradáveis) e é ainda possível alterar esses dados.

Se você quiser saber mais sobre essas coisas, sugiro ler a página de manual do Xsecurity ou a especificação de extensão do X Security . Além disso, você pode verificar as opções ForwardX11e ForwardX11Trustedno seu /etc/ssh/ssh_config.

qbi
fonte
6
A página de manual do ssh usa palavras infelizes, sugerindo (pelo menos para mim) que -X não é seguro de usar e -Y é melhor. Então, obrigado por esta resposta.
Torsten Bronger 9/09/14
Então, -Xé impossível para outros clientes farejar ou alterar dados?
musiphil
6
Então, por que alguém iria querer usar em -Yvez de -Xem geral?
Wernight
Tenho a mesma pergunta (por que usar -Y) e o único caso em que entendi isso pode ser útil é quando o controle de segurança do lado do servidor não é implementado / não é compatível. Também li que o encaminhamento do X11 geralmente é uma ferramenta poderosa e perigosa que deve ser tratada como tal.
precisa saber é o seguinte
5
Respondendo a "Por que usar -Y em vez de -X?" pergunta, -X descarta o encaminhamento após um tempo limite, enquanto -Y não. Você pode substituir essa configuração usando o ForwardX11Timeout para a opção -X.
Seb
23

Use nem quando não precisar executar programas X11 remotamente; use -Xquando você faz; e hipoteticamente use -Yse um programa X11 com o qual você se preocupa funcionar melhor com -Y do que com -X. Mas atualmente (Ubuntu 15.10), -X é idêntico a -Y, a menos que você edite ssh_configpara dizer ForwardX11Trusted no. -X foi originalmente planejado para habilitar a extensão X Security da década de 90, mas é antiga e inflexível e trava alguns programas, sendo ignorada por padrão.

O ssh -Ye -Xpermite executar um programa X11 em uma máquina remota, com suas janelas aparecendo no monitor X local. A questão é o que o programa pode fazer nas janelas de outros programas e no próprio servidor X.

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

O encaminhamento confiável do X11 é ativado por -Y. Esse é o comportamento histórico. Um programa com acesso à tela é confiável com acesso à tela inteira . Pode capturar imagens, keylog e injetar entrada em todas as janelas de outros programas. E pode usar todas as extensões de servidor X, incluindo aquelas como gráficos acelerados, que são exposições de segurança. O que é bom para funcionar sem problemas, mas ruim para a segurança. Você está confiando que os programas remotos são tão seguros quanto os programas locais.

O encaminhamento não confiável do X11 tenta restringir os programas remotos a acessar apenas suas próprias janelas e a usar apenas as partes do X que são relativamente seguras. Parece bom, mas atualmente não funciona bem na prática.

O significado de -Xatualmente depende da sua configuração ssh.

No Ubuntu 14.04 LTS, a menos que você edite o seu ssh_config, não há diferença entre -Xe -Y. "[B] porque muitos programas atualmente travam no modo [não confiável]."

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

Se ForwardX11Trusted no, -Xhabilita o encaminhamento não confiável . Caso contrário, -Xé tratado da mesma forma que -Y, confiando que os programas remotos com acesso a exibição são amigáveis.

Mitchell
fonte
1

A -Xopção permite o encaminhamento do 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.

A opção -Y, correspondente à diretiva ForwardX11Trusted em ssh_config (5), é ainda menos segura porque remove os controles de extensão X11 SECURITY.

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

É mais seguro usar -x

-x   Disables X11 forwarding.
Ortomala Lokni
fonte