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.