C apitolo 5
V alutazione delle prestazioni
Indice del capitolo_________________________________________________________
5.1 Configurazione ..81
5.1.1 Sistema .82
5.1.2 Politica di sicurezza .84
5.2 Prestazioni . .85
5.2.1 Sicurezza ..85
5.2.2 Banda di trasmissione ..86
_______________________________________________________________________________
Questo capitolo descrive le prove condotte per la valutazione delle prestazioni del sistema sviluppato. Vengono descritti il contesto in cui sono stati effettuate le prove, la configurazione applicata, gli strumenti utilizzati ed infine i risultati e le relative valutazioni dal punto di vista dell efficacia e dell efficienza del prototipo realizzato.
5.1 Configurazione
Il primo passo per la valutazione delle prestazioni è stato il setup del sistema, in modo da poter effettuare le prove sia in un contesto locale tra macchine virtuali in esecuzione sullo stesso nodo fisico che in uno distribuito, tra macchine virtuali residenti su nodi fisici
Valutazione delle prestazioni
introdotto dai controlli di SELinux sia quanto esso incida sulla banda delle operazioni invocate dai client sul file system distribuito.
5.1.1 Sistema
Come descritto in tabella 2, il sistema è composto da una serie di macchine virtuali che interagiscono per operare su un file system distribuito e condiviso.
Tabella 2: la configurazione del sistema
In particolare, nel caso considerato l architettura del prototipo comprende:
Dom0, la macchina virtuale, chiamata Dominio 0 nel contesto di Xen, avviata al Hardware
CPU Inter Core Duo T2300 1.66GHz
Memoria 1GB(512MB Dom0, 128MB DomFS, 64MB DomU) Disco 100 GB 5400rpm SATA(50GB Dom0, 20GB DomFS, 5GB
DomU)
Rete Ethernet 100 Mb/s
Software
VMM Xen 3.0.2
Software Dom0
OS Linux 2.6.19-xen
Distribuzione Linux Fedora Core 6[89]
Software DomFS
OS Linux 2.6.16.1-xen
Distribuzione Linux Debian Sarge[88]
File system distribuito NFSv3 Server SELinux patched Controllo degli accessi SELinux
Software DomU
OS Linux 2.6.19-xen
Distribuzione Linux Debian Sarge File system distribuito NFSv3 Client
Valutazione delle prestazioni
DomFS, la macchina virtuale creata dal Dom0, che:
a) implementa il file system distribuito NFS
b) esporta parte del file system alle altre macchine virtuali
c) definisce ed applica, tramite SELinux, la politica di sicurezza per il controllo degli accessi ai file condivisi.
In questa macchina virtuale è implementata l integrazione tra NFS ed SELinux descritta nel capitolo 4.
DomGuest, le macchine virtuali client, dove sono allocati gli utenti del servizio di condivisione.
Per consentire la comunicazione tra le macchine virtuali in esecuzione sullo stesso VMM, è stata utilizzata la funzione di Xen che permetti di creare due bridge virtuali, come mostrato in figura 22, ciascuno dedicato a una rete virtuale:
La prima rete virtuale è privata e quindi non accessibile dall'esterno. Essa permette alle macchine virtuali DomGuest di accedere alle risorse condivise, memorizzate nel DomFS. Il Dom0 permette di configurare adeguatamente questa rete privata in modo da connettere ad essa soltanto le macchine virtuali desiderate.
La seconda rete virtuale permette a tutte le macchine virtuali di accedere alla rete esterna.
Figura 22: la comunicazione all interno del VMM
Valutazione delle prestazioni
Questa configurazione permette di separare i flussi di informazioni in base alla criticità del flusso stesso, in particolare si è scelto di separare il traffico internet dal traffico NFS.
5.1.2 La politica di sicurezza
Per valutare le prestazioni in termini di efficacia ed efficienza è stata definita, mediante i meccanismi offerti da SELinux, una politica di sicurezza di esempio[80,81]
che è stata applicata sul DomFS per controllare gli accessi delle macchine virtuali DomGuest ai file condivisi. Di seguito, viene mostrato come il prototipo permetta di etichettare le macchine virtuali che accedono alle risorse condivise tramite il file system NFS.
type local_mvguest1_nfs_t;
nodecon 10.0.0.1 255.255.255.255
gen_context(system_u:object_r:local_mvguest1_nfs_t,s0) type local_mvguest2_nfs_t;
nodecon 10.0.0.2 255.255.255.255
gen_context(system_u:object_r:local_mvguest2_nfs_t,s0) type remote_mvguest1_nfs_t;
nodecon 192.168.1.1 255.255.255.255
gen_context(system_u:object_r:remote_mvguest1_nfs_t,s0)
Aggiungendo queste regole di etichettatura al file policy/modules/kernel/corenetwork.te è possibile controllare il flusso delle richieste da parte delle DomGuest con indirizzo 10.0.0.1 e 10.0.0.2, in esecuzione sullo stesso nodo fisico del DomFS, e 192.168.1.1, in esecuzione su un'altra macchina fisica.
Una volta assegnato un tipo ai client NFS, SELinux permette di concedere autorizzazioni di accesso alle risorse condivise ad un livello di granularità della politica del tipo client NFS file. In particolare, si sono utilizzati i comandi:
allow nfsd_t local_mvguest1_nfs_t:node { tcp_recv tcp_send };
allow nfsd_t local_mvguest2_nfs_t:node { tcp_recv tcp_send };
allow nfsd_t remote_mvguest1_nfs_t:node { tcp_recv tcp_send };
allow local_mvguest1_nfs_t dir_local1_t: dir r_dir_perms;
allow local_mvguest2_nfs_t dir_local2_t: dir rw_dir_perms;
Valutazione delle prestazioni
Questa semplice politica di esempio descrive come permettere al demone nfsd del DomFS di stabilire e di accettare connessioni TCP con i client NFS precedentemente etichettati. Infine, viene specificata la modalità con cui il DomFS condivide con i DomGuest alcune specifiche directory:
Permette al DomGuest con tipo local_mvguest1_nfs_t l accesso in sola lettura alla directory etichettata con il tipo dir_local1_t
Permette al DomGuest con tipo local_mvguest2_nfs_t l accesso in lettura e scrittura alla directory etichettata con il tipo dir_local2_t
Permette al DomGuest con tipo remote_mvguest1_nfs_t l accesso in sola lettura alla directory etichettata con il tipo dir_remote1_t
5.2 Prestazioni
Le prove condotte hanno avuto l obiettivo di verificare l efficacia del prototipo dal punto di vista della sicurezza e l overhead introdotto dai controlli addizionali di SELinux sul file system distribuito.
5.2.1 - Sicurezza
Le prove effettuate per valutare la sicurezza considerano un processo applicativo che prova ad invocare una operazione illegale sul file system condiviso. È bene sottolineare che l obiettivo del nostro lavoro non è quello di risolvere le vulnerabilità di NFS e del suo protocollo di comunicazione, bensì di limitare l impatto di un potenziale attacco al sistema che esporta i file condivisi. Infatti, anche se il sistema che gestisce la condivisione dei file viene compromesso, SELinux forza comunque tutti gli oggetti del sistema stesso a rispettare le regole descritte nella sua politica di sicurezza, che segue il modello MAC per il controllo degli accessi. In questo modo, i privilegi associati agli utenti del servizio di condivisione sono limitati dalla politica di sicurezza e in particolare dal ruolo e dal tipo con cui SELinux etichetta il DomGuest da cui viene invocata la richiesta.
Se controlliamo che il modulo SELinux sia integro, attraverso strumento come Tripwire[78] o attraverso introspezione da parte del Dom0[11,77], siamo quindi certi che
Valutazione delle prestazioni
utente NFS non può assumere il ruolo di superuser sul DomFS ma è vincolato a rispettare la politica di sicurezza di SELinux.
Ad esempio, abbiamo verificato che se una macchina virtuale tenta di accedere ad una directory con una modalità diversa da quella permessa dalla politica di esempio descritta nel precedente paragrafo, SELinux nega l accesso alla risorsa visualizzando sulla console il seguente messaggio di errore:
audit(1181061720.120:5): avc: denied { write } for pid=1203 comm="nfsd" name="bin" dev=hda1 ino=128163
scontext=system_u:object_r:locale_mvguest1_nfs_t tcontext=system_u:object_r:dir_local1_t tclass=dir
In questo caso la AVC di SELinux informa l amministratore del DomFS di aver negato l accesso in scrittura al demone nfsd, che agisce per conto del DomGuest con tipo locale_mvguest1_nfs_t, sulla directory identificata dal device hda1 e inode 128163 e con tipo dir_local1_t.
5.2.2 Banda di trasmissione
Per valutare le prestazioni del prototipo è stato utilizzato un strumento di benchmarking del file system, IOzone[83], che in modo automatico misura le prestazioni delle richieste di I/O su file system diversi, tra cui NFS, residenti su piattaforme come Linux e Solaris. Iozone permette di testare una grande varietà di pattern di richieste parametrizzabili in base alla dimensione del file, da 64Kbyte a 512Mbyte, e alla dimensione dei record, da 4Kbyte a 16Mbyte.
Questo programma permette inoltre di generare un output compatibile con Microsoft Excel e supporta quindi un agevole trattamento dei dati per l analisi dei risultati.
Nel caso dello strumento sviluppato in questa tesi, IOzone è stato usato per analizzare le prestazioni dei client NFS nelle interazioni con il server NFS.
IOzone, nella versione 3-283, è stato installato su tutte le macchine virtuali DomGuest e i risultati, alcuni dei quali sono mostrati nelle figure x3 e x4, sono stati generati eseguendo
Valutazione delle prestazioni
che esegue in successione un serie di operazioni su testfile, incrementando di volta in volta la dimensione di questo file che è contenuto nella directory NFS. Al fine della valutazione molto importante è l opzione U che indica ad IOzone di svuotare la cache del client tra due test, montando e smontando il mountpoint NFS /mnt/nfsroot.
In particolare nella figura 23 sono mostrate le prestazioni del prototipo, per accessi a file di dimensioni da 64Kbyte a 16Mbyte, nel caso in cui il client NFS sia in esecuzione sulla stessa macchina fisica del DomFS e non sia attivo su quest ultimo il controllo degli accessi effettuato da SELinux.
Figura 23: risultati della operazione di scrittura in locale senza SELinux
In figura 24, invece, sono mostrate le prestazioni, per accessi a file di dimensioni da 64Kbyte a 16Mbyte, nel caso in cui il client NFS e il server NFS siano in esecuzione su macchine fisiche diverse e sia attivo sul DomFS il controllo degli accessi di SELinux.
Valutazione delle prestazioni
Figura 24: risultati della operazione di scrittura in remoto con SELinux
Figura 25: risultati complessivi del test di lettura
Valutazione delle prestazioni
Figura 25: risultati complessivi del test di scrittura
Le figure 25 ed 26 infine riassumono i risultati dei test eseguiti nei seguenti casi:
operazioni invocate da un DomGuest in esecuzione sulla stessa macchina fisica del DomFS e con SELinux disabilitato
operazioni invocate da un DomGuest in esecuzione sulla stessa macchina fisica del DomFS e con SELinux abilitato
operazioni invocate da su un DomGuest in esecuzione su una macchina fisica diversa da quella del DomFS e con SELinux disabilitato
operazioni invocate da su un DomGuest in esecuzione su una macchina fisica diversa da quella del DomFS e con SELinux abilitato
Come evidenziato dai grafici, l overhead introdotto dai controlli degli accessi di SELinux per un accesso in scrittura ad un file condiviso
è di circa 11% se le due macchine virtuali coinvolte sono eseguite dallo stesso nodo fisico ;
è trascurabile se le due macchine sono eseguite su nodi fisici differenti, rispetto al caso in cui SELinux è disabilitato;
è di 1% nel primo caso e del 2% nel secondo per un accesso in modalità lettura .