Un server web su Xen
Quali strategie si possono adottare per installare un web server su un domU? Consigli e istruzioni con due esempi fatti usando Apache e Ubuntu 8.04 o Fedora.
Xen offre la possibilità di creare macchina virtuali (domU) contenenti svariati sistemi operativi che possono eseguire vari tipi di servizi o demoni. L’installazione e le configurazione di un server web all’interno di una virtual machine è una pratica sempre più usata, soprattutto per ospitare siti web di medie dimensioni e con un discreto traffico generato.
Utilizzando Xen è possibile dunque utilizzare anche altri servizi come: server pop, server smtp, tomcat… in ambienti isolati per aumentare la sicurezza di un singolo calcolatore. Infatti la compromissione di uno dei sistemi operativi può portare ad un crash di solo quest’ultimo e non di tutti gli altri. In più con questa soluzione più server richiedono un solo computer e ciò comporta un risparmio energetico rispetto a una soluzione basata su più calcolatori.
La prima cosa da fare è scegliere il sistema operativo che verrà eseguito all’interno del domU e il programma per il web server. Una volta scelto il sistema operativo si può pensare se è fattibile l’uso della paravirtualizzazione o se ci si deve affidare alla virtualizzazione completa (full virtualization).
Se il sistema operativo guest è una distribuzione GNU/Linux si può scegliere mentre se è Windows è necessario optare per l’uso della virtualizzazione completa (HVM).
Altra decisione da prendere è il tipo di supporto di memorizzazione: partizione, file, LVM. Usando una partizione le prestazioni sono migliori, tuttavia sono necessarie almeno due partizioni libere una per lo swap e l’altra come /. La soluzione su file comporta l’utilizzo di un file raw per la directory / e di un file per lo swap opportunamente formattati; lo svantaggio di questa soluzione è il sovraccarico e la diminuzione delle prestazioni se c’è un’intensa attività di I/O.
L’uso di volumi LVM è una via di mezzo, per quanto riguarda le prestazioni, tra le altre due opportunità, in aggiunta è possibile assegnare ulteriore spazio ad un volume dopo la sua creazione e si possono clonare facilmente le virtual machine.
Una volta scelto il tipo di storage si deve pensare a come partizionare lo spazio del disco virtuale per il sistema operativo ospitato sul domU.
Ciò naturalmente deve essere compatibile con la scelta del sistema operativo e del software per il web server.
[ad#basso]
Ecco la configurazione del web server che ho realizzato:
Il sistema operativo host è OpenSuSE 10.3 mentre quello guest è Ubuntu 8.04 paravirtualizzato.
Occorre per fare questo procurarsi un kernel xen per Ubuntu 8.04 e un ramdisk compatibile. Il software per il servizio di server web è Apache 2, contenuto nel supporto di installazione ovviamente aggiornato con le ultime patch.
Ho scelto, inoltre, una suddivisione del disco virtuale in quattro partizioni: una per il sistema operativo e le applicazioni del web server, una per le pagine web (i contenuti), un altra per i vari log e l’ultima partizione è quella di scambio. Questo per evitare che lo riempimento di una delle partizioni possa compromettere le altre e anche per montare alcune di loro con permessi e attributi particolari (noexec, read-only…).
Per la configurazione e la messa in sicurezza sia del sistema operativo Ubuntu sia del web server Apache ci sono numero se guide on line sulla questione: http://wiki.ubuntu-it.org/Sicurezza/Iptables , http://openskill.info/topic.php?ID=83 .
Alcune rapide informazioni: il file di configurazione di un sito attivo (o anche virtual host) in Ubuntu e Debian sta in /etc/apache2/sites-enabled mentre i file di configurazione dei siti disponibile o in allestimento si trovano in /etc/apache2/sites-available.
La “DocumentRoot” sarà contenuta in /var/www/ ovvero all’interno della partizione dei contenuti.
Durante l’installazione del sistema operativo guest è fondamentale ricordarsi di disabilitare selinux o eventuali regole di filtraggio dei pacchetti se attivi per preimpostazione. La protezione del domU deve essere fatta esternamente alla virtual machine (così come avviene per ogni normale web server), mentre è consigliato fortificare (hardening) il domU.
Ho preparato anche un domU con Fedora 8 su tre partizioni ext3 (/, /var/log, /var/www) + una partizione swap. La configurazione di questa macchina virtuale è simile a quella che già descritto per Ubuntu. All’interno dell’archivio c’è il kernel e il ramdisk che permettono di paravirtualizzare la virtual machine, in più è incluso il file di configurazione che va modificato opportunamente per il proprio host. Non mancano naturalmente i due file immagine fedora.img e swap.img. La password di root è “valent-blog.eu” mentre l’hostname è “webserver.fedora.lan”.
Le impostazioni di Apache possono essere cambiate modificando il file /etc/http/conf/http.conf. Per avviare il server web (nel domU è in autostart) usare il comando:
# service httpd start
Mentre se è necessario riavviarlo (magari dopo una modifica del file di configurazione):
# service httpd reload
La DocumentRoot di default è /var/www/html quindi un file blog.html lì posizionato può essere visualizzato con il browser testuale interno alla VM, già installato, lynx così:
# lynx http://localhost/blog.html
Per modificare le impostazioni del firewall sul web server Fedora si può usare il comando “lokkit”.
Per disabilitare temporaneamente iptables:
# service iptables stop
Per avviarlo nuovamente dopo lo spegnimento:
# service iptables restart
Per ciò che riguarda SELinux è possibile modificarne il comportamento cambiando delle impostazioni nel file /etc/selinux/config.
SELINUX=enforcing
Mettendo “disabled” (senza virgolette) al posto di enforcing, SELinux non sarà più attivo. Non disattivando il framework SELinux non sarà possibile la connessione dall’esterno al server web.
Nella seconda parte di questo articolo verranno descritte le fasi di preparazione della rete e metterò on-line l’archivio con la virtual machine basata su Fedora.
Un pensiero riguardo “Un server web su Xen”
I commenti sono chiusi.