Docker X11 Inoltro sicurezza

4

Al momento sto utilizzando un contenitore Docker con un programma con una GUI inoltrata su SSH (usando l'inoltro X su OpenSSH). Il server virtualizzato ha X11Forwarding abilitato e posso connettermi dal mio computer host e aprire un'applicazione senza molti problemi.

Questo è sicuro? Ciò fornisce l'accesso del sistema o dell'applicazione sandbox all'host in alcun modo? Come espongo il mio sistema alla domanda forse inaffidabile? Il sistema che si sta connettendo su SSH espone l'intera sessione di visualizzazione X alla macchina virtuale?

Sono consapevole che è in grado di captare sequenze di tasti e altre cose anche se nascosto nello sfondo (ridotto a icona barra delle applicazioni di KDE), come dimostrano applicazioni come Skype, ma vorrei sapere se questo va oltre , come l'accesso diretto al sistema in qualsiasi forma.

    
posta Mythical Juggernaut 31.10.2015 - 06:38
fonte

3 risposte

3

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!

    
risposta data 01.11.2015 - 15:33
fonte
2

Per eseguire applicazioni GUI nella finestra mobile ed evitare perdite di sicurezza X, ho pubblicato x11docker su github .

L'idea principale è di eseguire un secondo server X con i propri cookie di autenticazione. i contenitori docker ottengono l'accesso al nuovo server X e sono separati dal display: 0.

    
risposta data 02.12.2016 - 18:32
fonte
0

Ciò che essenzialmente facevi era mostrare un'applicazione remota (nel tuo caso - ancorata al dock) sul tuo server X locale.

Questo non è un modulo diverso che visualizza tale modulo di domanda da qualsiasi server remoto, che è sicuro quanto X11 è (quindi nessun accesso al tuo host locale).

L'applicazione utilizza indirettamente il tuo host locale (anche se docker ) ma questo è un ambiente sandboxed (vulnerabilità docker a parte). Ha comunque la capacità di scrivere file sul tuo disco (scrivendoli sul suo filesystem virtualizzato, che viene poi tradotto in file sul tuo host)

    
risposta data 01.11.2015 - 11:52
fonte

Leggi altre domande sui tag