La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Sperimentazioni di Sicurezza, A.A. 2009/2010 Apache e HTTPS Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science.

Presentazioni simili


Presentazione sul tema: "Sperimentazioni di Sicurezza, A.A. 2009/2010 Apache e HTTPS Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science."— Transcript della presentazione:

1 Sperimentazioni di Sicurezza, A.A. 2009/2010 Apache e HTTPS Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department Corso Svizzera, 185 – 10149, Torino, Italy Sperimentazioni di sicurezza A.A

2 Sperimentazioni di Sicurezza, A.A. 2009/2010 Apache HTTP server o Server web open-source e multipiattaforma o Versione 1.0 rilasciata nel 1995 A partire dal 1996 diventa il web server più popolare al mondo o Utilizzato solitamente in combinazione con PHP e MySQL

3 Sperimentazioni di Sicurezza, A.A. 2009/2010 Download e installazione o o Scaricare la versione o Ai nostri scopi è necessario anche il pacchetto OpenSSL (versione 0.9.7m), che dovete estrarre nella vostra HOME o Create una cartella di nome apache nella vostra HOME o Eseguite i passi di configure, make e make install./configure --enable-module=SO --enable-ssl --prefix=$HOME/apache --with-ssl=$HOME/openssl-0.9.7m make make install

4 Sperimentazioni di Sicurezza, A.A. 2009/2010 Librerie necessarie o Per il corretto funzionamento dello strato SSL è necessario disporre di alcune librerie o Copiare nella cartella lib i seguenti files /usr/sfw/lib/libcrypto.so /usr/sfw/lib/libssl.so o Ora è possibile avviare il server

5 Sperimentazioni di Sicurezza, A.A. 2009/2010 Avvio del demone http o Il file apache/bin/apachectl serve per avviare o interrompere il demone di Apache (httpd) apachectl start / restart apachectl stop o Inizialmente non si riuscirà a lanciare il comando, perché non si dispone dei permessi per avviare un demone in ascolto sulla porta di default per http (80) Modificare il file di configurazione conf/httpd.conf Listen 8080 ServerName o Il comando ps auxw | grep httpd visualizza tutti i processi relativi al demone http o Per controllare la correttezza della sintassi dei file di configurazione, eseguire httpd -t

6 Sperimentazioni di Sicurezza, A.A. 2009/2010 Una prima pagina web o Nella directory htdocs risiedono i file html che vogliamo rendere pubblici o Editare il file htdocs/index.html a piacimento o Da browser, accedere allindirizzo

7 Sperimentazioni di Sicurezza, A.A. 2009/2010 File httpd.conf o conf/httpd.conf è il file di configurazione principale di Apache Contiene un insieme di direttive in plain text Le modifiche al file vengono percepite solo al riavvio del server Il carattere # è usato per commentare o È possibile specificare delle direttive allinterno di specifici blocchi,,,,,,, … direttive È anche possibile annidare i blocchi di direttive o Le direttive top level si riferiscono allintero server

8 Sperimentazioni di Sicurezza, A.A. 2009/2010 File httpd.conf: direttive globali o ServerRoot path La directory base di Apache o Listen port La porta su cui il demone httpd è in ascolto o ServerAdmin address Lindirizzo dellamministratore del server o ServerName URL Il nome di dominio del server o Timeout n Tempo di attesa massimo per le richieste (POST, GET) in secondi o DefaultType MIMEtype Il tipo MIME di default col quale il server fornisce i suoi file (specificato nel Content-type della HTTP response)

9 Sperimentazioni di Sicurezza, A.A. 2009/2010 Accesso autenticato in chiaro: htpasswd o Creare un sottoalbero di htdocs che sia accessibile solo da un ristretto numero di utenti, autenticati tramite id-password o È necessario creare un file di password, in una directory non accessibile dallesterno (e.g. apache/passwd) o La creazione viene effettuata tramite il comando htpasswd htpasswd [options] password_file_path username Options: -c : crea un nuovo file -m, -s : cifra tramite MD5 o SHA1 -p : salva la password in plaintext -D : cancella lutente specificato … htpasswd -c /usr/…/apache/passwd/password SpikeSpiegel

10 Sperimentazioni di Sicurezza, A.A. 2009/2010 Accesso autenticato in chiaro: httpd.conf o Per specificare quali directory richiedono lautenticazione via password è necessario aggiungere delle direttive in httpd.conf AuthType Basic AuthName Bebop access AuthBasicProvider file AuthUserFile /usr/local/apache/passwd/passwords Require user SpikeSpiegel le password sono memorizzate in un file (default) utente autorizzato path al file delle password autenticazione via password realm

11 Sperimentazioni di Sicurezza, A.A. 2009/2010 Accesso autenticato in chiaro: group file o Per garantire laccesso ad un gruppo di utenti si può specificare Require valid-user, oppure creare un file in cui si specificano le identità dei membri autorizzati. Semplice sintassi: GroupName: userName1 userName2 … AuthType Basic AuthName Bebop access AuthBasicProvider file AuthUserFile /usr/local/apache/passwd/passwords AuthGroupFile /usr/local/apache/passwd/groups Require group BebopCrew BebopCrew: SpikeSpiegel JetBlack FayeValentine

12 Sperimentazioni di Sicurezza, A.A. 2009/2010 Restrizione degli accessi: httpd.conf o Possono essere specificate differenti limitazioni allaccesso Le clausole Order e Satisfy rendono flessibile la loro combinazione AuthType Basic AuthName Limited access AuthBasicProvider file AuthUserFile /usr/local/apache/passwd/passwords Require valid-user Order allow, deny Allow from Deny from Satisfy Any

13 Sperimentazioni di Sicurezza, A.A. 2009/2010 Configurazione distribuita:.htaccess (1) o Tramite httpd.conf si gestisce la configurazione delle direttive in modo centralizzato (i.e.: in un unico file) o Alternativamente, è possibile specificare le medesime direttive in diversi file.htaccess (file di configurazione distribuita) posizionati nelle directory di interesse Le direttive sono valide per tutto il sottoalbero a partire dalla directory in cui.htaccess è creato sovrascrive o specifica meglio le direttive di httpd.conf o La configurazione distribuita dovrebbe essere usata solo se non si ha accesso al file di configurazione principale Problemi di efficienza (ricerca dei file.htaccess) Problemi di sicurezza (si delega agli utenti la responsabilità di configurazione)

14 Sperimentazioni di Sicurezza, A.A. 2009/2010 Configurazione distribuita:.htaccess (2) o Per permettere luso dei file di configurazione locale bisogna specificare la direttiva AllowOverride o Per conoscere i possibili valori di directive-type, consultare il manuale di Apache Ad esempio le opzioni di autenticazione possono essere specificate: AllowOverride AuthConfig AllowOverride All / None / directive_type

15 Sperimentazioni di Sicurezza, A.A. 2009/2010 File httpd.conf: root directory o È importante specificare delle direttive molto restrittive per la directory root o Permessi di accesso per quei sottoalberi del file system che si desidera rendere accessibili saranno specificati da successivi blocchi Options FollowSymLinks AllowOverride None Order deny, allow Deny from all Order allow,deny Deny from all Satisfy All

16 Sperimentazioni di Sicurezza, A.A. 2009/2010 Virtual Hosting o Può essere utile utilizzare una unica macchina fisica per ospitare più servizi web. Questa tecnica viene denominata Virtual Hosting Name-based: differenti siti web disponibili presso un unico indirizzo IP Il client invia una richiesta HTTP specificando il nome di dominio desiderato; Apache si occupa di far pervenire la richiesta al servizio giusto IP-based: uno stesso sito è raggiungibile su diversi indirizzi IP Utilizzato per server multi-homed, con un indirizzo IP diverso su ogni interfaccia o Vedremo i Virtual Host name-based

17 Sperimentazioni di Sicurezza, A.A. 2009/2010 Name-based Virtual Host o Nel file httpd.conf, decommentare o Creare due cartelle (loopback e localhost) in htdocs o Nel file conf/extra/httpd-vhosts.conf creare due VirtualHost Include conf/extra/httpd-vhosts.conf ServerAdmin DocumentRoot …/htdocs/localhost ServerName localhost ServerAlias … ErrorLog localhost-error_log CustomLog localhost-access_log common (Lo stesso per loopback)

18 Sperimentazioni di Sicurezza, A.A. 2009/2010 Accesso ai Virtual Host o Da browser, digitare o Appariranno le due diverse pagine che sono state definite nelle directory localhost e loopback

19 Sperimentazioni di Sicurezza, A.A. 2009/2010 Autenticazione sicura con HTTPS o Le password dellautenticazione Basic sono inviate in chiaro! o Una soluzione è rappresentata dalluso di HTTPS, ossia il protocollo HTTP reso sicuro tramite SSL

20 Sperimentazioni di Sicurezza, A.A. 2009/2010 Abilitazione di SSL: creazione dei certificati o Con OpenSSL, creare una coppia di chiavi RSA ed un certificato autofirmato di una CA (ca-bundle.crt) o Creare una coppia di chiavi RSA per il server. Rinominare la chiave segreta come server.key o Con la chiave della CA, creare un certificato per il web server (server.crt)

21 Sperimentazioni di Sicurezza, A.A. 2009/2010 Richiami OpenSSL: generazione certificati o Per creare il certificato autofirmato della CA o Per creare il certificato del server openssl genrsa –out CAkey.pem 2048 openssl rsa –pubout –in CAkey.pem –out CApub.pem openssl req –config openssl.cnf –key CAkey.pem –new –x509 –days 365 –out CAreq.pem openssl genrsa –out UsrKey.pem 2048 openssl rsa –pubout –in UsrKey.pem –out UsrPub.pem openssl req –config openssl.cnf –key UsrKey.pem –new –out UsrReq.pem openssl x509 -days 365 -CA CAreq.pem -CAkey CAkey.pem -CAcreateserial -req -in UsrReq.pem -out UsrCert.pem

22 Sperimentazioni di Sicurezza, A.A. 2009/2010 Abilitazione di SSL: modifiche ad httpd.conf o Le seguenti righe in httpd.conf devono essere decommentate o Commentare anche la riga: Listen 8080 È una necessità particolare in questo laboratorio… Include conf/extra/httpd-ssl.conf SSLRandomSeed startup builtin SSLRandomSeed connect builtin

23 Sperimentazioni di Sicurezza, A.A. 2009/2010 Abilitazione di SSL: impostazione del VirtualHost o Posizionare server.key e servert.crt in apache/conf o Posizionare ca-bundle.crt in una nuova directory apache/conf/ssl.crt o Modificare il file conf/extra/httpd-ssl.conf Listen 8443 … … ServerName localhost:8443 DocumentRoot …/apache/htdocs/ssl SSLEngine on SSLCertificateFile …/apache/conf/server.crt SSLCertificateKeyFile …/apache/conf/server.key SSLCACertificateFile …/apache/conf/ssl.crt/ca-bundle.crt …

24 Sperimentazioni di Sicurezza, A.A. 2009/2010 Connessione tramite HTTPS o Con un browser, accedere a https://localhost:8443 o Verrà richiesto di dare fiducia al certificato della CA

25 Sperimentazioni di Sicurezza, A.A. 2009/2010 Common name mismatch o Nel caso in cui il nome di dominio dellURL richiesto dal browser e il common name del certificato del server non corrispondano, il browser mostra un disclaimer o Provate, ad esempio, ad accedere al servizio specificando lIP della macchina e non localhost

26 Sperimentazioni di Sicurezza, A.A. 2008/2009 Successo! o Se tutti i passi sono stati eseguiti correttamente il browser dovrebbe segnalare che la connessione è stata stabilita in modo protetto Sperimentazioni di Sicurezza, A.A. 2008/2009

27 Sperimentazioni di Sicurezza, A.A. 2009/2010 Buone proprietà di HTTPS o Luso di HTTP su SSL garantisce diverse buone proprietà Autenticazione del server Scambio di una chiave di sessione per cifrare flusso di dati (Autenticazione del client) Se il client è in possesso di un certificato di una sua chiave pubblica è possibile inviarlo al server in modo che la comunicazione sia two-way authenticated o La possibilità dellasimmetricità del protocollo di autenticazione rende questo schema molto utile in servizi reali, dove lutente vuole avere assicurazione sullidentità del server ed inviare i propri dati in modo sicuro, ma senza dover possedere un certificato E.g.: servizi bancari on-line

28 Sperimentazioni di Sicurezza, A.A. 2009/2010 Installazione PHP o Linguaggio di scripting server-side, necessario se si vuole sviluppare un servizio web non banale o Scaricare la versione (www.php.net) o Scaricare la libreria LibXML (ftp://xmlsoft.org/libxml2) o Estrarre entrambi i pacchetti nella home o Eseguire, per PHP, i seguenti comandi./configure –prefix=$HOME/php –-with-apxs2=$HOME/apache/bin/apxs --with-libxml-dir=$HOME/libxml2… make

29 Sperimentazioni di Sicurezza, A.A. 2009/2010 Installazione PHP: modifica configurazione Apache o Nel file httpd.conf, aggiungere o Copiare il file php-5.1.6/libs/libphp5.so in apache/modules LoadModule php5_module modules/libphp5.so SetOutputFilter PHP SetInputFilter PHP LimitRequestBody AddType application/x-httpd-php.php AddType application/x-httpd-php-source.phps DirectoryIndex index.php

30 Sperimentazioni di Sicurezza, A.A. 2009/2010 Una pagina PHP di test o Creare una pagina index.php accessibile via HTTP

31 Sperimentazioni di Sicurezza, A.A. 2009/2010 Problemi di installazione? o Con la versione di Solaris che cè in laboratorio si possono verificare alcuni problemi di configurazione dovuti alla incompatibilità di alcune particolari versioni dei diversi moduli o Seguire alla lettera le istruzioni riportate in queste slides Se nonostante ciò non riuscite ancora a risolvere i problemi, provate uno switch di macchina (a volte funziona!) o Alternativamente…

32 Sperimentazioni di Sicurezza, A.A. 2009/2010 Piattaforme alternative o Il pacchetto WAMP fornisce la possibilità di installare facilmente tutte le componenti per lo sviluppo di un web-service sicuro in ambiente Windows o Con Ubuntu, Linux, Windows e Mac potete provare XAMPP

33 Sperimentazioni di Sicurezza, A.A. 2009/2010 Apache e HTTPS Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department Corso Svizzera, 185 – 10149, Torino, Italy Sperimentazioni di sicurezza A.A Grazie per lattenzione!

34 Sperimentazioni di Sicurezza, A.A. 2009/2010 © 2009 by Luca Maria Aiello. Permission to make digital or hard copies of part or all of this material is currently granted without fee provided that copies are made only for personal or classroom use, are not distributed for profit or commercial advantage, and that new copies bear this notice and the full citation.


Scaricare ppt "Sperimentazioni di Sicurezza, A.A. 2009/2010 Apache e HTTPS Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science."

Presentazioni simili


Annunci Google