INTRODUZIONE
Il concetto di virtualizzazione di un sistema di elaborazione non è recente: uno dei primi esempi,
introdotto dalla IBM, risale agli anni ’60. Tuttavia, negli ultimi dieci anni, si è assistito ad un forte
incremento dell’uso di questa tecnica, che permette di contenere i costi di gestione e di sfruttare al
meglio le risorse dei centri di elaborazione dati.
Si può stimare che in media la potenza di calcolo di ogni singolo elaboratore si sfruttata solo in minima parte. Questo dato - unito a quelli relativi ai costi di manutenzione, energia elettrica ed impianti di condizionamento - rende particolarmente conveniente per i responsabili dei CED, adottare
la virtualizzazione dei server, una tecnica che permette l’esecuzione di più macchine virtuali su un
solo server fisico. L’uso e il numero dei server installati viene razionalizzato, mantenendo inalterate le capacità funzionali del sistema.
Oggi la virtualizzazione è una tecnologia matura che sta diventando ampiamente utilizzata a livello
enterprise: numerose e particolarmente delicate sono le problematiche di sicurezza legate all’uso di
questa soluzione. La presente pubblicazione ha quindi l’obiettivo di apportare un contributo a
quanti abbiano adottato o intendano adottare tecniche di virtualizzazione e si trovino ad affrontare
le relative problematiche di sicurezza.
La prima parte del volume, che va dal primo al quarto capitolo, si focalizza sulle tecniche implementative, le soluzioni e i prodotti per la virtualizzazione, mentre il quinto capitolo affronta gli aspetti legati alla sicurezza.
Il primo capitolo si sofferma sull’evoluzione storica della virtualizzazione ed esamina una classificazione delle diverse tecniche. Il secondo capitolo prende in considerazione le soluzioni tecnologiche e gli approcci implementativi più diffusi, mentre il terzo descrive alcuni dei prodotti commerciali e dei progetti open source più noti. Il quarto capitolo tratta i diversi aspetti che devono essere
presi in considerazione quando si realizza un’infrastruttura di virtualizzazione complessa facendo
riferimento ai componenti di base: networking, storage e server.
Il quinto capitolo, che rappresenta una parte molto consistente dell’elaborato, affronta gli aspetti di
sicurezza di una specifica tecnica di virtualizzazione dei server, la Partitionig Virtualization, e in
particolar modo dei sistemi di Hypervisor e di VMM (Virtual Machine Monitor). Vengono affrontati gli aspetti di sicurezza più critici legati al mondo della virtualizzazione, in particolare:
•
Virus basati sulla virtualizzazione
•
Rilevamento di un sistema virtualizzato
•
Riallocazione dinamica delle immagini virtuali
•
Isolamento delle macchine virtuali e denial-of-service
•
Integrità delle macchine virtuali
•
Isolamento del traffico di rete
Il sesto e ultimo capitolo, esamina un nuovo paradigma di sicurezza che sfrutta la virtualizzazione
in modo sinergico con una tecnologia sempre più emergente chiamata Trusted Computing.
-6-
1.
LA VIRTUALIZZAZIONE: CONCETTI DI BASE
Il concetto di virtualizzazione è molto ampio e per questo motivo spesso genera confusione e imprecisioni. E’ necessario quindi, prima di analizzare le problematiche inerenti questa tecnologia,
soffermarsi sull’evoluzione storica della virtualizzazione ed effettuare una classificazione delle diverse tecniche.
1.1
CHE COSA SI INTENDE PER VIRTUALIZZAZIONE
In generale si può definire virtualizzazione qualunque processo in grado di astrarre i dettagli fisici
di una risorsa reale al fine di permettere ai suoi utenti un accesso più semplice, efficiente o sicuro.
Utente
Risorsa Logica
Livello di astrazione
Risorsa Fisica
Figura 1: Concetto generale di virtualizzazione
Per spiegare questo concetto (di per se molto astratto) possono essere utili degli esempi:
•
1
Un comune disco rigido di un personal computer è composto da uno o più piatti i quali a loro volto sono suddivisi in cilindri e settori1. L’utente finale, ovviamente, non deve conoscerne la geometria fisica in quanto vi è il sistema operativo che, attraverso un opportuno
modulo, denominato file system, mostra all’utente un generico spazio di memorizzazione
Si parla di geometria del disco.
-7-
organizzato in cartelle (directory) e documenti (file) 2. Facendo riferimento alla Figura 1
questo esempio può essere così schematizzato:
Utente
Cartelle e documenti
File System del S.O.
Geometria fisica del
disco
Figura 2: Esempio: astrazione di un disco
•
Un altro esempio è quello della memoria virtuale, ovvero quella tecnica mediante la quale il
sistema operativo mostra alle applicazioni una memoria (RAM) ben più ampia di quello che
è, mediante l’uso di ulteriori supporti di memorizzazione.
Applicazione
Memoria Virtuale
Gestore della memoria del S.O.
RAM
DISCO
Figura 3: Esempio: memoria virtuale
2
I file system più noti sono FAT, NTFS e EXT.
-8-
La virtualizzazione dei server è una tecnica che permette l’esecuzione di più macchine virtuali su
un solo server fisico ed è usata allo scopo di ottimizzare le risorse disponibili. Come verrà illustrato
nei prossimi paragrafi, con la virtualizzazione vengono creati diversi livelli di astrazione che fanno
sì che il sistema operativo non veda l’hardware fisico ma l’hardware virtuale.
Utente
Server Virtuale 1
Server Virtuale N
Gestore dei server
virtuali
Server Fisico
Figura 4: Virtualizzazione dei server
1.2
CENNI STORICI
Come accennato nell’introduzione, uno dei primi esempi di virtualizzazione di un sistema di elaborazione risale agli anni ’60 ed è stato introdotto coi sistemi chiamati CP/CMS progettati ed implementati dall’IBM; la componente CP (Control Program) di fatto rappresentava il livello di astrazione il cui compito era quello di fare vedere ai livelli superiori (il sistema operativo) diverse macchine logiche al posto dell’hardware fisico; il CMS (Conversational Monitor System) era il sistema
operativo (monoutente) che girava sopra ogni macchina virtuale; il vantaggio di questa architettura
era enorme se si considera che in quel periodo storico non esistevano ancora sistemi operativi multitasking interattivi.
In seguito, l’avvento dei nuovi sistemi operativi ha fatto sì che questa architettura venisse abbandonata con la conseguente progressiva dismissione dei mainframe e l’aumento spropositato del
numero di PC/server presso i CED delle aziende.
Negli ultimi 10-15 anni ci si è resi conto che la potenza di calcolo di ogni singolo elaboratore è
mediamente utilizzata solo al 20%; questa considerazione - unita ai dati relativi ai costi in termini
di manutenzione, energia elettrica ed impianti di condizionamento - ha fatto sì che si intraprendesse
nuovamente la strada della virtualizzazione.
-9-
1.3
VANTAGGI E SVANTAGGI DELLA VIRTUALIZZAZIONE
Come si è detto la virtualizzazione dei server permette di ottimizzare le risorse fisiche disponibili e
di facilitare la gestione e l’uso dei server. Più nel dettaglio, i vantaggi di questa tecnica di virtualizzazione sono i seguenti:
•
la riduzione dei server fisici: le soluzioni hardware/software per la virtualizzazione permettono l’esecuzione di diverse macchine virtuali su un solo server fisico con il vantaggio
di ridurre i consumi energetici, il calore generato (sono necessari impianti di condizionamento meno potenti), i guasti hardware, i tempi tecnici per il montaggio e il cablaggio, il
numero di armadi rack, lo spazio dedicato in sala macchine e il relativo cablaggio;
•
il consolidamento dei server: si stima che mediamente un moderno server venga sfruttato
solo al 15-20%. È quindi ragionevole che possano essere eseguite 3 o 4 macchine virtuali
sullo stesso hardware fisico;
•
l’indipendenza hardware: il software, ed in particolar modo il sistema operativo, è strettamente legato all’hardware sottostante. Se quindi per qualche motivo un’installazione di
un server deve essere spostata o clonata su un’altra macchina, si dovranno tenere in conto
diversi problemi di incompatibilità hardware (ad esempio si dovranno installare tutti i driver mancanti del nuovo hardware). Come verrà illustrato nei prossimi capitoli, una delle caratteristiche della virtualizzazione è quella di creare livelli di astrazione tali per cui il sistema operativo non vede l’hardware fisico bensì un hardware virtuale. In questo modo
l’amministratore può spostare o clonare un sistema su altre macchine che eseguono lo stesso ambiente di virtualizzazione senza preoccuparsi dei dettagli fisici (modello delle schede
di rete, schede grafiche, chipset e così via);
•
l’adattabilità: spesso in un’azienda cambiano le priorità e le esigenze, per cui un servizio
può diventare più importante di un altro e necessitare di risorse maggiori. La virtualizzazione permette di allocare le risorse hardware virtuali in modo decisamente più veloce e flessibile. Se necessario, la macchina virtuale può, inoltre, essere spostata su un hardware più efficiente in modo totalmente trasparente;
•
il supporto alle applicazioni legacy: non è raro trovare nelle sale macchine delle aziende
vecchi server con vecchi sistemi operativi (ad esempio il DOS) che non possono essere
spostati su macchine nuove in quanto questi non sarebbero supportate. Gli ambienti di virtualizzazione permettono l’esecuzione anche di sistemi legacy permettendo ai responsabili
IT di liberarsi di vecchio hardware non più supportato e più soggetto a guasti;
•
la standardizzazione delle installazioni: grazie all’astrazione dell’hardware è possibile
preparare una sola volta le immagini di ambienti omogenei (come ad esempio quello delle
postazioni di lavoro o server di sviluppo) comprensivi di sistema operativo, applicazioni e
configurazioni particolari (ad esempio dominio, posta elettronica, LDAP, policy di sicurezza, ecc…);
•
la creazione di ambienti di test: capita frequentemente che su un sistema in produzione si
debbano apportare delle modifiche senza sapere quali siano le conseguenze: ad esempio
l’installazione di un aggiornamento del sistema operativo o soprattutto di una service pack
non è un’operazione priva di rischi. La virtualizzazione permette la replica immediata di
una macchina virtuale per poter effettuare tutti i test di stabilità richiesti.
- 10 -
Ovviamente, come ogni altra tecnologia, l’uso della virtualizzazione porta inevitabilmente a degli
inconvenienti che variano a seconda dello scenario applicativo e devono essere valutati prima di
avviare la virtualizzazione. Gli aspetti che devono essere tenuti in considerazione sono i seguenti:
1.4
•
l’overhead: ogni soluzione di virtualizzazione fa decrescere le performance globali, come
ad esempio i tempi di accesso ai dischi, accesso alla memoria e cosi via. Alcune applicazioni particolarmente critiche potrebbero risentire dell’overhead introdotto dall’ambiente di
virtualizzazione;
•
l’hardware non virtualizzabile: a seconda dei prodotti utilizzati, alcune periferiche potrebbero non essere usate dalle macchine virtuali, come ad esempio porte seriali / parallele,
dispositivi USB, interfacce bluetooth, accelerazioni grafiche hardware e così via.
TECNICHE DI VIRTUALIZZAZIONE DEI SERVER
La virtualizzazione dei server può essere divisa in diverse tipologie a seconda della tecnica utilizzata. La seguente figura mostra una possibile classificazione.
Server
Virtualization
Aggregation
Virtualization
Instruction-Set
Virtualization
Partitioning
Virtualization
Hardware
Partitioning
Hypervisor
Virtual Machine
Monitor
Hypervisor
Hosted VMM
OS
Hosted VMM
Figura 5: Classificazione delle tecniche di virtualizzazione3
3
La figura è tratta (e qui riadattata) da Phelp J.R., Dawson P. (luglio 2007).
- 11 -
OS
Virtualization
Come si può notare si possono identificare tre macro tecniche di virtualizzazione:
1. Mediante partizionamento (Partitioning Virtualization): in questa categoria rientrano quei
sistemi che permettono di configurare l’hardware fisico in più macchine logiche in grado di
ospitare ognuna un suo sistema operativo. Questi sistemi possono essere ancora classificati
in:
•
Hardware Partitioning
•
Hypervisor
•
Virtual Machine Monitor (VMM)
•
OS Virtualization
2. Mediante emulazione (Instruction-Set Virtualization): questi sistemi permettono di emulare un diverso sistema hardware/software allo scopo di eseguire applicazioni scritte per diverse piattaforme; per questa ragione sono comunemente chiamati emulatori. Esempi molto
noti sono:
•
gli ambienti di sviluppo per dispositivi mobili, in cui è possibile eseguire gli applicativi (ad esempio Symbian) su PC in modo tale da agevolare le fasi di debugging;
•
MAME4 (Multiple Arcade Machine Emulator), il quale permette l’esecuzione su PC
dei vecchi videogiochi da bar degli anni ’80 (senza modificare il codice originale).
Gli esempi precedenti fanno riferimento a emulatori software; esistono anche emulatori
hardware come ad esempio il processore Crusoe della Transmeta5; si tratta di CPU che, pur
non essendo in modo nativo compatibili con l’architettura x866, tramite il livello di astrazione Code Morphing Software (CMS), possono essere usate come normali CPU x86 grazie
alla traduzione delle istruzioni x86 in istruzioni VLIW.
In questa categoria si può far rientrare anche la nota JAVA Virtual Machine (JVM) 7 in
quanto effettua una traduzione al volo del byte code java in istruzioni eseguibili sul sistema
nativo.
3. Mediante aggregazione (Aggregation Virtualization): a differenza delle altre due tecniche,
in questo caso più macchine virtuali vengono aggregate fra di loro per fare eseguire
un’unica applicazione. Un caso tipico è l’uso del GRID Computing o più in generale delle
tecniche di calcolo distribuito; esse sono basate sulla possibilità di poter suddividere il
“compito” principale in task più semplici e indipendenti fra di loro: ogni task è assegnato ai
diversi nodi dell’infrastruttura di calcolo ed alla fine i risultati vengono assemblati da nodi
dedicati.
4
http://mamedev.org/
5
http://www.transmeta.com/tech/microip.html
6
Queste CPU appartengono all’architettura Very Long Instruction Word (VLIW).
7
http://java.sun.com/
- 12 -
La presente pubblicazione è focalizzata sugli aspetti di sicurezza della virtualizzazione basata su
partizionamento (ed in particolar modo sugli Hypervisor e il Virtual Machine Monitor) che costituisce il sistema più diffuso nelle aziende e tra gli utenti privati.
- 13 -