web-dev-qa-db-fra.com

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

Quelle est la différence entre ssh -Y (transfert X11 de confiance) et ssh -X (transfert 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.

114
Martin Ueding

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

Si vous utilisez ssh -X remotemachine, la machine distante 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 remotemachine, la machine distante est traitée comme un client approuvé. 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 voulez en savoir plus sur ces choses, je vous suggère de lire le page de manuel Xsecurity ou le X Security extension spec . De plus, vous pouvez vérifier les options ForwardX11 et ForwardX11Trusted dans votre /etc/ssh/ssh_config.

89
qbi

Utilisez ni lorsque vous n’avez pas besoin d’exécuter des programmes X11 à distance; utilisez -X quand vous le faites; et hypothétiquement, utilisez -Y si un programme X11 qui vous tient à cœur fonctionne mieux avec -Y qu'avec -X. Mais actuellement (Ubuntu 15.10), -X est identique à -Y, sauf si vous éditez ssh_config pour 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. Il bloque certains programmes et est donc ignoré par défaut.

Ssh -Y et -X vous permettent tous deux 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.

Trusted Le transfert X11 est activé par -Y. C'est le comportement historique. Un programme ayant accès à l’affichage est sécurisé par un accès à l’écran entier. Il peut effectuer une capture d'écran, un keylog et une entrée dans toutes les fenêtres de 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 non approuvé X11 tente de limiter les programmes distants à l'accès uniquement à leurs fenêtres propres et à l'utilisation des parties de X relativement sécurisées. Ce qui semble bien, mais actuellement ne fonctionne pas bien dans la pratique.

La signification de -X dépend actuellement de votre configuration ssh.

Sous Ubuntu 14.04 LTS, à moins d’éditer votre ssh_config, il n’existe aucune différence entre -X et -Y. "[B] ecause: 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 -X permet le transfert non approuvé. Sinon, -X est traité de la même manière que -Y, en sachant que les programmes distants avec accès à l’affichage sont conviviaux.

23
Mitchell

L'option -X 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.
1
Ortomala Lokni