Corso di Sicurezza su reti II Anno accademico 2006-2007 Prof. A. De Santis Simulazione della rete Internet: Versione finale Sommario Parte prima: Informazioni generali ....................................................................................... 4 Parte seconda: Scheda tecnica ........................................................................................... 5 Descrizione dei servizi: ..................................................................................................... 5 Manuale d’uso: ................................................................................................................. 5 Implementazione: ............................................................................................................. 6 Parte terza: Fase di setup .................................................................................................... 7 Organizzazione:................................................................................................................ 7 Risorse hardware: ............................................................................................................ 7 Strumenti software:........................................................................................................... 7 Installazione software: ...................................................................................................... 8 Software installato e Motivazioni ................................................................................... 8 Sicurezza: ....................................................................................................................... 12 Parte quarta: Fase di tuning............................................................................................... 14 Parte quinta: La commessa ............................................................................................... 15 Descrizione della commessa .......................................................................................... 15 Breve descrizione dei requisiti ........................................................................................ 15 Specifiche .................................................................................................................... 15 Esempio di utilizzo .......................................................................................................... 15 Aquirente ..................................................................................................................... 15 Amministratore ............................................................................................................ 16 Applicazione realizzata ................................................................................................... 16 Homepage ................................................................................................................... 16 Catalogo ...................................................................................................................... 17 Carrello ........................................................................................................................ 18 Pannello amministratore.............................................................................................. 18 Suddivisione del lavoro ................................................................................................... 19 2 Misure di sicurezza ......................................................................................................... 20 Difficoltà riscontrate ........................................................................................................ 21 Difficoltà con la distribuzione del carico del database ................................................. 21 Difficoltà riscontrate nella fase di integrazione ............................................................ 21 Fonti bibliografiche: ............................................................................................................ 23 3 Parte prima: Informazioni generali NOME DEL GRUPPO g3isp DENOMINAZIONE ISP3 COMPONENTI Bruno Andrea - 0521000495 Di Perna Francesco - 0521000442 Granato Francesco - 0521000383 OBBIETTIVO Implementazione di un portale web commerciale che offra servizi di web authoring e web hosting, registrazione domini e spazio web a terzi. PROGETTO Questo documento ha lo scopo di illustrare e definire i compiti ed il lavoro svolto dal gruppo ISP3 all’interno della simulazione. 4 Parte seconda: Scheda tecnica Descrizione dei servizi: Un Internet Service Provider (ISP) è una struttura commerciale o un'organizzazione che offre agli utenti (residenziali o imprese) accesso a Internet con i relativi servizi. In italiano è detto anche fornitore d'accesso. Per estensione, si usa il termine ISP anche per fornitori di servizi Internet diversi dall'accesso. La scelta dell'ISP è fondamentale. Ogni giorno appaiono sul mercato nuovi provider di servizi. Esistono ISP locali e nazionali, i quali offrono opzioni e modalità di pagamento diverse. Il provider deve vantare soprattutto un tempo di connessione eccellente, caratterizzato da pochissime ore di interruzione (meno di due o tre interruzioni negli ultimi 3 mesi). Dopo tutto, ogni volta che qualcuno non riesce ad accedere al sito Web della società o a inviare un messaggio, l'azienda può subire delle perdite. In particolare l’ ISP offre servizi avanzati di sviluppo e gestione delle pagine Web. La realizzazione di questi servizi richiede ampie conoscenze tecniche e l'integrazione dei sistemi informatici. Manuale d’uso: Gli utenti per poter richiedere dei servizi devono contattare l’Internet Service Provider e richiedere il rilascio di username e password. Una volta ottenute l’utente potrà accedere ai servizi attivati. Tra i servizi attivabili vi sono: registrazioni di domini, sviluppo e pubblicazione di siti web. Inoltre gli utenti possono far uso di un server ftp per effettuare l’upload sullo spazio da loro richiesto ed assegnato. Le scelte tecnologiche si fondano principalmente su versioni aggiornate, sicure e free. Si intendono fornire servizi che rispecchiano tali caratteristiche, che siano in primo luogo sicuri e che non consentano “ospiti inattesi”, dunque la sicurezza prima di tutto, ma anche il rispetto dell’utente nell’offrirgli un sistema stabile, in grado di rispondere ad ogni sua esigenza e che offra servizi efficienti. Servizi dunque on-line, rispondenti ai requisiti proposti e la possibilità si far viaggiare sicure le informazioni, quali login, password, numero di carta di credito e cosi via. Gli scopi che ci siamo prefissati di realizzare sono sviluppati con l’ausilio di: Apache, Php e MySql. La sicurezza sui vari provider sarà garantita tramite firewall, ssl (aggiornato alla versione 0.9.8c ) e https. La simulazione per funzionare ha bisogno di attraversare 5 stadi fondamentali: 5 Documentazione su Internet e sulle tesine del corso di sicurezza su reti. Installazione del sistema operativo e dei software utili ai fini lavorativi. Realizzazione provider internet commerciale che offra servizi su Internet (web hosting, web authoring registrazione di domini, applicazioni on-line). Realizzazione di commesse. Simulazione della rete. Implementazione: Il gruppo ISP3 è composto da 3 persone e si è cercato di suddividere il carico di lavoro in maniera equa sfruttando le conoscenze pregresse dei vari componenti del gruppo. In particolare: COMPONENTE LAVORO SVOLTO BRUNO ANDREA Selezione software da installare, installazione S.O., gestione politiche di sicurezza (guardog) e attivazione nuovi account (webmin) FRANCESCO GRANATO Selezione software da installare, installazione Web Server Apache e installazione altri software FRANCESCO PERNA 6 DI Selezione software da installazione altri software installare, installazione MySQL e Parte terza: Fase di setup Organizzazione: Tutti i componenti del gruppo hanno preso parte all’installazione del sistema operativo, alla scelta dei prodotti software da installare, alla ricerca di materiale su internet per la fase di documentazione e scelta delle distribuzioni. La prima fase di cui il gruppo si è occupata è stata la scelta della macchina sulla quale iniziare l’attività. Successivamente i componenti si sono accertati del completo funzionamento di tutte le parti hardware per non compromettere la riuscita della fase di setup e dell’intera simulazione. Risorse hardware: 1 PC assemblato con le seguenti caratteristiche: PROCESSORE Intel© Pentium 3 800 Mhz (L1 cache: 256KB) MEMORIA RAM 128 MB SCHEDA VIDEO Matrox mga G400 HARD DISK Quantum Fireball 20 GB LETTORE CD Creative 52X SCHEDA DI RETE Realtek RTL8139 SCHEDA AUDIO Ensoniq 5880 audiopci Con queste caratteristiche questa risulta essere un delle macchine più potenti all’interno della rete della nostra simulazione. Strumenti software: CATEGORIA SOFTWARE VERSIONE SISTEMA OPERATIVO Ubuntu 7.04 server edition x86 SERVER WEB Apache 2.2.3 DBMS MySQL 5.0.38 SERVER SIDE LANGUAGE SCRIPTING Php LIBRERIE SSL PANNELLO REMOTO 7 DI CONTROLLO 5.2.1 Openssl 0.9.8c Webmin 1.340 PANNELLO Wirtualmin 3.39 SERVER FTP ProFtpd 1.3.0a CONFIGURAZIONE FIREWALL Guarddog 2.5.0 Webalizer 2.01-10 DI CONTROLLO VHOST GESTIONE STATISTICHE SITI WEB Installazione software: Software installato e Motivazioni Ubuntu 7.04 – server edition x86 Abbiamo scelto ubuntu come distribuzione linux in quanto tra le distribuzioni server completamente libere e gratuite di linux era quella che garantiva una maggiore presenza di pacchetti precompilati ed un miglior supporto della comunità di utenti tramite forum. La versione di ubuntu presa in considerazione è l’ultima realizzata. E’ stata scelta perchè include già le versioni più recenti e sicure. Tra queste abbiamo riscontrato Apache2, Mysql e php. Ubuntu 7.04 prende il posto della versione 6.10 "Edgy Eft" e, come quest'ultima, arriva nell'edizione desktop e server. Al suo cuore c'è il kernel di Linux 2.6.20 e le interfacce grafiche KDE 3.5.6, GNOME 2.18 e Xfce 4.4. In fase di installazione è stato migliorato il riconoscimento dell'hardware, soprattutto per quanto riguarda i notebook. In Ubuntu 7.04 fa capolino l'Easy-to-install codec wizard, un programma grafico che semplifica l'installazione di codec multimediali aggiuntivi: nel caso in cui non si riesca a riprodurre un file, il tool suggerisce automaticamente il download del codec più adatto. Il tool Restricted Drivers manager permette invece di installare drive grafici o WiFi proprietari. Gli sviluppatori di Ubuntu hanno poi migliorato l’Help Center, un sistema di aiuto centralizzato di cui è stata limata l'interfaccia e sono stati aggiunti molti argomenti. Il gruppo di volontari italiani che si occupa della traduzione di Ubuntu ha per altro già tradotto quasi tutta la nuova distribuzione. Dal punto di vista grafico, Feisty Fawn include un tema ampiamente rivisitato e permette di attivare effetti 3D per il desktop. In Ubuntu 7.04 è stato infine incluso il modulo Kernel Virtual Machine (KVM), che permette di far girare più sistemi operativi sullo stesso PC, ed il supporto alle estensioni hardware Intel VT o AMD-V e a VMI, che ottimizza le performance di VMware. Al debutto anche Jetpipe, una nuova architettura per la stampa dedicata ai thin client. 8 La distribuzione installata, dato l’ hardware messo a disposizione, è stata la alternate perché questa consente di gestire al meglio sistemi che hanno meno di 256Mb di ram. Inoltre l’interfaccia grafica è Xfce 4.4 dato che non si doveva appesantire il sistema. In fase di installazione abbiamo scelto di partizionare il nostro Hard Disk nel seguente modo: 300MB per partizione Swap 7GB per il Sistema Operativo 13.5 GB per la cartella Home con attivati i flag per la gestione della quota disco per singolo utente o gruppi Apache 2.2.3 Il web server Apache è uno dei più riusciti progetti open source al mondo, infatti può vantare una quota di mercato pari al 54% a luglio 2007 secondo quanto affermato da netcraft. Inoltre la documentazione relativa a questo popolare web server è molto copiosa e ben realizzata. Se a questo si aggiunge che è completamente gratuito ed Open Source, si può facilmente vedere come questa sia stata quasi una scelta obbligata per il nostro gruppo. Questo, come tutti gli altri software della simulazione è stato installato tramite il tool Synaptic della distribuzione ubuntu e i pacchetti precompilati specifici di questa distribuzione. Apache 2 è la più recente e migliore versione del server Apache, la cui architettura contiene significativi miglioramenti rispetto alla serie 1.3, tra cui possiamo menzionare: Moduli multiprocesso, grazie ai quali Apache può essere configurato come un server basato su processi Moduli di protocollo, rendono possibile la scrittura di moduli per protocolli diversi da HTTP, quali POP3 per la posta o FTP per il trasferimento di file. Apache 2 conserva l'architettura modulare di 1.3 con l'aggiunta di un ulteriore meccanismo di estensione rappresentato dai filtri. La versione 2.2.3 introduce diverse interessanti novità sul fronte delle autorizzazioni basate sul modulo mod_authn_alias, del caching per le memorie, un sistema di bilanciamento del carico, una nuova gestione delle Api, un nuovo supporto per file di dimensioni superiori a 2Gb. Inoltre, il nuovo modulo mod_proxy_ajp supporta il protocollo Apache JServ utilizzato da Tomcat in Java Servlet e JavaServer Pages. Mysql 5.0.38 Il software MySQL 5.0.38 costituisce la versione più affidabile, sicura ed aggiornata del database open source più famoso al mondo, che consente di realizzare economicamente applicazioni di E-commerce, Online Transaction Processing (OLTP) e Data Warehousing da molti terabyte. È un database completamente integrato, transaction-safe e conforme ad ACID (per realizzare applicazioni business critical affidabili e sicure), con eccezionali capacità di commit, rollback, crash recovery e locking a livello di riga. MySQL garantisce la 9 facilità d’impiego, la scalabilità e le prestazioni che hanno reso MySQL il database open source più famoso al mondo. Php 5.2.1 PHP è un linguaggio di scripting interpretato, con licenza open source, originariamente concepito per la realizzazione di pagine web dinamiche. Attualmente è utilizzato principalmente per sviluppare applicazioni web lato server ma può essere usato anche per scrivere script a linea di comando o applicazioni standalone con interfaccia grafica. La versione 5.2.1 contiene una serie di bugfix ed aggiornamenti per la sicurezza. Oltre ai bugfix sono state apportate alcune migliorie alle performance, modificato il driver di PDO per l'accesso tramite MySQL in modo che utilizzi le query bufferizzate di default ed emuli i prepared statement ove necessario ed aggiornate le estensioni zip e filter. OpenSSL 0.9.8c OpenSSL è un'implementazione open source dei protocolli SSL e TLS. Le librerie di base (scritte in linguaggio C) eseguono le funzioni crittografiche principali. Nei diversi linguaggi di programmazione sono disponibili procedure che permettono di accedere alle funzioni della libreria OpenSSL. VirtualMin 3.39 e WebMin 1.340 Virtualmin è la più diffusa gestione di sistema di hosting Open-Source virtuale del mondo progettata per rendere hosting virtuale rapido, affidabile e sicuro. Virtualmin, è anche facile installare, professionalmente supportato e in modo aggressivo mirato alla risposta a delle necessità di fornitori di web hosting. Il professionista Virtualmin aggiunge strumenti di creazione template-based website, sostegno per analytics come Google Analytics e QuantCast forniti da terze parti, installazione automatica di dozzine di applicazioni, accesso mobile completo con monitoraggio e con allarmi e molto di più. Il professionista Virtualmin è il più completo sistema di amministrazione di hosting virtuale disponibile. Webmin è uno strumento di configurazione di sistema per sistemi Unix-like. Ha un interfaccia desktop basata sul web in un ambiente indipendente, per configurare alcuni degli internals del sistema operativo. Webmin è basato in gran parte su Perl ed è in esecuzione come il proprio processo e server web. Di solito utilizza porta 10000 TCP per la comunicazione e può essere configurato per utilizzare SSL se OpenSSL è installato. Costruito intorno a moduli, che hanno un'interfaccia verso i file di configurazione e un'interfaccia verso il server webmin. Questo rende facile aggiungere le nuove funzionalità, senza troppo lavoro. E a causa della progettazione modulare di Webmin, sarebbe possibile, per chiunque è interessato, per scrivere plugins per configurazione desktop. Webmin permette anche più avanti di controllare molte macchine attraverso una singola interfaccia, o senza limitazioni login molto altri host webmin nella stessa LAN. Chi si è trovato a fornire soluzioni di hosting su piattaforma GNU/Linux, è a conoscenza del fatto di come spesso sia difficile, specie se il numero di utenti è alto, integrare i sistemi 10 di creazione e gestione dei diversi servizi necessari, dallo spazio web, alla posta elettronica fino alla configurazione dei database SQL. Esistono ottimi prodotti che permettono di fare questo, ma spesso hanno costi davvero sostenuti e funzionalità non sempre trasparenti. Esiste comunque un’alternativa a questi prodotti, completamente gratuita, si tratta di Webmin (http//:www.webmin.com), la famosa e diffusissima interfaccia per la gestione via Web dei sistemi GNU/Linux, a cui va aggiunto il modulo Virtualmin. Maggiori e più dettagliate informazioni sono reperibili seguendo il link: http://www.sistemistiindipendenti.org/pdf/virtualmin.pdf Webalizer 2.01-10 Il programma genera statistiche d'utilizzo in formato HTML consultabili mediante un qualsiasi browser. Fornisce dati annuali, mensili, giornalieri ed orari, dati d'accesso per sito, per URL, per referer, user agent e paese, ovviamente se tali informazioni sono state registrate nei file di log. Il programma presenta le seguenti caratteristiche: è scritto in C per essere maggiormente veloce e portabile; è distribuito sia in formato sorgente che binario per varie piattaforme (Linux, Windows, Mac OS X); supporta svariate lingue tra cui l'italiano; analizza log in Common Log Format e Combined Log Format (non solo); può essere personalizzato mediante l'utilizzo di un semplice file di configurazione; è possibile utilizzare più file di configurazione uno per ciascun sito; può essere utilizzato anche in presenza di un sistema di rotazione dei log; è gratuito e distribuito con licenza GNU General Public License. Proftpd 1.3.0 Abbiamo scelto questo server ftp per il compromesso tra semplicità di utilizzo e sicurezza offerta. ProFTPD è un server ftp molto performante, con obiettivo primario il tenerlo il più semplice possibile, il piu sicuro possibile e con una configurazione completa e facile, Naturalmente proftpd è usato da alcuni dei più grandi siti su internet. Ha una configurazione che è molto simile a quella di apache nella sintassi, nei moduli e per la personalizzazione. Include il supporto per server FTP virtuali, per il login di utenti anonimi e per la permission-based directory visibility. Guarddog 2.5.0 Utility per la configurazione del firewall in sistemi Unix-like. Può essere utilizzato da diversi gruppi di utenti, dagli utenti novizi e intermedi che non hanno conoscenza del networking TCP/IP e delle questioni di sicurezza a quelli più esperti che però non amano avere a che fare con criptici script di shell e con i parametri di iptables. 11 Sicurezza: Al fine di garantire la sicurezza del sistema si è configurato, tramite guarddog, il firewall iptables al fine di ridurre al minimo gli accessi al sistema lasciando aperte aperte solo le porte strettamente indispensabili ai servizi da fornire, infatti sonno aperte solo le porte 80 e 443, per essere utilizzate da http e https, la porta 21 per l’uso con ftp e la port 10000 per l’utilizzo del pannello di controllo di virtualmin. È stato inoltre impedita la risposta del server ai pacchetti ICMP al fine di ridurre le informazioni rilasciate ad eventuali attaccanti a proposito del sistema. Sempre in quest’ottica si è modificato il file di configurazione di Apache per fornire la minor quantità di informazioni nella sua signature. La modifica effettuata nel file apache2.conf per ottenere questo risultato consiste nell’inserire la seguente direttiva: ServerTokens Major Come risultato di questo commando avremo che la signature di apache sarà: Server: Apache/2 Inoltre abbiamo effetuato una modifica nel file di configurazione dell’host virtuale di informatica-granata.it al fine di trasferire tutte le connessioni al server su protocollo https. Il codice da aggiungere è il seguente: <IfModule mod_ssl.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} </IfModule> <IfModule !mod_ssl.c> order allow,deny </IfModule> Da una semplice scansione delle porte si può facilmente verificare quello che abbiamo appena detto, notiamo inoltre che anche se la porta 21 non è filtrata dal firewall, al momento no c’è nessun demone pronto a rispondere, infatti tale porta risulta closed, questo perché non ci è stata effettuata nessuna richiesta che richiedesse l’accesso ftp alla macchina in questione e pertanto al momento, pur avendolo installato, abbiamo deciso di non avviare il demone ProFtpd. 12 # nmap –T4 –A –p 1-65535 192.168.0.4 Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2007-07-16 14:14 CEST Interesting ports on informatica-granata.it (192.168.0.4): Not shown: 65532 filtered ports PORT STATE SERVICE VERSION 21/tcp closed ftp 80/tcp open http Apache httpd 2 443/tcp open ssl/http Apache httpd 2 MAC Address: 00:E0:4C:39:11:F4 (Realtek Semiconductor) Device type: firewall|general purpose Running: Checkpoint Windows NT/2K/XP, Linux 2.4.X OS details: Checkpoint SecurePlatform NG FP3, Linux 2.4.20 Nmap finished: 1 IP address (1 host up) scanned in 864.258 seconds 13 Parte quarta: Fase di tuning SERVIZI RICHIESTI Per il corretto e regolare svolgimento della nostra attività abbiamo bisogno di un certificato intestato alla nostra società per poter gestire le connessioni sicure sul nostro sito web. Inoltre avremo bisogno di certificati intestati ad ognuno dei nostri clienti per poter permettere loro connessioni sicure. Inoltre abbiamo bisogno di registrare i nomi di dominio per conto nostro e dei nostri clienti. RICHIESTE EFFETUATE Sono state effettuate richieste specifiche al NIC per avere assegnato l’indirizzo IP 192.168.0.4 ed alla Certification Authority per avere un certificato digitale riconosciuto da tutti i gruppi partecipanti alla simulazione. RICHIESTE RICEVUTE Nessuna richiesta ricevuta 14 Parte quinta: La commessa Descrizione della commessa Realizzazione del sito “www.informatica-granata.it” che implementi un sito di e-commerce di materiale informatico che si appoggia per i pagamenti ad un ufficiale pagatore realizzato dagli altri gruppi partecipanti alla simulazione. Breve descrizione dei requisiti Il sito comprende alcune pagine esplicative, un catalogo navigabile e, per gli utenti registrati, il listino prezzi, il carrello per la spesa e la possibilità di acquisto on-line, tramite il sistema implementato da “UfficialePagatore.com”. Specifiche Si richiede l'implementazione del sito Informatica Granata e piu' precisamente: 1. 2. 3. 4. 5. 6. Gestione anagrafica clienti Gestione catalogo e listino (con apposito pannello amministratori) Gestione utenti amministratori Carrello della spesa Interfaccia col sistema di pagamento U.P. Si richiede la registrazione di almeno 30 utenti ed un catalogo di almeno 20 prodotti di diversa prezzatura. Esempio di utilizzo Aquirente L’utente Francesco vuole acquistare un portatile su “www.informatica-granata.it” . Per fare questo dovrà innanzitutto registrarsi su informatica-granata inserendo Nome e Cognome Codice fiscale Indirizzo Username Password Una volta registrato potrà sfruttare lo username e la password creati per accedere al catalogo, selezionare il portatile che vuole acquistare, quindi accedere al carrello e confermare l’acquisto. A questo punto l’utente verrà rediretto verso il sito “UfficialePagatore.com” per effettuare il pagamento dello merce. Una volta ricevuta conferma dal’ufficiale pagatore dell’avvenuto pagamento il negozio metterà in spedizione la merce richiesta. Per effettuare il pagamento l’utente ha a disposizione 5 minuti. 15 Amministratore L’utente Andrea, con permessi di amministratore può accedere al pannello di amministratore dopo aver effettuato il login. Da qui può gestire l’anagrafica cliente (modificandone i dati, eliminandone alcuni, promuovendo nuovi amministratori o degradando altri amministratori al ruolo di utenti) oppure getire il catalogo, aggiungendo ad esempio prodotti o modificando le caratteristiche dei prodotti esistenti. Applicazione realizzata Homepage Figura 1 Screenshot della homepage prima di aver effettuato il login La homepage di informatica granata permette ai visitatori del sito di avere una conoscenza della nostra società. Permette inoltre di accedere al catalogo ed al carrello e di effettuare il login per gli utenti registrati o di accedere alla pagina di registrazione. 16 Figura 2 Screenshot della homepage dopo aver effettuato il login come amministratore Se si effettua il login nella barra laterale sarà possibile accedere al pannello di modifica dei dati utente dal quale un utente può modificare i propri dati. Infine se si effettua il login come amministratore apparirà anche nel footer un link al pannello di amministrazione Catalogo In questa pagina è possibile selezionare gli oggetti che si desidera acquistare e quindi passare al carrello per completare l’acquisto. Figura 3 Screenshot del catalogo 17 Carrello Da questa pagina l’utente può confermare i suoi acquisti e passare alla fase di pagamento. Figura 4 Screenshot del carrello Pannello amministratore Un utente che ha effettuato il login e a cui sono riconosciuti i permessi di amministratore può accedere a questa pagina dalla quale, tramite il pannello posto nella barra laterale sinistra, può gestire il catalogo e gli utenti del sito. Figura 5 Screenshot del pannello amministratore 18 Figura 6 Screenshot del pannello di gestione catalogo Figura 7 Screenshot del pannello di gestione utenti Suddivisione del lavoro Il sito di informatica granata nasce dalla collaborazione tra gli ISP gruppo 2 e 3, pertanto tra di noi è stato facile effettuare una prima divisione logica del lavoro, ovvero il gruppo 2 si è occupato dello sviluppo del database e delle API php per l’accesso al database, invece il gruppo 3 si è occupato dello sviluppo del sito vero e proprio. Inoltre abbiamo valutato col gruppo di Ufficiale Pagatore di suddividere anche il lavoro di sviluppo delle API php per l’implementazione del protocollo di interazione in quanto noi eravamo meglio a conoscenza di quali fossero i bisogni del negozio in merito all’interazione con queste API e potevamo inoltre in questo modo velocizzare lo sviluppo di tutta l’applicazione, pertanto noi abbiamo sviluppato la parte client delle suddette API. La suddivisione del lavoro è stata la seguente: COMPONENTE GRUPPO LAVORO SVOLTO IVO BARONE ISP gruppo 2 Progettazione e realizzazione del database DOMENICO LAURINO ISP gruppo 2 Sviluppo API database BRUNO ANDREA ISP gruppo 3 Sviluppo API protocollo lato client e integrazione del sito FRANCESCO GRANATO ISP gruppo 3 Sviluppo catalogo e carrello 19 FRANCESCO PERNA DI ISP gruppo 3 Sviluppo pannello amministratore e homepage Misure di sicurezza Quando si realizza un sito web di e-commerce è molto importante l’aspetto della sicurezza sia per evitare attacchi che causano perdite economiche al gestore del negozio, sia attacchi volti a ottenere dati dei clienti. A tal fine abbiamo messo in atto alcune misure utili a rendere più difficile la vita di un eventuale attaccante. Innanzitutto a tutti gli input del sito, sia che essi vengano da un utente comune che da un amministratore, vengono applicate le funzioni addslashes, in fase di memorizzazione nel database che fa si che quanto inserito non venga interpretato come comando sql causando una sql injection, e htmlentities prima di visualizzare una stringa presa dal database che trasforma la suddetta stringa sostituendo tutti i caratteri html con le rispettive entitites (ad es. “<” diventa “&gt;”) impedendo in questo modo gli attacchi di Cross Site Scripting. Inoltre abbiamo chiuso ogni possibile accesso dalla rete al database dell’applicazione al quale è possibile accedere solo in locale e tramite password. L’applicazione web può accedere al database in quanto il web server apache gira anch’èsso in locale. Per evitare di favorire eventuali attaccanti abbiamo modificato il file di configurazione di apache in modo che rilasciasse la minor quantità di informazioni sulla versione installata all’esterno, infatti da un semplice scanning effettuato sulla porta 80 con il software nmap si evince che apache si presenta all’esterno con la stringa “Apache 2” indicando solo genericamente che appartiene alla seconda generazione del popolare web server, invece di fornire indicazioni dettagliate sul numero di versione, sulla versione di openssl installata, sulla versione di php e di molti altri moduli di apache (come ad es. WebDAV). Tutte queste informazioni facilitano un attaccante nell’individuazione di eventuali bug nelle applicazioni installate sul server e quindi nella scelta degli script da utilizzare nel portare a termine un attacco. Una ulteriore precauzione è quella di far si che tutta l’interazione tra l’ufficiale pagatore ed il negozio avviene tramite https per garantirne una maggiore sicurezza. Abbiamo inoltre impedito l’accesso a tutte le pagine che contengono funzioni che non debbono essere accedute direttamente all’utente, senza che questo si sia loggato come amministratore aggiungendo il seguente codice php: Session_start(); if(strcmp($_SESSION['login_admini'],"")==0){ die("Devi essere un amministratore per accedere a questa pagina"); } Questo codice controlla che un utente abbia effettuato il login come amministratore , altrimenti termina l’esecuzione dello script prima che venga eseguito altro codice. Una ulteriore tipologia di attacco a cui può essere soggetto un sito web è quella degli attacchi Denial Of Service (DOS) e di Distributed Denial Of Service (DDOS) che hanno 20 come obbiettivo di saturare le risorse di un server web al fine di impedire l’accesso ai clienti del server. Uniche protezioni a questo tipo di attacchi sono quelle di ridurre le connessioni provenienti da uno stesso host (solo per attacchi di tipo DOS), il tempo che una connessione rimane aperta, o di impedire l’accesso ad un host che sta effettuando troppe connessioni strane (anche questo vale solo per gli attacchi DOS ed inoltre questo rimedio più che una prevenzione è una cura dopo che l’attacco è avvenuto) ma queste sono solo cure palliative. Soluzioni efficaci possono essere il clustering del server, che aumenta le risorse a disposizione del server, ma soprattutto luso di un sistema di proxy o di un content delivery network come ad esempio Akamai, che favoriscono lo spostamento del carico del server verso la periferia della rete, evitando il sovraccarica mento del server centrale. Queste ultime soluzioni non sono applicabili alla rete della simulazione data la sua ristrettezza, è anche vero però che in questa rete risulta, proprio per la sua ristrettezza e per la scarsa potenza dell’hardware dei computer utilizzati, la realizzazione di un forte attacco di questo tipo. Difficoltà riscontrate Durante il corso dello sviluppo della commessa abbiamo riscontrato due principali di difficoltà, la prima riguardante il database, che inizialmente era installato sulla macchina dell’ISP gruppo 2, e la seconda riguardante la fase di integrazione sia interna al gruppo, sia tra l’Ufficiale Pagatore e Informatica granata. Difficoltà con la distribuzione del carico del database All’inizio della commessa era stato deciso tra i due ISP che il gruppo 2 avrebbe mantenuto il database ed il gruppo 3 il web server con l’applicazione web. Questo però ha comportato un notevole rallentamento del sito, causando tempi di generazione delle pagine che accedevano al database prossimi ai 20 secondi. Questo era dovuto dalla necessità di utilizzare il protocollo https anche per l’accesso al database, in quanto altrimenti i dati avrebbero viaggiato in chiaro sulla rete e sarebbero potuti essere facile preda di un attaccante. Dopo molti tentativi e ricerche sui forum siamo arrivati alla conclusione che il problema fosse nelle librerie di accesso al database fornite da php e pertanto abbiamo deciso di installare anche il database sulla macchina del gruppo 3, in quanto questa ha l’hardware più performante. Difficoltà riscontrate nella fase di integrazione Avendo noi dovuto lavorare separati, per problemi logistici, in quanto siamo residenti in posti diversi e non vicini, al termine del lavoro di sviluppo delle singole componenti del sito abbiamo dovuto procedere all’integrazione delle parti, e se le difficoltà sono state minimali nell’integrazione con le API del database in quanto una firma delle funzioni ci era stata fornita fin dall’inizio dal collega Domenico Laurino (e tra l’altro le funzioni di cui avevamo bisogno erano state definite in comune) maggiori difficoltà si sono riscontrate nell’integrazione tra altre componenti di informatica granata. Successivamente ancora maggiori difficoltà si sono riscontrate nella integrazione tra informatica granata e ufficiale pagatore, in quanto, per il funzionamento stesso delle librerie curl e openssl di php su cui si basava il protocollo di interazione tra le due parti, bastava una piccola differenza tra i flag utilizzati dall’uno o dall’altro gruppo per impedirne 21 il corretto funzionamento. Inoltre il mancato funzionamento dell’interazione era dovuto anche a differenze nell’interpretazione del protocollo tra chi ha implementato la parte client del protocollo di interazione e chi ha implementato la parte server. L’unica soluzione a questo problema è stato passare alcune giornate vicino alle macchine a correggere tutti i bug riscontrati. 22 Fonti bibliografiche: 23 http://httpd.apache.org http://www.ubuntu.com http://www.mysql.com http://www.dia.unisa.it http://www.webmin.com http://www.openssl.org http://www.sistemistiindipendenti.org/pdf/virtualmin.pdf http://www.swelltech.com/support/virtual-servers/ http://www.virtualmin.com/support/documentation/virtualmin-admin-guide/index.html http://news.netcraft.org