Quelle est la différence entre `ssh -Y` (transmission X11 de confiance) et` ssh -X` (transmission X11 non fiable)?

114

Quelle est la différence entre ssh -Y(transmission X11 de confiance) et ssh -X(transmission X11 non fiable)? Autant que je sache, cela a quelque chose à voir avec la sécurité, mais je n'ai pas compris la différence et quand utiliser lequel.

Martin Ueding
la source

Réponses:

89

Les deux options ont quelque chose à voir avec le transfert X11. Cela signifie que si vous l'activez, vous pouvez utiliser un client graphique via votre session SSH (par exemple, utilisez Firefox ou autre chose).

Si vous utilisez ssh -X remotemachinela machine distante, elle est traitée comme un client non approuvé. Votre client local envoie donc une commande à la machine distante et reçoit la sortie graphique. Si votre commande enfreint certains paramètres de sécurité, vous recevrez une erreur.

Mais si vous utilisez ssh -Y remotemachinela machine distante, elle est traitée comme un client de confiance. Cette dernière option peut ouvrir des problèmes de sécurité. Parce que d’autres clients graphiques (X11) peuvent renifler des données de la machine distante (faire des captures d’écran, enregistrer au clavier, etc.) et qu’il est même possible de modifier ces données.

Si vous souhaitez en savoir plus sur ces éléments, nous vous conseillons de lire la page de manuel Xsecurity ou la spécification d’extension X Security . En outre, vous pouvez vérifier les options ForwardX11et ForwardX11Trusteddans votre /etc/ssh/ssh_config.

qbi
la source
6
La page de manuel ssh utilise un libellé malheureux, suggérant (du moins pour moi) que -X est dangereux à utiliser et -Y, c'est mieux. Merci donc pour cette réponse.
Torsten Bronger
Alors, -Xest-il impossible pour d'autres clients de renifler ou de modifier des données?
musiphil
6
Alors, pourquoi voudrait-on utiliser -Yau lieu de -Xen général?
Wernight
J'ai la même question (pourquoi utiliser -Y) et le seul cas où j'ai compris que cela pourrait être utile est lorsque le contrôle de sécurité côté serveur n'est pas implémenté / n'est pas compatible. J'ai également lu que la transmission X11 est généralement un outil puissant et dangereux qui doit être traité comme tel.
MakisH
5
Répondre à la question "Pourquoi utiliser -Y au lieu de -X?" question, -X abandonne le transfert après un délai alors que -Y ne le fait pas. Vous pouvez toutefois remplacer cette configuration en utilisant ForwardX11Timeout pour l'option -X.
Seb
23

N'utilisez ni quand vous n'avez pas besoin d'exécuter des programmes X11 à distance; utilisez -Xquand vous faites; et hypothétiquement utiliser -Ysi un programme X11 qui vous tient à coeur fonctionne mieux avec -Y qu'avec -X. Mais actuellement (Ubuntu 15.10), -X est identique à -Y, sauf si vous éditez ssh_configpour le dire ForwardX11Trusted no. -X était à l'origine destiné à permettre l'extension de sécurité X des années 1990, mais il est ancien et inflexible et bloque certains programmes. Il est donc ignoré par défaut.

Ssh -Yet -Xvous permettent d’exécuter un programme X11 sur une machine distante, avec ses fenêtres apparaissant sur le moniteur X local. Le problème est de savoir ce que le programme est autorisé à faire sur les fenêtres d'autres programmes et sur le serveur X lui-même.

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

Le transfert X11 de confiance est activé par -Y. C'est le comportement historique. Un programme ayant accès à l'écran est autorisé à accéder à tout l' écran. Il peut effectuer une capture d'écran, un keylog et une entrée dans toutes les fenêtres d' autres programmes. Et il peut utiliser toutes les extensions de serveur X, y compris celles telles que les graphiques accélérés, qui constituent un risque pour la sécurité. Ce qui est bon pour bien fonctionner, mais mauvais pour la sécurité. Vous faites confiance aux programmes distants pour être aussi sûr que vos programmes locaux.

Le transfert X11 non approuvé tente d'empêcher les programmes distants d'accéder uniquement à leurs propres fenêtres et d'utiliser uniquement les parties de X relativement sécurisées. Ce qui semble bien, mais actuellement ne fonctionne pas bien dans la pratique.

La signification -Xactuelle dépend de votre configuration SSH.

Sous Ubuntu 14.04 LTS, sauf si vous modifiez votre ssh_config, il n'y a pas de différence entre -Xet -Y. "[B] ecause est que trop de programmes bloquent actuellement en mode [non approuvé]."

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, alors -Xactive le transfert non approuvé . Sinon, -Xest traité de la même manière que -Y, sachant que les programmes distants avec accès à l’affichage sont conviviaux.

Mitchell
la source
1

L' -Xoption active le transfert 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.

L'option -Y, correspondant à la directive ForwardX11Trusted de ssh_config (5), est encore moins sécurisée car elle supprime les contrôles d'extension X11 SECURITY.

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

Il est plus sûr d'utiliser -x

-x   Disables X11 forwarding.
Ortomala Lokni
la source