Uso della virtualizzazione e di SOAP per la gestione remota dei PC delle aule e dei laboratori Michele Ricciardelli, Dario Russo1 Dipartimento DEMM - Università degli Studi del Sannio in Benevento Piazza Guerrazzi N.1 82100 Benevento (BN) [email protected] 1Dipartimento DEMM - Università degli Studi del Sannio in Benevento Piazza Guerrazzi N.1 82100 Benevento (BN) [email protected] Questa esperienza progettuale nasce dall’esigenza di avere dei laboratori informatici multidisciplinari con computer controllabili da remoto. Nella pratica comune capita spesso che sui computer condivisi possano nascere problemi di funzionamento a causa della presenza di virus, di manipolazioni della configurazione o per la non capillare installazione di software, o essere oggetto di accessi non autorizzati che possono comprometterne la sicurezza. Con questo lavoro si intende proporre una soluzione a queste criticità, con un modello che sfrutta la virtualizzazione per creare delle macchine più facilmente controllabili, in grado di essere gestite anche da remoto e dove viene limitata al minimo la manutenzione. Il tutto sfruttando il ricorso al mondo open-source, che rende il modello facilmente esportabile in qualsiasi ambito didattico. 1. Introduzione Spesso i PC presenti negli ambienti condivisi delle Università non funzionano a causa di problemi dovuti alla presenza di virus, a problemi hardware o a tentativi di manipolazione. Le principali cause alla base di questi problemi sarebbero da ricercare nella mancanza di fondi per la manutenzione, nella mancanza di personale e nelle debolezze intrinseche al sistema operativo Windows, solitamente utilizzato in ambito accademico. Ma è possibile intervenire su questi processi? Questo lavoro propone un modello che, se implementato, permette di ridurre drasticamente gli interventi di manutenzione, permettendo il controllo e la gestione dei computer anche da remoto. DIDAMATICA 2016 – ISBN 9788898091447 DIDAMATICA 2016 2. Obiettivi Il primo obiettivo di questo lavoro è stato quello di creare dei sistemi in grado di soddisfare differenti richieste didattiche. Per centrare questo obiettivo si è pensato di sfruttare la virtualizzazione attraverso cui è stato possibile garantire nei laboratori un’offerta multidisciplinare, sfruttando la possibilità di installare su di un’unica piattaforma più sistemi operativi [Moriggia, 2009]. L’altro obiettivo è stato quello dell’affidabilità. L’uso continuo, soprattutto da parte di utenti diversi, rende le macchine vulnerabili rispetto a modifiche della configurazione iniziale, ad installazioni di software non autorizzate e, infine, alle infezioni virali. Il modello proposto, con la virtualizzazione, realizza computer affidabili ed a prova di manomissione. L’ultimo obiettivo è stato quello del controllo a distanza. La carenza di personale unita alla necessita di automatizzare molti processi, legati all’installazione del software o al controllo, ci ha spinto a studiare delle soluzioni che permettessero di intervenire da remoto su singoli PC, o programmare degli interventi su gruppi di PC sfruttando le risorse che può offrire la virtualizzazione, attraverso il controllo del sistema Host e Guest. L’esperienza sul campo di architetture basate su tale modello ci permette di affermare a ragion veduta che una buona parte di questi obiettivi sono stati raggiunti. 3. Il modello Il modello contempla un PC con Linux (nel nostro caso abbiamo optato per la distribuzione CentOS, versione 6.4) come sistema operativo Host, su cui girano delle macchine virtuali, gestite mediante VirtualBox. In particolare abbiamo predisposto due macchine virtuali: una con Windows 7, con installati il pacchetto Office ed i browser Crome e Firefox, antivirus e tutto quanto necessario per le comuni esigenze didattiche; un'altra con Linux, una macchina questa predisposta per lo sviluppo software e l’analisi statistica, con ambiente grafico, compilatori, software matematici, etc. Al boot dell'Host, dal menu di Grub viene scelta la macchina virtuale da utilizzare. Il sistema Host è stato configurato in modo da prevedere l'auto-login. In automatico viene così attivata la macchina virtuale con il sistema operativo scelto. Questa poi prende il controllo di tutto il desktop. L'utente finale quasi non percepisce che sta operando all'interno di un ambiente virtuale avendo a disposizione sia l'accesso ad Internet, sia le risorse audio, video e di stampa, insieme all’utilizzo dei dispositivi USB e CD Rom. I vantaggi di questa architettura sono diversi, significativi sono il controllo da remoto dell'Host, attraverso lo strato Linux, anche con accessi da terminale mediante SSH e la sostituzione della macchina virtuale con la semplice copia del file di Virtualbox. 2 Uso della virtualizzazione e di SOAP per la gestione remota dei PC delle aule e dei laboratori 4. L'architettura del sistema Il sistema contempla l'utilizzo di un un Host Linux su cui gira il software VirtualBox, che gestisce le macchine virtuali Windows e Linux, su cui operano gli utenti. Per le aule abbiamo predisposto una macchina virtuale con Windows 7, con installati il pacchetto Office ed i browser Crome e Firefox, antivirus e tutto quanto necessario per le comuni esigenze didattiche. Per i laboratori, alla macchina virtuale precedente si è aggiunta una macchina virtuale con Linux, completa di ambiente grafico GNOME, librerie e compilatori per lo sviluppo software e l’analisi statistica (Fig. 1). GUEST LINUX -gcc -java -python + Idle -R GUEST WINDOWS7 -Office -Web Browsers -Antivirus -VLC Livello Utente VIRTUAL BOX Amministrazione HOST LINUX Fig. 1 - L'architettura del Client 3 DIDAMATICA 2016 Tutti i PC prevedono la presenza di una partizione dedicata ad ospitare una copia locale di backup delle macchine virtuali utilizzate. Si è fatta questa scelta per poter sostituire facilmente una macchina virtuale corrotta in pochi istanti, volendo anche da remoto, mediante degli script appositamente predisposti. 5. Il client Al boot dell'Host, dal menu di Grub viene scelta la macchina virtuale da utilizzare, oppure una delle voci di manutenzione o ripristino automatizzato protette da password, che sono state predisposte. Le configurazioni per uso didattico prevedono l'auto-login sull'Host Linux di un utente a bassi privilegi. In automatico viene attivata ---a pieno schermo--- la macchina virtuale con il sistema operativo scelto, il cui caricamento é mascherato da una finestra grafica di avviso contenente una netiquette temporizzata, che si chiude a caricamento effettuato, lasciando l'utente libero d'interagire con il sistema operativo Guest. L'utente finale quasi non percepisce di essere all'interno di un ambiente virtuale, avendo a disposizione sia l'accesso ad Internet, sia tutte le risorse locali, quali: dispositivi USB, servizi audio/video e di stampa, e tutte le normali scorciatoie da tastiera previste dal sistema operativo. I vantaggi di questa architettura sono diversi e comprendono: la possibilità di controllare da remoto il Guest attraverso il VirtualBox Web Server [Oracle Corporation, 2014], lasciato in ascolto in background sul sistema operativo Host Linux, ad esempio mediante il programma phpVirtualbox; oppure con accessi diretti da terminale via SSH, per operazioni di manutenzione o di emergenza; oppure con script da noi realizzati che operano sia sul’Host che sul Guest. Gli script messi a punto finora forniscono la possibilità: di filtrare e monitorare i servizi internet della singola macchina; di mettere in lock da remoto un PC, avvalendosi anche delle funzioni del protocollo X11 [Nye, 1995]; di avviare da remoto il software del sistema operativo Guest; di ricostruire una macchina virtuale copiando semplicemente la sua immagine (file VDI di VirtualBox) dalla partizione di backup; di ripristinare una partizione del disco fisso o l’intero PC da un clone server. 6. Il funzionamento dell'Host Linux L'Host Linux è predisposto per essere completamente invisibile all'utente, ma accessibile al personale all'occorrenza, mediante il richiamo all'avvio di specifiche voci del menu di Grub. Su esso, oltre al gestore delle macchine virtuali sono installati alcuni script, che si possono distinguere in due tipologie principali: script di gestione degli eventi e script di manutenzione. 4 Uso della virtualizzazione e di SOAP per la gestione remota dei PC delle aule e dei laboratori Gli script di gestione degli eventi sono scritti in Python sfruttando le API messe a disposizione da VirtualBox e con esso s'interfacciano. I compiti principali che assolvono sono: lanciare il banner con la netiquette all'avvio della macchina virtuale, provvedere allo spegnimento software della macchina Host nel momento in cui la macchina Guest viene spenta. Consentono anche il blocco di mouse e tastiera di specifici PC, oppure di disabilitare/abilitare le connessioni di rete (ad esempio in occasione di un esame), avviare/fermare la registrazione della sessione di lavoro per poterla successivamente condividere in rete, si occupano di montare in modo trasparente i dispositivi USB inseriti nelle porte del PC sul Guest. A tal fine è stata scritta anche una specifica regola di udev. Gli script di manutenzione sono quelli che si occupano della personalizzazione della specifica macchina, come l’assegnazione dell’indirizzo IP, hostname, l’aggancio al dominio, etc. sia nella parte Host che nella parte Guest. Per queste operazioni si sono utilizzati script bash sul lato Linux e, per la macchina virtuale Windows i normali batch di DOS. Uno dei vantaggi derivanti dall’uso di una macchina virtuale è che grazie al sistema operativo Linux dell’Host, la macchina virtuale è indipendente dall’hardware fisico. Nel nostro caso infatti l’immagine della macchina virtuale Windows, utilizzata sia nelle aule che nei laboratori, è la stessa e gira su architetture fisiche differenti. Ovviamente a questa macchina sono state applicate delle personalizzazioni funzionali all’attività ed all’ambiente in cui questa deve operare. 7. Il funzionamento del Guest Windows Il Guest Windows è una macchina Windows 7 con tutti i normali applicativi didattici, quali il pacchetto office, i plug-in flash dei browser, i programmi di visualizzazione dei video e dei file Pdf. La macchina virtuale opera esattamente come una macchina fisica e non si avvertono differenze o rallentamenti significativi nella gestione dei processi. Per la configurazione di Windows si è fatto uso dei modelli amministrativi messi a disposizione da questo sistema operativo: sia per limitare le attività potenzialmente dannose da parte degli utenti, negando loro specifici privilegi o la possibilità di effettuare talune operazioni, ad esempio cambiare lo sfondo del desktop, oppure lanciare eseguibili da una pennetta USB; sia per operazioni di fine-tuning, come consentire il riconoscimento dei dispositivi inseriti dagli utenti non-amministratori, oppure prevedere la cancellazione automatica della cache del browser. Si raggiunge così un buon compromesso tra usabilità della macchina e sicurezza. 5 DIDAMATICA 2016 8. VBoxManage VBoxManage è un’interfaccia di Virtualbox da linea di comando. Con essa è possibile controllare una macchina virtuale con comandi eseguiti sul sistema Host. Utilizzando il comando Execute, previsto nel set di comandi della specifica Guestcontrol, è possibile lanciare dei programmi nel sistema operativo Guest. Sfruttando questa possibilità abbiamo creato un insieme di script per Windows, collocati in una directory accessibile solo all’amministratore della macchina Guest, con cui si configura o si interviene sul funzionamento del sistema operativo Windows (per la macchina virtuale Linux il discorso è analogo, sono script bash di proprietà di root). Questi script vengono lanciati dalla macchina Host attraverso il canale di comunicazione definito dall’interfaccia VBoxManage sulla macchina Guest. Avendo un canale di comunicazione tra la macchina Host Linux e la macchina Guest è stato naturale pensare ad un controllo remoto del PC. Configurando infatti un web server sulla macchina Host Linux si è utilizzato il protocollo HTTP per interagire da remoto con dei servizi residenti sull’Host. Questi servizi lanciano, con delle chiamate di sistema fatte dalle pagine PHP (linguaggio con cui sono stati scritti i servizi) dei comandi esterni residenti sul file-system Linux. Un vantaggio derivante da questa scelta è di costruire delle interfacce utenti gestibili attraverso un browser. Alcuni di questi comandi utilizzano l’interfaccia VBoxManage per fare eseguire gli script presenti sul sistema Guest, altri invece eseguono azioni direttamente sull’Host. In questo modo, attraverso un browser, si riesce ad interagire a distanza sia con l’Host che con il Guest lanciando dei comandi presenti sui loro filesystem. Questi possono essere degli eseguibili o degli script di shell che operano direttamente all’interno dei sistemi operativi delle macchine Host e Guest, senza che vi sia la necessità di aprire delle sessioni da terminale o attivare delle sessioni di desktop remoto. Questo aspetto è determinante per consentire al personale che non ha grosse conoscenze tecniche di poter controllare a distanza i computer delle aule o dei laboratori. Permettendo di demandare una gestione di primo livello anche al personale ausiliario, liberando così risorse tecniche per altri compiti. 6 Uso della virtualizzazione e di SOAP per la gestione remota dei PC delle aule e dei laboratori 9. Pear NET_Ping Il controllo dello stato di un PC, ovvero se questi risulta essere acceso o spento, è la prima e più importante azione da compiere in un sistema di controllo remoto. Per verificare se un PC di un’aula o di un laboratorio risulta acceso, e quindi se l’Host Linux è attivo, si è pensato di utilizzare il modulo Net_Ping della libreria PEAR. Attraverso questo modulo vengono inviati, dal server Web Joomla che ospita l’interfaccia utente del servizio (modulo client), dei pacchetti ICMP verso l’indirizzo IP dell’Host Linux per verificare se questi è in funzione. La risposta viene intercettata e riportata a video mostrando un’icona verde che rappresenta l’Host in funzione. L’operazione viene svolta in background e viene eseguita una volta che si accede alla pagina del servizio. Quindi risulta essere trasparente all’utente che si ritrova, nel caso in cui l’Host risulti attivo, i bottoni dei comandi per il lancio degli script cliccabili (ovviamente non cliccabili se l’Host non è attivo). 10. Il servizio web SOAP Come abbiamo precedentemente accennato, quale sistema di controllo a distanza dei PC delle aule o dei laboratori si è pensato di utilizzare un’interfaccia web-based, questo per gli intuibili vantaggi legati all’utilizzo di un browser come client. Per lo sviluppo dei servizi web in grado di scambiare dei messaggi (che identificano dei comandi) tra client e server, si è optato per il protocollo SOAP. Questi è un protocollo nato proprio per lo scambio di messaggi tra componenti software, che gestisce informazioni strutturate basate su XML. I messaggi SOAP posso essere veicolati con il protocollo HTTP, quindi è possibile scrivere delle applicazioni client/server utilizzando come mezzo di trasporto il Web. Inoltre questo protocollo, visto che gestisce delle informazioni fortemente tipate risulta essere affidabile e sicuro, caratteristiche queste che si sposano perfettamente con le esigenze di un sistema di controllo a distanza dei PC delle aule o dei laboratori. In pratica sugli Host Linux, ovvero sui PC presenti nella aule e nei laboratori, nella directory controllata dal Web server Apache è stato inserito il programma che opera da server SOAP con il relativo documento WSDL, che definisce la struttura dei messaggi scambiati. Documento questo che si basa su XML. Il nostro client SOAP, invece, è un componente di Joomla, il CMS con cui è realizzato il portale del Dipartimento. Tutto il software con cui sono stati implementati sia il client che i server è stato scritto in PHP [Ed Lecky et al, 2009]. 7 DIDAMATICA 2016 Fig. 2 La gestione client/server mediante SOAP Il client è utilizzabile solo dal personale preventivamente autorizzato, che accede a questo servizio autenticandosi sul CMS di Dipartimento, utilizzando le credenziali assegnate. Il client SOAP comunica inviando messaggi con i server SOAP presenti su ciascuno degli Host Linux ubicati nelle aule e nei laboratori. Quindi volendo fare eseguire un comando all’interno della macchina virtuale Windows di un certo PC, l’operazione che viene fatta è di collegarsi, mediante un browser, al sito web del Dipartimento, autenticarsi ed accedere alla pagina web del servizio che gestisce i client SOAP dei vari PC e selezionare il modulo client del PC che interessa. Questi interagirà con il server SOAP presente sull’Host Linux di quel PC. A questo punto, cliccando su semplici bottoni presenti nell’interfaccia web del servizio, si lanceranno i programmi che verranno eseguiti sul PC remoto (Fig. 2). Alcuni di questi programmi eseguiranno azioni sulla macchina Guest utilizzando l’interfaccia VboxManage, mentre altri opereranno direttamente sull’Host. 11. Conclusioni Il modello proposto ha permesso di trasformare i laboratori del Dipartimento in ambienti multidisciplinari e multifunzionali in maniera trasparente per docenti e studenti. Ha permesso inoltre di utilizzare i laboratori in maniera indistinta ed intensiva ed ha ridotto gli interventi di manutenzione. La sperimentazione effettuata ci permette di affermare che il modello proposto rende di fatto i laboratori affidabili. Eventuali malfunzionamenti, inoltre, possono essere risolti rapidamente, con interventi programmati anche da remoto. Da non sottovalutare, infine, la possibilità di utilizzare da remoto delle interfacce di gestione e controllo delle aule e dei laboratori, demandando una gestione operativa di primo livello al personale ausiliario, in modo da liberare risorse tecniche per altri scopi ed ottimizzare i processi lavorativi. 8 Uso della virtualizzazione e di SOAP per la gestione remota dei PC delle aule e dei laboratori Bibliografia [Grayson J.], Python and Tkinter Programming, Manning, 2000. [Moriggia F.], Computer Infiniti, PC Professionale, 2009, 225, 32-49. [Oracle Corporation], Oracle VM VirtualBox Programming Guide and Reference, 2014. [Nye A.], X Protocol Reference Manual for X11 Release 6, O’Reilly and Associates, 1995. [Ed Lecky, S. D. Nowicki, T. Meyer], PHP6 guida per lo sviluppatore, Hoepli, 2009 9