Jaka jest różnica między `ssh -Y` (zaufane przekazywanie X11) a` ssh -X` (niezaufane przekazywanie X11)?

114

Jaka jest różnica między ssh -Y(zaufane przekazywanie X11) a ssh -X(niezaufane przekazywanie X11)? O ile rozumiem, ma to coś wspólnego z bezpieczeństwem, ale nie zrozumiałem różnicy i kiedy z niej korzystać.

Martin Ueding
źródło

Odpowiedzi:

89

Obie opcje mają coś wspólnego z przekazywaniem X11. Oznacza to, że jeśli włączysz tę opcję, możesz używać klienta graficznego za pośrednictwem sesji SSH (np. Używać Firefoksa lub czegoś innego).

Jeśli używasz ssh -X remotemachinekomputera zdalnego, jest on traktowany jako niezaufany klient. Zatem lokalny klient wysyła polecenie do zdalnego komputera i odbiera dane wyjściowe w postaci graficznej. Jeśli Twoje polecenie narusza niektóre ustawienia zabezpieczeń, zamiast tego pojawi się błąd.

Ale jeśli używasz ssh -Y remotemachinekomputera zdalnego, jest traktowany jako zaufany klient. Ta ostatnia opcja może powodować problemy z bezpieczeństwem. Ponieważ inni klienci graficzni (X11) mogą wąchać dane ze zdalnego komputera (robić zrzuty ekranu, rejestrować hasła i inne nieprzyjemne rzeczy), a nawet można je zmieniać.

Jeśli chcesz dowiedzieć się więcej na ten temat, sugeruję przeczytanie strony podręcznika Xsecurity lub specyfikacji rozszerzenia X Security . Ponadto możesz sprawdzić opcje ForwardX11i ForwardX11Trustedswoje /etc/ssh/ssh_config.

qbi
źródło
6
Strona ssh używa niefortunnych sformułowań, sugerując (przynajmniej dla mnie), że -X jest niebezpieczny w użyciu, a -Y jest lepszy. Dziękuję za tę odpowiedź.
Torsten Bronger,
Czy w związku z -Xtym inni klienci nie mogą wąchać ani zmieniać danych?
musiphil
6
Dlaczego więc miałby chcieć używać -Yzamiast -Xogólnie?
Wernight,
Mam to samo pytanie (dlaczego używać -Y) i jedyny przypadek, który zrozumiałem, że może być przydatny, to gdy kontrola bezpieczeństwa po stronie serwera nie jest w jakiś sposób zaimplementowana / niezgodna. Czytałem również, że przekazywanie X11 jest ogólnie potężnym i niebezpiecznym narzędziem, które należy traktować jako takie.
MakisH
5
Odpowiadając na pytanie „Po co używać -Y zamiast -X?” pytanie, -X po upływie limitu czasu przerywa przekazywanie, a -Y nie. Możesz jednak zmienić tę konfigurację, używając ForwardX11Timeout dla opcji -X.
Seb
23

Użyj ani kiedy nie trzeba uruchamiać programy X11 zdalnie; użyj, -Xkiedy to zrobisz; i hipotetycznie użyj, -Yjeśli program X11, na którym Ci zależy, działa lepiej z -Y niż z -X. Ale obecnie (Ubuntu 15.10), -X jest identyczny z -Y, chyba że edytujesz, ssh_configżeby powiedzieć ForwardX11Trusted no. -X pierwotnie miał na celu włączenie rozszerzenia X Security z lat 90., ale jest to stary i nieelastyczny program, który powoduje awarię niektórych programów i dlatego jest domyślnie ignorowany.

Zarówno ssh, jak -Yi -Xpozwalają uruchomić program X11 na zdalnym komputerze, którego okna pojawiają się na lokalnym monitorze X. Problem polega na tym, co program może zrobić z oknami innych programów i samym serwerem X.

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

Przekazywanie zaufanego X11 jest włączone przez -Y. To jest zachowanie historyczne. Program z dostępem do wyświetlacza jest zaufany z dostępem do całego wyświetlacza. Może zrzut ekranu, keylog i wstrzykiwać dane wejściowe do wszystkich okien innych programów. I może używać wszystkich rozszerzeń serwera X, w tym takich jak grafika przyspieszona, które są zagrożeniami bezpieczeństwa. Co jest dobre do płynnego działania, ale złe dla bezpieczeństwa. Ufasz, że programy zdalne będą tak samo bezpieczne jak programy lokalne.

Niezaufane przekazywanie X11 próbuje ograniczyć zdalnym programom dostęp do ich własnych okien i używanie tylko tych części X, które są względnie bezpieczne. Co brzmi dobrze, ale obecnie nie działa dobrze w praktyce.

Znaczenie -Xobecnie zależy od konfiguracji ssh.

W Ubuntu 14.04 LTS, chyba że edytujesz swój ssh_config, nie ma różnicy między -Xi -Y. „[B] powoduje, że obecnie zbyt wiele programów ulega awarii w trybie [niezaufanym]”.

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

Jeśli ForwardX11Trusted no, to -Xwłącza niezaufane przekazywanie. W przeciwnym razie -Xjest traktowany tak samo, jak -Yufanie, że programy zdalne z dostępem do ekranu są przyjazne.

Mitchell
źródło
1

-XOpcja umożliwia przekazywanie 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.

Opcja -Yodpowiadająca dyrektywie ForwardX11Trusted w ssh_config (5) jest jeszcze mniej bezpieczna, ponieważ usuwa kontrolę rozszerzenia X11 SECURITY.

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

Jest bezpieczniejszy w użyciu -x

-x   Disables X11 forwarding.
Ortomala Lokni
źródło