La VM per servizio è un ragionevole modello di sicurezza del server?

4

Diciamo che sto ospitando diversi servizi sul mio server, ad esempio, email e una pagina web. Sono preoccupato che il software del server Web possa avere vulnerabilità sconosciute al suo interno, il che consentirà a un utente malintenzionato di prendere il controllo del mio computer. L'utente malintenzionato avrà quindi accesso non solo al mio sito Web, ma anche alle mie e-mail!

Potrei risolvere il problema semplicemente avendo due macchine fisiche separate, ognuna dedicata a un server. Se l'utente malintenzionato irrompe nel server Web, può solo vedere il sito Web. Per vedere le email, deve entrare nel server di posta elettronica.

Non voglio realmente comprare un nuovo server per ogni servizio che sto utilizzando, quindi come compromesso ho pensato di poter utilizzare le macchine virtuali. In questo modello, il sistema operativo host esegue un server SSH protetto e un software VM. Per ogni servizio, viene creata una nuova macchina virtuale e configurata per fornire quel servizio.

Il mio modello può essere sconfitto in modo catastrofico in due modi:

  • L'hacker si interrompe nel server SSH, essenzialmente ottenendo l'accesso a tutte le VM.
  • L'attaccante trova un difetto di sicurezza nel software della macchina virtuale e riesce a scavare nella cache dalla VM compromessa al sistema operativo host.

Tuttavia, se entrambi sono più difficili da fare che sfruttare semplicemente una vulnerabilità in una miriade di servizi che voglio ospitare, sembra che la vita dell'attaccante sia stata resa molto più difficile. Deve innanzitutto rendersi conto che i server sono in realtà macchine virtuali sulla stessa macchina, quindi sfruttare ad es. il server web, e quindi sconfiggere la virtualizzazione, per di più - questo sembra più difficile che sfruttare il server web.

La mia domanda è: questo tipo di strategia è effettivamente ragionevole e pratica per una configurazione non aziendale? Gli svantaggi come prestazioni più lente derivanti dall'esecuzione di molti sistemi operativi, lo spreco di spazio su disco su ciascun sistema operativo, giustificano il guadagno di sicurezza realistico (se presente)?

Il mio obiettivo principale di sicurezza è compartimentare i singoli servizi, in modo che l'accesso alla macchina attraverso un servizio (ad esempio il server Web) non fornisca immediatamente l'accesso ai dati privati di altri servizi (come le e-mail del server di posta). Ogni volta che aggiungo un servizio al mio server, sento che sto aggiungendo ancora più potenziali vulnerabilità e exploit che gli hacker possono utilizzare e prendere tutto - sarebbe preferibile se, quando viene rilevato un difetto in un servizio, solo quel servizio stesso è compromesso.

    
posta Superbest 28.04.2015 - 00:53
fonte

2 risposte

4

Le tue ipotesi sono corrette. La sicurezza dall'isolamento è davvero un buon principio da seguire.

Esiste anche un intero sistema operativo che implementa questa idea sul desktop: Qubes OS (che è in esecuzione sul laptop Sto usando per scrivere questo).

Per tornare al modello del server, penso che una VM per servizio sia una buona idea, ma diventerà molto dispendiosa in termini di risorse.

Abbiamo utilizzato il sistema FreeBSD Jails per circa 8 anni qui, per replicare esattamente di cosa stai parlando: isolando il server web dal database e dal server di posta ed ecc.

Quello che facciamo è che gli host Jail non eseguono nulla, tranne il firewall. Tutti i servizi sono isolati nelle carceri, in base al loro dominio di sicurezza. Trattiamo l'host come si tratterebbe Dom0 sotto Xen.

Poiché non è la visualizzazione ma piuttosto un meccanismo di chroot molto migliorato, non ha l'impatto delle prestazioni della visualizzazione, aggiungendo separazione e sicurezza. Dall'interno di un sistema imprigionato, sembra che tu stia correndo in un ambiente virtuale o reale. Lo svantaggio è che puoi eseguire FreeBSD (non mi dispiace, ma potrebbe non essere adatto a te).

Penso che Docker sia simile nel suo approccio, anche se ho iniziato a usarlo solo di recente, e sembra più uno strumento di sviluppo che una sostituzione di un ambiente virtuale.

Però, penso che Xen valga la pena guardare.

    
risposta data 28.04.2015 - 01:24
fonte
-3

Se utilizzi esclusivamente Linux, puoi isolare completamente le applicazioni (praticamente come fa la finestra mobile) usando systemd:

link

Le applicazioni all'interno di un contenitore non hanno accesso all'esterno - assicurati solo che non vengano eseguite come root.

Se vuoi qualcosa di più portabile, chroot s potrebbe funzionare, supponendo che tu li abbia impostati correttamente.

    
risposta data 28.04.2015 - 11:04
fonte

Leggi altre domande sui tag