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ć.
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ć.
Odpowiedzi:
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 remotemachine
komputera 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 remotemachine
komputera 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 ForwardX11
i ForwardX11Trusted
swoje /etc/ssh/ssh_config
.
-X
tym inni klienci nie mogą wąchać ani zmieniać danych?
-Y
zamiast -X
ogólnie?
-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.
Użyj ani kiedy nie trzeba uruchamiać programy X11 zdalnie; użyj, -X
kiedy to zrobisz; i hipotetycznie użyj, -Y
jeś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 -Y
i -X
pozwalają 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 -X
obecnie zależy od konfiguracji ssh.
W Ubuntu 14.04 LTS, chyba że edytujesz swój ssh_config
, nie ma różnicy między -X
i -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 -X
włącza niezaufane przekazywanie. W przeciwnym razie -X
jest traktowany tak samo, jak -Y
ufanie, że programy zdalne z dostępem do ekranu są przyjazne.
-X
Opcja 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 -Y
odpowiadają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.