Was ist der Unterschied zwischen "ssh-Y" (vertrauenswürdige X11-Weiterleitung) und "ssh-X" (nicht vertrauenswürdige X11-Weiterleitung)?

114

Was ist der Unterschied zwischen ssh -Y(trusted X11 - Forwarding) und ssh -X(ungesichertem X11 - Forwarding)? Soweit ich es verstanden habe, hat es etwas mit Sicherheit zu tun, aber ich habe den Unterschied nicht begriffen und wann ich welche verwenden soll.

Martin Ueding
quelle

Antworten:

89

Beide Optionen haben etwas mit der X11-Weiterleitung zu tun. Wenn Sie dies aktivieren, können Sie über Ihre SSH-Sitzung einen grafischen Client verwenden (z. B. Firefox oder etwas anderes).

Wenn Sie ssh -X remotemachineden Remote-Computer verwenden, wird dieser als nicht vertrauenswürdiger Client behandelt. Ihr lokaler Client sendet also einen Befehl an den Remote-Computer und empfängt die grafische Ausgabe. Wenn Ihr Befehl gegen einige Sicherheitseinstellungen verstößt, erhalten Sie stattdessen eine Fehlermeldung.

Wenn Sie jedoch ssh -Y remotemachineden Remotecomputer verwenden, wird dieser als vertrauenswürdiger Client behandelt. Diese letzte Option kann zu Sicherheitsproblemen führen. Da andere grafische (X11) Clients Daten von der Remote-Maschine abrufen können (Screenshots erstellen, Keylogging und andere unangenehme Dinge ausführen) und es sogar möglich ist, diese Daten zu ändern.

Wenn Sie mehr über diese Dinge erfahren möchten, empfehlen wir Ihnen, die Xsecurity-Manpage oder die X Security-Erweiterungsspezifikation zu lesen . Darüber hinaus können Sie die Optionen ForwardX11und ForwardX11Trustedin Ihrem überprüfen /etc/ssh/ssh_config.

qbi
quelle
6
Die ssh-Manpage verwendet eine unglückliche Formulierung, die (zumindest für mich) darauf hinweist, dass die Verwendung von -X unsicher und -Y besser ist. Vielen Dank für diese Antwort.
Torsten Bronger
Mit -Xist es für andere Kunden unmöglich, Daten zu beschnüffeln oder zu ändern?
Musiphil
6
Warum sollte man also im Allgemeinen -Yanstatt verwenden wollen -X?
Wernight
Ich habe die gleiche Frage (warum -Y) und der einzige Fall, den ich verstanden habe, ist, dass dies nützlich sein kann, wenn die Sicherheitskontrolle auf der Serverseite irgendwie nicht implementiert / nicht kompatibel ist. Ich habe auch gelesen, dass die Weiterleitung von X11 im Allgemeinen ein leistungsstarkes und gefährliches Tool ist, das als solches behandelt werden sollte.
MakisH
5
Beantwortung der Frage "Warum -Y anstelle von -X verwenden?" Frage: -X löscht die Weiterleitung nach einer Zeitüberschreitung, -Y nicht. Sie können diese Konfiguration jedoch mit ForwardX11Timeout für die Option -X überschreiben.
Seb
23

Verwenden Sie beides nicht, wenn Sie X11-Programme nicht remote ausführen müssen. Verwenden -XSie, wenn Sie dies tun; und hypothetisch zu verwenden, -Ywenn ein X11-Programm, das Ihnen am Herzen liegt, mit -Y besser funktioniert als mit -X. Aber derzeit (Ubuntu 15.10) ist -X identisch mit -Y, es sei denn, Sie bearbeiten ssh_config, um zu sagen ForwardX11Trusted no. -X sollte ursprünglich die X-Sicherheitserweiterung der 90er Jahre aktivieren, ist aber alt und unflexibel und stürzt einige Programme ab. Daher wird es standardmäßig ignoriert.

Mit ssh -Yund können -XSie ein X11-Programm auf einem Remotecomputer ausführen, dessen Fenster auf dem lokalen X-Monitor angezeigt werden. Das Problem ist, was das Programm mit den Fenstern anderer Programme und mit dem X-Server selbst tun darf.

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

Vertrauenswürdige X11-Weiterleitung wird von aktiviert -Y. Dies ist das historische Verhalten. Einem Programm mit Zugriff auf das Display wird der Zugriff auf das gesamte Display als vertrauenswürdig eingestuft . Es kann Screenshots erstellen, Keylogs erstellen und Eingaben in alle Fenster anderer Programme einfügen . Und es können alle X-Servererweiterungen verwendet werden, einschließlich solcher wie beschleunigter Grafiken, die Sicherheitsrisiken darstellen. Das ist gut für einen reibungslosen Ablauf, aber schlecht für die Sicherheit. Sie vertrauen darauf, dass die Remote-Programme so sicher sind wie Ihre lokalen Programme.

Nicht vertrauenswürdige X11-Weiterleitung versucht, Remote-Programme darauf zu beschränken, nur auf ihre eigenen Fenster zuzugreifen und nur die Teile von X zu verwenden, die relativ sicher sind. Was sich gut anhört, aber derzeit in der Praxis nicht gut funktioniert.

Die Bedeutung von -Xhängt derzeit von Ihrer ssh-Konfiguration ab.

Unter Ubuntu 14.04 LTS ssh_configgibt es keinen Unterschied zwischen -Xund , es sei denn, Sie bearbeiten Ihre -Y. Msgstr "[B] weil momentan zu viele Programme im [nicht vertrauenswürdigen] Modus abstürzen."

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

Wenn ForwardX11Trusted no, wird -Xdie nicht vertrauenswürdige Weiterleitung aktiviert . Ansonsten -Xwird genauso -Yverfahren, wie darauf zu vertrauen, dass Remote-Programme mit Anzeigezugriff freundlich sind.

Mitchell
quelle
1

Die -XOption aktiviert die X11-Weiterleitung:

-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.

Die Option -Y, die der ForwardX11Trusted-Direktive in ssh_config (5) entspricht, ist noch weniger sicher, da sie die X11 SECURITY-Erweiterungssteuerelemente entfernt.

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

Es ist sicherer zu bedienen -x

-x   Disables X11 forwarding.
Ortomala Lokni
quelle