Il miglior metodo per le applicazioni sandbox X in ubuntu

17

Qual è il modo migliore per sandbox un'applicazione X come firefox o thunderbird in ubuntu (andando nella direzione di ciò che qubes os fa , ma solo per singole applicazioni)?

So che ci sono molte diverse tecnologie di sandboxing. Ad esempio

  • Semplicemente usando una scatola virtuale: sembra essere molto sicuro ma una risorsa eccessiva. Avresti bisogno di un SO minimo in VirtualBox solo per eseguire firefox.

  • Uso della tecnologia sandbox SE-Linux . Questa sembra essere l'opzione migliore ma per quanto ne so SElinux è disponibile in Ubuntu ma non è configurato molto bene di default (al contrario, ad esempio, di RedHat-linux). Inoltre sembra mancare la parte sandbox di SELinux: link quindi dovresti compilarlo.

  • L' equivalente apparmor sembra non essere pronto per la produzione e al momento non viene fornito con ubuntu per quanto ne so. Tuttavia non posso stimare quale sia lo stato di sviluppo e se varrebbe la pena aspettare la prossima versione di Ubuntu, dove probabilmente ne farà parte.

  • Il desktop di gnome sembra supportare X-sandboxing . Non mi è chiaro se si può usare questo in modo indipendente dal wm.

  • Lo strumento lightweigt mbox sembra funzionare solo a livello di file system, il che non sarebbe sufficiente per X -applicazioni.

  • Lo stesso vale per le soluzioni di chroot fatte da sé come per esempio sandfox-script .

  • Un'opzione più lightweigt e sicura di chroot sembra essere Plash . Ma non sono sicuro di quanto sia efficace la protezione X.

  • stesso immunità e FBAC-LSM

  • C'è anche un programma chiamato arkose che sembra essere supportato da Ubuntu, ma allo stesso tempo c'è molto poca documentazione su come funziona e non ho idea di quanto sia sicuro rispetto ad altri approcci.

  • Docker sembra essere fatto più per le applicazioni server che per quelle desktop. Non vedo se è sicuro per le applicazioni X. C'è un nuovo progetto chiamato kagome che sembra combinare Docker con xephyr per l'isolamento X. Ma l'autore nota che la finestra mobile ha alcuni difetti di sicurezza e potrebbe essere meglio passare a un'altra soluzione contenitore come systemd-nspawn, rkt o lxd.

  • Altre soluzioni sono: seccomp-nurse , Arcobaleno , vagrantup

  • Infine, specialmente per firefox, c'è un profilo apparmor per ubuntu ma che è non abilitato di default . Questa non è una sandbox ma dovrebbe darti un certo livello di sicurezza quando si usa firefox (ma non so come si rapporta alle soluzioni sandbox sopra).

Quindi sembra che ci siano molti approcci, ma non so come (e perché) quelli in termini di sicurezza per sandboxing X - applicazioni come firefox o thunderbird, in termini di usabilità, specialmente in ubuntu-linux e quali sono pronti per la produzione e ben supportati. Sarebbe opportuno che qualcuno potesse fornire alcuni dettagli su questo, su come categorizzarli e su quale di essi varrebbe la pena dare un'occhiata più da vicino al mio scopo.

    
posta student 25.04.2014 - 09:59
fonte

3 risposte

6

Puoi usare subuser per sandbox un'applicazione usando Docker. Supponiamo che tu voglia sandbox Firefox:

Creerai una cartella my-subuser-images e poi creerai una seconda cartella firefox nella prima:

my-subuser-images/firefox

Nella cartella firefox , devi creare un'altra sottocartella: docker-image

Dopo averlo fatto devi creare due file:

  • permissions.json

E

  • docker-image/SubuserImagefile

Il layout del tuo file dovrebbe essere simile a quello trovato nel subuser-default-repository

Nel file permissions.json , dici a subuser cosa è permesso fare a Firefox:

{"description":"A popular web browser."
,"maintainer":"student"
,"executable":"/usr/bin/firefox"
,"gui":{"clipboard":true}
,"sound-card":true
,"allow-network-access":true
,"basic-common-permissions":true}

Ecco una panoramica delle autorizzazioni che ho appena impostato:

  • "gui": consente a Firefox di visualizzare le finestre su X11 in modo sicuro utilizzando il ponte XPRA X11
  • "scheda audio": consente a Firefox di comunicare con la scheda audio
  • "allow-network-access": consente a Firefox di accedere alla rete
  • "permessi-base-comuni": Permette a Firefox di fare alcune cose basilari come salvare le impostazioni nella propria home directory appositamente contenuta, vedere il LOCAL e il fuso orario ect.

Tuttavia, non consente a Firefox di accedere a qualsiasi file al di fuori del suo subuser. Potresti aggiungere un'autorizzazione user-dirs per permetterle di accedere alla directory Download, ad esempio, se lo desideri.

Dopo aver creato un file permissions.json , puoi continuare a creare un SubuserImagefile .

Il docker-image/SubuserImagefile dovrebbe apparire come Dockerfile :

FROM ubuntu
RUN apt-get update && apt-get upgrade -y && apt-get install -yq firefox

A questo punto hai finito di configurare l'immagine del subuser.

Puoi creare un subuser di firefox eseguendo:

$ subuser subuser add firefox firefox@/home/student/my-subuser-images

È possibile eseguire il subuser di firefox eseguendo:

$ subuser run firefox

È possibile creare più di un subuser di firefox. Questo è utile se vuoi avere più di un account Facebook o un account Google e non devi disconnetterti / in qualsiasi momento. È anche utile se vuoi ridurre il rischio di scripting cross-site quando fai internet banking.

subuser subuser add internet-banking firefox@/home/student/my-subuser-images

Puoi eseguire il tuo subuser di internet banking con il comando

subuser run internet-banking

Puoi accedere alla home directory di un subuser visitando ~/.subuser/homes .

Ecco una schermata di Firefox in esecuzione sul mio sistema con la configurazione dimostrata:

SinoticomenonostanteilfattochestousandoDebian,èlaversionediUbuntudiFirefoxcheèinstallata!

Puoicondividereletueimmaginidisottotitoliconaltri,perridurreilcaricodelleapplicazionidisandboxingpertutti.SevuoicondividerelatuaimmaginediFirefox,puoieffettuareilcdsumy-subuser-imagesetrasformarlainunrepositorygit:

$cd~/my-subuser-images$gitinit$gitadd.$gitcommit-m"Add Firefox image"

Se poi sposti questo repository git da qualche parte, gli altri possono installare easy l'immagine di Firefox con il comando:

$ subuser subuser add firefox firefox@http://example.com/student/my-subuser-images.git

Avrebbero eseguito quell'utente secondario nello stesso modo in cui avevano eseguito l'installazione localmente.

    
risposta data 14.08.2015 - 18:07
fonte
4

La documentazione di Ubuntu ha un comando sandbox per le applicazioni X che usa SELinux:

link

SELinux è un bel percorso in quanto ci sono molte pagine web, libri, strumenti, ecc. per usarlo. Si integra molto bene con il sistema operativo, il che è uno dei motivi per cui è complesso. Tresys vende bei strumenti che semplificano la configurazione di questi.

Cose come SELinux discendono dalle workstation in modalità compartimentata dell'era Orange Book che hanno cercato di aggiungere sicurezza ai sistemi operativi vanilla. L'ultimo prodotto sopravvissuto (e mantenuto) che conosco è la linea Argus Pitbull. Era solo Solaris, ma ora è RHEL. Sono molto più completi di SELinux, anche se pagherai per quello. C'è anche la piattaforma General Dynamics High Assurance che combina VMWare & Linux.

L'approccio VM è più facile da usare, ma richiede più risorse e amp; più funzioni nella base di calcolo affidabile. La cosa migliore da fare è usare una distro molto leggera (mi viene in mente CrunchBang), aggiungere solo quello che ti serve e ritagliare ciò che non fai. Le VM possono essere limitate alle singole cartelle tramite i controlli obbligatori SELinux o SMACK se si desidera consentire la condivisione delle cartelle per lo spostamento di file tra host e guest.

C'è anche il progetto QubesOS che mira a rendere l'opzione VM più sicura. In questo momento è abbastanza buono e facile da usare.

Il problema generale con la tua domanda è che né X né Ubuntu sono progettati per la separazione sicura di app reciprocamente diffidenti. Decenni di ricerca sono andati a fare ciò per UNIX e X con molti prototipi / prodotti. Dopo averli visti e amp; visto Ubuntu, ti garantisco che non stanno facendo quella roba. La roba SELinux fa solo un po 'per quello & gli approcci delle macchine virtuali hanno ancora molta superficie di attacco (VMM, Dom0, ecc.). Genode, QubesOS, Europa Perseus Security Architecture, la suite OKL4 / OKLinux e l'architettura Nizza di TU Dresden sono solo metodi aperti che conosco affrontando questo problema con la compatibilità Linux. Le loro caratteristiche e amp; la completezza varia considerevolmente.

Se è in esecuzione Linux mainstream, ci sono 0 giorni in attesa di essere trovati, ti garantisco. Continuo a mantenere la mia vecchia soluzione di avere PC separati, con uno non online e uno switch KVM. E uso di supporti di sola lettura (ad esempio CD-R), cavi unidirezionali o protezioni per lo spostamento dei dati. E backup su supporti di sola lettura. E caricamento da supporti di sola lettura, ove possibile. Interi costi di installazione inferiori a $ 1.000 se si ottengono componenti economici e amp; accetta prestazioni moderate. $ 2,000 - $ 3,000 per alte prestazioni.

    
risposta data 19.05.2014 - 03:42
fonte
1

Vorrei aggiungere questo progetto alla lista eccellente dei progetti di cui sopra. Può sandbox qualsiasi tipo di processo: server, applicazioni grafiche e persino sessioni di accesso utente.

link

Firejail è un programma sandbox di sicurezza SUID che riduce il rischio di violazioni della sicurezza limitando l'ambiente di esecuzione di applicazioni non affidabili utilizzando gli spazi dei nomi di Linux. Consente a un processo e a tutti i suoi discendenti di avere una propria vista privata delle risorse del kernel condivise a livello globale, come lo stack di rete, la tabella dei processi, la tabella di montaggio.

    
risposta data 23.01.2015 - 16:05
fonte

Leggi altre domande sui tag