Esecuzione sicura di software proprietario su Linux

10

Come progetto estivo, sto cercando di impedire che qualsiasi software proprietario come molti giochi da cui ho accesso abbia accesso ai miei file personali. Dopo aver analizzato molto il sandboxing, ho deciso che qualsiasi cosa come chroot è troppo complicata per me da usare, come semplicità = sicurezza. Ho creato un utente in cui tutte queste applicazioni verranno eseguite e, solo i membri del gruppo del mio account personale, a cui questo utente non appartiene, possono accedere ai miei documenti. Le cose sembrano a un livello superficiale come stanno lavorando (specialmente dopo averlo aggiunto al gruppo di video), ma ho pensato che fosse prudente chiedere quali sono ancora i problemi di sicurezza.

  • Può un'applicazione rubare il controllo di Control-Alt-Fn [1-12]?
    • Può un'applicazione leggere ciò che accade su un altro server x eseguito dall'altro utente?
  • È importante che il mio account per il software proprietario abbia una password debole?
  • Dato che la mia cartella / home / $ USER non fornisce alcuna autorizzazione a nessuno che non sia nel mio gruppo o me, non importa quali permessi abbiano i file lì dentro, vero? I nomi dei file all'interno non possono essere letti, vero?
  • Wine non fa cose funky a livello di sistema che sarebbero una vulnerabilità, vero?
  • Ci sono delle vulnerabilità attraverso la directory / tmp?
  • Ci sono altre vulnerabilità, che qualsiasi applicazione in esecuzione in quell'account potrebbe utilizzare per ottenere l'accesso ai miei documenti?
  • Quali sono le buone pratiche per questo genere di cose?

Sto eseguendo il debian testing. Qualsiasi consiglio sarebbe apprezzato.

    
posta AviD 12.08.2011 - 23:35
fonte

2 risposte

11

Chroot non ti darebbe comunque alcuna sicurezza, è progettato solo per casi d'uso molto specifici. Vedi Problemi di sicurezza chroot instabili di Debian e chroot "jail" - che cos'è e come lo uso? .

Qualsiasi applicazione che abbia accesso al server X può fare molte cose. Può curiosare su altre applicazioni che visualizzano finestre sullo stesso server. Può registrare le pressioni dei tasti. Può rebindare le chiavi. Può iniettare chiavi di stampa in altre applicazioni. Ha accesso agli Appunti. Se esegui le applicazioni non attendibili su un server X in cui non esegui mai alcuna applicazione eseguita come utente ordinario, questa non è una preoccupazione, tranne che l'applicazione può rimuovere la possibilità di passare a un'altra console.

Il vino stesso non funziona con privilegi elevati. Il server X funziona (funziona come root), quindi se c'è una vulnerabilità in esso, hai perso. C'è uno sforzo in corso per evitare di eseguire il server X come root, ma ciò comporta lo spostamento di parti del codice nel driver del kernel che gira con il massimo livello di privilegio. Devi sempre fidarti del tuo kernel.

Qualsiasi applicazione può accedere ai file in /tmp e /var/tmp . Se questo è un problema, non usare queste directory per i tuoi file. È molto facile impostare directory temporanee per utente: installa il pacchetto libpam-tmpdir . Le applicazioni possono anche accedere ad altri dati che potresti considerare sensibili, come l'elenco di utenti sul tuo sistema, l'elenco di programmi che hai installato, ecc. Dati al di sotto di una directory che non è leggibile (più precisamente, non ha permesso di esecuzione) dal l'applicazione non è accessibile dall'applicazione.

Se le applicazioni non sono troppo impegnative (in particolare non richiedono troppa grafica), eseguirle in un'installazione del sistema operativo dedicata in una macchina virtuale. Questo è il più isolamento che puoi ottenere a corto di hardware dedicato. Rifiutate l'accesso alla rete della macchina virtuale e non inserirvi dati sensibili: questo vi offre una doppia protezione contro le violazioni della privacy.

    
risposta data 13.08.2011 - 00:26
fonte
7

L'approccio più sicuro consiste nell'eseguire il software proprietario in una macchina virtuale (VM). È abbastanza semplice da configurare e puoi trovare macchine virtuali gratuite (ad es. VirtualBox). Tuttavia, dal momento che menzioni i giochi, questo potrebbe non funzionare per i giochi (potrebbe produrre un degrado delle prestazioni inaccettabile in alcuni giochi ad alta intensità di grafica).

Un'altra possibilità è installare una seconda copia del sistema operativo su una partizione separata sul disco rigido, quindi riavviare il sistema operativo "per divertimento" quando si desidera eseguire le applicazioni proprietarie. Tuttavia, questo è probabilmente troppo di un dolore da usare nella pratica.

Una terza possibilità, se è possibile installare il software da un account utente (non root), è creare un nuovo account utente per il software proprietario, installare il software come tale account ed eseguirlo da tale account. Potrebbe non essere nemmeno necessario disconnettersi e riconnettersi, se si utilizza sudo o 'ssh -X' (anche se ciò potrebbe causare una perdita di sicurezza a causa di vulnerabilità fondamentali nel protocollo X).

Una quarta possibilità, se stai usando una distribuzione Linux che supporta SELinux, è quella di usare il programma sandbox di SELinux. Vedi, ad esempio, questo articolo della Fondazione Linux , o post sul blog di Dan Walsh , Dan Le diapositive di Walsh su di esso . Tuttavia, ti avverto che potrebbe essere un po 'più complicato da usare.

Se vuoi divertirti, sandboxing.org , elenca una serie di altre tecnologie sandboxing. Per i tuoi scopi, Plash (vedi anche the Plash wiki ) è probabilmente la sandbox più sofisticata e matura, quindi potresti provare anche Plash se lo desideri.

Sfortunatamente, niente di tutto ciò è super facile. Vorrei che i sistemi operativi lo rendessero molto più semplice, ma al momento temo che sia un po 'un problema.

    
risposta data 13.08.2011 - 03:44
fonte

Leggi altre domande sui tag