Virtualizzazione

Ci sono alcune persone che mi chiedono come fare ad installare XEN, o come virtualizzare bene su una macchina Linux in modo da raggiungere un buon livello di protezione. Beh, il punto e’ che non ho voglia di fare un howto, ma di spiegare quali siano gli effetti di questa roba, perche’ voglio che li verifichiate coi vostri occhi.
Allora, mi sembra di capire che , nonostante la relativa semplicita’ di uso, XEN sia “troppo” per molti di voi. Allora diciamo che abbiate installato Ubuntu (altrimenti sapreste installare anche XEN, appena uscite da Ubuntu vi trovate nel mondo della documentazione e degli howto), e che vogliate mettere una macchina virtuale tra voi e la rete. Vediamo una soluzione piu’ semplice, anche se (a mio avviso) non c’e’ abbastanza letteratura su kvm.
Per usare qualcosa di piu’ “semplice” potete basarvi su , che so io, un kvm+qemu, usando un applicativo che e’ virt-manager. In questo modo tutto sara’ leggermente piu’ semplice.
Trovate documentazione su come fare, passo passo, qui:
Se non riuscite ad installarlo neanche cosi’, forse dovreste lasciar perdere: se uno vi dice “dopo aver acceso la vostra motocicletta….” e voi rispondete “ma come si accende?” , allora forse non dovreste proprio andare in motocicletta.
Fatto questo, vi serve l’immagine di un firewall basato su BSD che sia semplice da configurare. Siccome (mi dite che) non siete avvezzi al terminale, immagino che non vi vada di settarvi ipfw a manina. Peccato, ma ognuno fa quel che puo’: dunque, vi serve Monowall.
Siccome vi serve l’immagine per un emulatore 386, allora  dovete scaricare questo: http://m0n0.ch/wall/download.php?file=generic-pc-1.34.img
Una volta scaricato, dovrete far partire il vostro virt-manager come root (consiglio di girare come utente e di far girare tutto come root!) e di configurarlo come segue. Il mio portatile ha 4 core e quindi ho usato una sola CPU assegnata alla macchina virtuale. 128MB sono piu’ che sufficienti per Monowall.
Ma la cosa importante e’ la rete. Per prima cosa dovrete usare una rete interna con indirizzi non girabili all’esterno:
Screenshot - 11.01.2014 - 12:18:04
A quel punto, avrete una rete interna con un set di indirizzi che non girano su internet. Questo produrra’ anche un’interfaccia virtuale sulla vostra macchina.
Poi dovete creare le corrispondenti interfacce sulla macchina virtuale con Monowall:
Screenshot - 11.01.2014 - 12:16:36
Questa e’ l’interfaccia che avete verso l’esterno del vostro PC. E’ importante che sia un bridge, dal momento che in futuro disabiliteremo l’interfaccia di rete , lasciando solo quella virtuale al lavoro.
Adesso ve ne serve una verso l’interno, cioe’ verso la rete che avete creato dentro il vostro computer.
Screenshot - 11.01.2014 - 12:16:56
ho usato un hardware diverso per una ragione: in questo modo, FreeBSD usera’ nomi completamente diversi per le due interfacce, che vi facilita molto la configurazione e il controllo “a colpo d’occhio”.

Ci siamo. Adesso fate partire la vostra macchina virtuale, la quale vi presenta uno schermo cosi’:

Screenshot - 11.01.2014 - 12:23:42
In questo modo, avete configurato la vostra applicazione firewall. (btw, virt-manager funziona anche con XEN). Essa ha una delle due interfacce ethernet in bridge con la vostra, e la seconda interfaccia si trova dentro una rete privata irraggiungibile dall’esterno.
Benone.
Adesso, aprite il vostro browser sull’indirizzo IP che vedete sullo schermo, digitate la password che avete configurato sul menu’ sopra, e andate alla voce “WAN” che trovate a sinistra:
Screenshot - 11.01.2014 - 12:26:53
Se il vostro PC lavorava in DHCP, come succede quasi sempre a casa, specifidate DHCP e lasciate cosi’. Altrimenti, scriverete gli stessi IP che avete oggi sul vostro PC, a mano, come avete gia’ fatto sul PC.

A questo punto, dovete semplicemente disabilitare l’interfaccia di rete sul vostro ubuntu: semplicemente, sconnettete il PC dalla rete usando l’icona in alto a destra.

A quel punto, se andate con ifconfig, vi deve dare qualcosa come questo:

Screenshot - 11.01.2014 - 12:30:38

Questo significa che dal punto di vista del vostro sistema operativo, non c’e’ alcuna interfaccia attiva. O meglio, che non e’ attiva eth0, che suppongo sia la vostra unica ethernet.

Adesso andiamo verso Monowall, e facciamo altre due cosette:

Screenshot - 11.01.2014 - 12:32:32

in questo modo, Monowall prendera’ il posto del vostro DNS.

Fatto? Bene. Adesso dovete “solo” dire al vostro linux come uscire su internet.

Che fate? Cosi’:

Screenshot - 11.01.2014 - 12:33:46

Adesso la macchina sa che deve uscire verso uno specifico router, e che il DNS e’ il router stesso.

Fatto? Bene.

Adesso aprite il browser, e provate a girare. Non dovrebbero esserci problemi.

Dovete “solo” aggiungere un “piccolo accorgimento”, che non piacera’ al Generale Alexander:

Screenshot - 11.01.2014 - 12:35:42
Avete capito bene: stiamo impedendo alla rete interna di mandare pacchetti UDP verso internet. Non vi serve farlo, e non c’e’ alcun cazzo di motivo per farlo. Pero’, avra’ un effetto “miracoloso” sul vostro navigare. Specialmente dove avete della roba che gira in flash.
Vi consiglio, dopo aver fatto questo, di gironzolare per internet, specialmente per i social network, e vedere che succede.
Inizialmente vi stupirete per la velocita’, ma non vi chiederete mai “chi mi portava via banda, prima?” , ma poi piano piano inizierete a sperimentare strani fenomeni, specialmente quando usate flash. E quando girate per i principali social network, e quando girate per il blog di Grillo, e via dicendo.
E ad un certo punto, capirete cosa vi stesse succedendo PRIMA.
Ma per crederci, dovrete per forza vederlo coi vostri occhi. Se ve lo dicessi, passerei per complottista.

Adesso, comunque, avete un template. Potete TOGLIERE le regole di routing e la configurazione del DNS, e in questo modo la vostra macchina host non puo’ piu’ andare su internet, ne’ essere raggiunta, in modo che compromettere la macchina host sia difficilissimo.  Da quel momento, potete installare una seconda macchina virtuale, che andra’ su internet tramite il firewall, sulla quale terrete le cose importanti.

Oppure, se la potenza lo consente, potete installare altre DUE macchine virtuali, una per le cose importanti (e questa  non va su internet, nemmeno lei) e una macchina virtuale col browser e tutto, per andare su internet. E in quel caso, chi vi attacca tramite internet arriva al massimo alla macchina “sacrificabile”.

Ricordate che se fate una copia “vanilla” dell’immagine, potete semplicemente ripartire dalla copia pulita se viene compromessa , per cui la macchina che va su internet puo’ tranquillamente essere “sacrificabile”.

Non avete ancora tutti i vantaggi di una virtualizzazione bare-metal, ma avete conseguito diversi risultati nel campo della sicurezza “by isolation”: la macchina HOST potete tenerla fuori da internet, e lo stesso per quella che usate per lavorare. E solo una macchina “sacrificabile” andra’ su internet, per cui in caso di qualsiasi problema, la cancellate e ripartite da una macchina “vanilla”, o potete fare la sostituzione periodicamente, ad intervalli fissi, copiando un file.

Uriel