Cos’è VirtualBox

VirtualBox è un software commerciale proprietario in grado di virtualizzare hardware x86.

Oltre al processore, permette di emulare alcuni dispositivi hardware o utilizzare direttamente quelli della macchina host.

Una versione ridotta del software è stata rilasciata da Innotek nel gennaio del 2007 sotto licenza GNU General Public License (GPL) v2.

Innotek è stata in seguito acquistata da Sun Microsystems, a sua volta acquisita da Oracle Corporation.

Il software viene rilasciato anche in una versione closed-source, dotata di funzionalità aggiuntive, gratuita per uso personale e in ambito accademico.

Immagini a disposizione

Ogni postazione del laboratorio 130 e del laboratorio 193 ha a disposizione una serie di macchine virtuali:

  • win10: Windows 10

  • gspn81: ambiente per GreatSPN

  • netkit: Netkit, per Cyber Security I

  • ws-dojo34: Web Security Dojo 3.4, per Cyber Security I

  • kali: Kali Linux, per Cyber Security I e II

  • labtainers: Solo per gli studenti del corso di Cyber Security II

  • seed: Solo per gli studenti del corso di Cyber Security II

Immagini utente

È possible definire una macchina virtuale “privata”, creando un apposito file con estensione .settings all’interno della propria area utente, nella cartella ~/vbox-scripts/settings.

Per capire sintassi e parametri possibili, si può prendere come esempio uno dei file che definiscono le macchine virtuali a disposizione, presenti in /opt/vbox-scripts/settings.

Le macchine virtuali definite in questo modo verranno elencate dagli script vm-setup e vm-start con l’indicazione (user) al fianco.

Attenzione! Se si definisce una macchina virtuale privata che ha lo stesso nome di una di quelle a disposizione, quella privata sostituisce quella a disposizione e verrà eseguita al suo posto dal comando vm-start.

Aggiornamenti delle macchine virtuali

Macchine Windows

Le macchine virtuali con Windows vengono normalmente aggiornate una volta al mese, a seguito del rilascio da parte di Microsoft degli aggiornamenti di sistema.

In quel momento vengono anche aggiornati i browser (Chrome e Firefox).

Altre applicazioni eventualmente caricate nell’immagine potrebbero essere aggiornate con una frequenza inferiore.

Se avete già fatto il setup, e dopo qualche giorno la macchina non parte più, è possibile che la macchina virtuale sia stata aggiornata nel frattempo. In tal caso potete ripetere il setup per ripartire.

Altre macchine virtuali

Le altre immagini vengono aggiornate solitamente all’inizio dei corsi che le utilizzano, su richiesta del docente.

Configurazione

Per eseguire una macchina virtuale all’interno di VirtualBox è necessario avere i corretti file di configurazione. Di default questi file risiedono nella directory ~/.VirtualBox o, dalle versioni più recenti, nella directory ~/.config/VirtualBox.

È possibile generare i file di configurazione per una specifica macchina virtuale e personalizzati per il proprio utente aprendo un terminale e digitando il comando seguente:

  /opt/vm-images/scripts/vm-setup <id vm>

Se si digita il comando senza parametro verrà fornito l’elenco degli ID delle macchine virtuali disponibili.

Se la configurazione per una data macchina virtuale è già presente, verrà sovrascritta.

È anche possibile generare i file di configurazione per tutte le macchine virtuali disponibili con il comando seguente:

  /opt/vm-images/scripts/vm-setup-all

Attenzione! Il programma di setup aggiorna i file di configurazione cercando di aggiungere/rispristinare solo la parte di configurazione relativa alla macchina virtuale che si sta installando. Se sono state fatte delle modifiche importanti ai propri file di configurazione, prima di eseguire il comando è opportuno salvarne una copia di backup, per non perderle.

Cartelle condivise

I file di configurazione che vengono generati automaticamente con il comando vm-setup sono personalizzati; all’interno della macchina virtuale è automaticamente mappata come unità di rete l’area disco dell’utente che ha eseguito il setup.

Per comodità, in alcune macchine virtuali è stato anche inserito sul desktop un collegamento alla cartella condivisa.

Fa eccezione la macchina virtuale per GreatSPN; in quella bisogna seguire le istruzioni presenti sul desktop della macchina virtuale per attivare le cartelle condivise.

Anche le macchine virtuali preparate per Cyber Security I e II potrebbero non avere le cartelle condivise già abilitate; seguite le istruzioni date dal docente a lezione.

Memorie USB

Tutte le memorie USB vengono montate nella cartella /run/media/nome_utente del sistema host (per noi, Linux). Lo script vm-setup crea un link simbolico ~/vbox_media/nome_utente, che punta alla suddetta cartella. È questo link che viene poi mappato in modo automatico come unità di rete all’interno della macchina virtuale.

Per comodità, in alcune macchine virtuali è stato anche inserito sul desktop un collegamento alla cartella in cui vengono aggiunti i dispositivi rimovibili.

Avviare VirtualBox

Per avviare una macchina virtuale è necessario aprire un terminale e digitare il comando seguente:

  /opt/vm-images/scripts/vm-start <id vm>

Se si digita il comando senza parametro, verrà fornito l’elenco degli ID delle macchine virtuali configurate tramite il setup.

Nota: nel caso in cui compaia un messaggio di errore al momento dell’avvio, è possibile che i file di configurazione siano obsoleti, o siano stati corrotti in qualche modo. Per ripristinare la situazione conviene quindi cancellare tutti i file di configurazione con i seguenti comandi:

 rm -rf ~/.VirtualBox
 rm -rf "~/VirtualBox VMs/"
 rm -rf ~/.config/VirtualBox

e lanciare nuovamente il comando vm-setup.

Esiste anche un programma grafico per la gestione delle macchine virtuali; si richiama da terminale con il comando:

  /opt/vm-images/scripts/virtualbox

Attenzione! Se si esegue l’interfaccia grafica utilizzando il comando standard VirtualBox, incluso nel path, o la voce dei menu standard di Gnome o XFCE, l’avvio delle macchine virtuali non è garantito. Questo perché potrebbero mancare i dischi differenziali con gli snapshot, che vengono ricreati all’occorrenza dai nostri script.

In ogni caso, dopo avere avviato la macchina virtuale di Windows 10, il risultato dovrebbe essere simile a questo:

Windows XP in VirtualBox

Recupero in caso di crash

Le macchine virtuali sono impostate per resettare il proprio stato ad ogni avvio. Ciò significa che anche le modifiche sui dischi vengono perse all’avvio successivo. In caso di crash della macchina virtuale è però possibile avviarla senza ripristinare il disco e mantenendo quindi tutto quello che si era fatto prima del disastro. A questo scopo si utilizza il flag -a dello script vm-start:

  /opt/vm-images/scripts/vm-start <id vm> -a=off

Impostazioni avanzate di rete

Per alcuni corsi sarà necessario far parlare fra di loro due o più macchine virtuali, su una rete privata.

Queste impostazioni sono descritte sulla pagina VirtualBox NAT Network.