In generale, dovresti non inoltrare la visualizzazione X11 dagli ambienti non fidati al tuo ambiente locale. X11 è una vecchia tecnologia che non è stata concepita pensando alla sicurezza sin dall'inizio, al contrario è stata progettata per consentire a ogni applicazione di comunicare tra loro.
Significa " comunicare " significa? Come hai detto, potrebbe afferrarti le battute. Potrebbe anche prendere screenshot. Potrebbe interagire con altre finestre, iniettare sequenze di tasti, movimenti del mouse, ecc. Ecc., Ecc. Immagino che tu abbia capito bene: consentire ad un sistema non affidabile di esportare il display X11 sul tuo server locale è un po 'come passare il tuo schermo, tastiera e mouse a questo sistema non affidabile. Hai ragione nel senso che potrebbe non essere in grado di accedere direttamente ai tuoi file locali, ma sarà quasi equivalente.
Alcuni lavori sono stati fatti per mitigare il rischio. X11 include in effetti una distinzione tra clienti fidati e non fidati. Un client non affidabile dovrebbe essere confinato in un sottoinsieme di azioni progettate per impedire la maggior parte delle azioni nefaste descritte in precedenza.
SSH integra questa modalità, anche se alcune distribuzioni Linux la disabilitano e considerano tutto il client X11 come affidabile per la comodità dell'utente finale (!). Potresti voler controllare i parametri ForwardX11
e ForwardX11Trusted
nei tuoi file di configurazione del client SSH:
-
ForwardX11
indica se X11 è abilitato di default quando si stabilisce una connessione SSH (è necessario utilizzare il parametro della riga di comando -x
(minuscolo 'x') per disabilitarlo su richiesta),
-
ForwardX11Trusted
indica se, quando abiliti l'inoltro X11, il client verrà automaticamente considerato attendibile. Ti consiglio vivamente di mettere questo in no
.
Quando ForwardX11Trusted
è impostato su no
, il comando ssh
ti offrirà di selezionare il livello di attendibilità per la tua sessione:
- Il parametro della riga di comando
-X
considererà il client come non sicuro, questa è la strada consigliata.
- Il parametro della riga di comando
-Y
considererà il client sicuro, questo è necessario solo per casi d'uso molto specifici e dovrebbe essere usato con cautela poiché è necessario considerare che le applicazioni remote avranno un accesso completo al sistema .
Tuttavia, come ho affermato sopra, non dovresti fare affidamento sulla sensazione di sicurezza fornita dalla modalità "sicuro" di -X
per esportare la visualizzazione da un ambiente non affidabile al tuo server X locale. Ma questo dovrebbe essere abbastanza sano se si considera questo ambiente Docker come un ambiente attendibile.
L'isolamento dell'applicazione della GUI è attualmente un dominio in fase di studio approfondito. Mentre fino ad oggi ogni altro sistema Linux ha subito grandi misure di indurimento, ho l'impressione che X sia rimasto quasi sempre appartato, troppo grande e complesso per evolversi davvero e adattarsi alle esigenze attuali, lasciando però una brutta debolezza.
Piattaforme sicure come Qubes OS che si basa precisamente su una serie di Xen VM isolate che esportano la visualizzazione X su un dominio Dom0 è andato attraverso il dolore di sviluppare il proprio protocollo X "reverse-proxy" tra i client X e il server per garantire la sicurezza del server. Non conosco alcun equivalente standalone di tale tecnologia, ma potresti trovare idee interessanti qui: Miglior metodo per applicazioni sandbox X in ubuntu . X server sta lasciando le sue ultime volte e dovrebbe essere sostituito da un'alternativa più moderna e sicura non appena queste alternative saranno pronte (vedi Wayland e Mir per esempio), ma fino ad allora almeno controlla chi sei affidi il tuo desktop!