Download - APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

Transcript
Page 1: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

1

APACHEAPACHE--SSLSSL

1

Università degli Studi di SalernoFacoltà di Scienza MM. FF. NN.Corso di Laurea in Informatica, AA. 2001-2002

A cura di

Andrea Del Papa, Antonio Esposito, Cristian Gagliardi,

Gerardo Morrongiello, Luigi Calaselice.

2

Panoramica su ApachePanoramica su Apache

3

PremessaPremessa

Apache è un server HTTP freeware(completo di sorgenti C), sviluppato da un certo numero di programmatori.

Poiché era un insieme di patches sul server NCSA è stato chiamato un patchyserver, da cui il nome Apache Server.

La prima versione, basata su server NCSA, è stata sviluppata nel 1995.

4

Cos’è ApacheCos’è Apache

Un Web Server per il protocollo HTTP

Affidabile, compatto e funzionale

Progettato per essere eseguito come processo standalone

5

Strumenti di ApacheStrumenti di Apache

Apache mette a disposizione una serie di strumenti aggiuntivi:

Sistemi di controllo d'accesso a piSistemi di controllo d'accesso a piùù livellilivelli

Generazione di statistiche variamente strutturateGenerazione di statistiche variamente strutturate

PossibilitPossibilitàà di di ““integrareintegrare”” ll’’HTML in modo HTML in modo dinamico(Serverdinamico(Server--Side Include)Side Include)

6

IntegrazioneIntegrazione

Grazie alla struttura modulare e alle Apache API possiamo integrare Apache con vari applicativi:

Uno dei più interessanti è PHP

Linguaggio di programmazione che consente di integrare HTML ed SQL

linguaggio per l'interrogazione di sistemi

database quali Oracle.

Page 2: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

2

7

Funzionalità Funzionalità ee--commercecommerce

Content Negotiation

Language Negotiation

Aliasing & Redirect

Virtual Host Support & Directory Name Interpolation

Cookies

Message passing (GET,POS) Cookies

Algoritmo per scelta del filepiù appropriato da restituire

ad una richiesta del navigatore

Permette di selezionare la lingua del documento in base

alla configurazione del browser-utente

Permette di dare dei nomi mnemonici alle proprie risorse e implementa redirezioni multiple

tramite scrittura dell’url

Utile per gli ISP per ospitare siti diversi sullo stesso server,

fornisce sistema per gestione di un sito e-commerce

Variabili impostate dal server per gestire il customer-trackingo la gestione di una “sessione”

Consente all'utente di effettuare prenotazioni e pagamenti

online, accesso ad account, dischi e database remoti, ecc.

8

Panoramica su SSLPanoramica su SSL

9

IntroduzioneIntroduzione

SSL (Secure Socket Layer protocol) è un protocollo aperto e non proprietario.

Nato al fine di garantire la privacy delle comunicazioni su Internet.

Permette alle applicazioni client/server di comunicare in modo da prevenire le intrusioni, le manomissioni e le falsificazioni dei messaggi.

10

Funzionalità fondamentaliFunzionalità fondamentali

Sicurezza del Collegamento

Autenticazione

Affidabilità

Il livello di trasporto include un controllo

sull'integrità del messaggio basato su un apposito

MAC che utilizza funzioni hash sicure (es. SHA,

MD5)

Nelle connessioni può essere eseguita usando la crittografia a chiave pubblica (per es. RSA,

DSS ecc. )

I dati vengono protetti utilizzando algoritmi di

crittografia a chiave simmetrica (ad es. DES, RC4,)

11

Composizione del protocolloComposizione del protocollo

Interfacciato su di un protocollo di trasporto affidabile come il TCP.

E’ usato per l'incapsulamento dei dati provenienti dai protocolli

superiori.

Permette al server ed al client di autenticarsi a

vicenda e di negoziare un algoritmo di crittografia e

le relative chiavi.

12

Protocollo SSL Protocollo SSL HandshakeHandshake -- 11

L’handshake consente

Al server di autenticarsi al client usando una tecnica a chiave pubblica.

Al client ed al server di cooperare per la creazione delle chiavi simmetriche.

Al client di autenticarsi al server.

Page 3: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

3

13

Protocollo SSL Protocollo SSL HandshakeHandshake -- 22

Avvio di una connessione

Client Server

Nel caso sia il client ad avviare la connessione

“Client Hello”

“Server Hello”

14

Protocollo SSL Protocollo SSL HandshakeHandshake -- 33

Avvio di una connessione

Client Server

Nel caso sia il server ad avviare la connessione

“Client Hello”

“Hello Request”

“Server Hello”

15

Protocollo SSL Protocollo SSL HandshakeHandshake -- 44

Autenticazione

Client Server

Una volta avviata la fase di HELLO avviene l’autenticazione

“Request Certificate”

“Request Certificate”

“VerifyCertificate”

16

Protocollo SSL Protocollo SSL HandshakeHandshake -- 55

Generazione delle chiavi

Client Server

Avvenuta l’autenticazione si generano le chiavi

“Client key exchange”

“Server key exchange”

“Server Hello done”

17

Protocollo SSL Protocollo SSL HandshakeHandshake -- 66

Correttezza dati e Fine

Client Server

Si passa al controllo della correttezza dei dati ricevuti

“Change CipherSpec”

“Change CipherSpec”

“Finished”“Finished”

Fine fase di Fine fase di HandShakeHandShake

18

Installazione di ApacheInstallazione di Apache

Page 4: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

4

• Installazione possibile su qualsiasi piattaforma Linux, Unix e NT

• E’ necessario essere amministratori delsistema per poterlo installare

• Nel caso sia già presente Apache occorredisinstallarlo

19

Requisiti RichiestiRequisiti Richiesti

• Webserver Apache versione 1.3.24 o superiore

• OpenSSL insieme di librerie che implementanoSSL versione 0.9.6d

• Apache-SSL patch per rendere sicuro ilwebserver versione 1.48

20

Software Necessario

Passi da seguire per l’installazione:

1. Scaricare il software necessario da internet, cercando la versione più aggiornata dei vari pacchetti in modo da evitare di installare versioni su cui sono stati scoperti bug

2. Scompattare i vari pacchetti

3. Procedere all’installazione

21

InstallazioneInstallazione

Ø tar xvzf openssl-0.9.6.tar.gz

Ø cd openssl-0.9.6/

Ø ./config

Ømake

Ømake test

Ømake install

22

Installazione OpenSSLInstallazione OpenSSL

Dopo aver scaricato il software bisogna seguire i seguenti comandi:

Scompatta la libreria OpenSSL

Configura per la specifica

Piattaforma

Compila e Installa

23

OpenSSL

• Funzionalità offerte dalla libreria OpenSSL

üCreazione di parametri per la generazione delle chiavi DSA, DH e DSAüCreazione di certificati X.509, CSR (Certificate Signing

Requests) e CRL (Certificate Revocation Lists)üCalcolo dell’ hash di messaggiüCifratura e DecifraturaüSSL e TSL client/server testüGestione della firma e cifratura di e-mail

Ø tar xvzf apache_1.3.24.tar.gz

Ø cd apache_1.3.24

Ø tar xvzf ../apache_1.3.24+ssl_1.48.tar.gz

Ø ./FixPatch

Ø ./configure --prefix=DIR*

24

Installazione Installazione ApacheApache--SSLSSL -- 11

* è la directory in cui vogliamo installare Apache-SSL

Scompatta il Server Apache

Scompatta la patchApache-SSL

Applica la patch

Configura la directory di installazione

Page 5: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

5

Ø ./configure --prefix=DIR* --enable-module=rewrite

--enable-shared=rewrite

Ømake

Ømake install

Ø ln -s DIR*/conf/httpsd.conf DIR*/conf/httpd.conf

25

Installazione Installazione ApacheApache--SSLSSL -- 22

* è la directory in cui vogliamo installare Apache-SSL

Abilita il modulo rewrite

Compila e Installa

26

Installazione Installazione ApacheApache--SSLSSL -- 33

Se l’installazione è andata a buon fine comparirà la seguente schermata.

27

Certificato SSL Certificato SSL -- 11

I certificati digitali sono un meccanismo avanzato per la distribuzione delle chiavi publiche.

Lo standard che definisce il formato del certificato è X.509 v3.

Una volta creato il certificato bisogna che questo sia firmato da un’autorità di certificazione (es. Verisign).

Passi da seguire per ottenere un certificato sono:

1) Crearsi, con l'ausilio di qualche toolkit (per esempio OpenSSL) una coppia di chiavi

2) Preparare una CSR (Certificate SigningRequest) ovvero una richiesta di firma di un certificato

3) Inviare alla CA, ad esempio via e-mail, la CSR

28

Certificato SSL Certificato SSL -- 22

Ø openssl genrsa -des -out webserver.ssl.key 1024

29

Certificato Certificato SelfSignedSelfSigned -- 11

Genera una chiave privata con l’algoritmo RSA

Cifra la chiava con l’algoritmo DES

Numero di bit della chiave

Ø openssl req -new -key webserver.ssl.key -out webserver.ssl.csr

Crea un nuova CSRSpecifica la chiave privata per cui è stata creata la CSR

Generazione della chiave e del certificato per l’autorità di certificazione di prova “NostraCA”

30

Certificato Certificato SelfSignedSelfSigned -- 22

Ø openssl req -new -x509 -key NostraCA.ca.key-out NostraCA.ca.cert

Crea un certificato di tipo self -signedinvece che una CSR

Øopenssl genrsa -des -out NostraCA.ca.key 2048

Chiave di 2048 bit

Page 6: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

6

Eseguiamo la firma del certificato del webserver

31

Certificato Certificato SelfSignedSelfSigned -- 33

Øopenssl ca -keyfile NostraCA.ca.key -cert NostraCA.ca.cert -in webserver.ssl.csr -out webserver.ssl.cert

Usata per la firma di una CSR

Chiave privata con la quale firmare

Certificato della CA

CSR da firmare Certificato del WebServer

32

Configurazione di ApacheConfigurazione di Apache

33

Il file Il file httpsd.confhttpsd.conf -- 11

•La configurazione di Apache avviene attraversol’aggiunta di direttive di configurazione al file di testo “httpsd.conf”

•Il file si trova nella directory “DIR/conf”

•Bisogna inserire una sola direttiva per ogni riga

•Per facilitare la procedura di configurazione è possibile sostituire il file “httpsd.conf” di default creato da apachecon quello di esempio, usato da noi per il progetto : httpsd.conf e adattarlo alle proprie esigenze

34

Configurazione del Configurazione del WebserverWebserver : : ipip

•In questa presentazione faremo riferimento all’indirizzo “127.0.0.2” come indirizzo ip del sito

•“127.0.0.2” è un indirizzo di loopback, può essere usato solo per testare il sito su una macchina locale.

•Per pubblicare il sito su internet,bisogna sostituirlo con il reale indirizzo del sito

35

Le direttive di configurazioneLe direttive di configurazione

•La lista di tutte le direttive che si possono utilizzare è presente al seguente indirizzo : http://httpd.apache.org/docs/mod/directives.html

•In questa presentazione illustreremo le più importanti

•Vedremo anche le direttive di configurazione specifiche per SSL, la lista completa si trova all’indirizzo : http://www.apache-ssl.org/docs.html

36

Schema del file Schema del file httpsd.confhttpsd.conf

Httpsd.conf

Configurazionegenerale

Configurazionedel server

Direttive SSL Virtual Hosts

Port ServerName SSLCACertificatePath NameVirtualHost

Listen DocumentRoot SSLCACertificateFile

SSLCertificatePath

SSLCertificateFile

SSLCertificateKeyFile

SSLVerifyClient

SSLDisable

<VirtualHost …>…..

</VirtualHost>

User.Group

Page 7: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

7

37

Direttive di Apache : “Direttive di Apache : “PortPort” e “” e “ListenListen””

•Le direttive “Port” e “Listen” indicano ad Apache gli indirizzi ip e le porte, su cui deve accettare le connessioni da parte dei client

•La direttiva “Port”, serve a definire una porta diversa dalla porta “80” che è quella di default per comunicazioni http

•La direttiva “Listen”, indica ad apache un indirizzo ip e una porta su cui accettare le connessioni.

38

Direttive di Apache : Uso di “Direttive di Apache : Uso di “PortPort””

•La sintassi della direttiva Port è :

Port #

•Nel nostro caso inseriamo la riga Port 443

•Così facendo, definiamo la porta 443, che è la porta standard per le comunicazioni con SSL

Dove al posto di #,inseriamo il numero di porta che

vogliamo definire.

39

Direttive di Apache : Uso di “Direttive di Apache : Uso di “ListenListen””

•La sintassi della direttiva Listen è :

Listen ip:porta

•Il valore porta può contenere solo i valori definiti tramite la direttiva Port, e la porta “80”

•Nel nostro caso, aggiungiamo le righe : Listen 127.0.0.2:80 e Listen 127.0.0.2:443

Al posto di ip, inseriamol’indirizzo ip del sito

Al posto di porta , inseriamo la porta sulla quale vogliamoaccettare le connessioni

40

Direttive di Apache : “Direttive di Apache : “ServerNameServerName””

•La direttiva “ServerName” specifica il DNS del sito

•Se il sito non possiede un valido DNS, può essereutilizzato il suo indirizzo ip

•Se si utilizza il sito solo su una macchina locale, si può utilizzare l’indirizzo di loopback o il DNS locale che nella maggior parte dei casi è “localhost” o “linux”

41

Direttive di Apache : Uso di “Direttive di Apache : Uso di “ServerNameServerName””

•La sintassi della direttiva ServerName è :

ServerName DNS

•Nel nostro caso, abbiamo aggiunto la riga : ServerName Linux

Dove al posto di DNS inseriamo il DNS del sito.

42

Direttive di Apache : “Direttive di Apache : “DocumentRootDocumentRoot” ”

•La direttiva “DocumentRoot” indica la directoryche contiene le pagine del sito.

•Tutte le richieste dei client verranno evase a partire dalla directory specificata da questa direttiva

Page 8: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

8

43

Direttive di Apache : Uso di “Direttive di Apache : Uso di “DocumentRootDocumentRoot””

•La sintassi di “DocumentRoot” è :

DocumentRoot “directory”

•Nel nostro caso abbiamo aggiunto la rigaDocumentRoot “DIR/htdocs”

Dove al posto di directory, specifichiamola directory che contiene le pagine del sito.

44

Direttive di Apache : “Direttive di Apache : “UserUser” e “” e “GroupGroup””

•Le direttive User e Group indicano rispettivamente, il nome utente e il gruppo con cui si collegano i client

•E’ evidente che deve essere specificato un utente che ha permessi di accesso limitati

45

Direttive di Apache : Uso di “Direttive di Apache : Uso di “UserUser” e “” e “GroupGroup””

•La sintassi delle due direttive è : User utente

Group gruppo

Per un corretto funzionamento del Webserver, l’utente e il gruppo specificati devono essere presenti nel sistema;

Nel nostro caso, aggiungiamo le righe :User nobody e Group nogroup

46

Direttive di Apache : I “Direttive di Apache : I “virtualvirtual hostshosts””

•I “virtual hosts” sono un aspetto importante per il funzionamento del nostro sito

•Vengono utilizzati per mantenere più domini sullo stesso server

•Nel nostro caso ne abbiamo due, quello sicuro e quello non sicuro.

47

Direttive di Apache : I “Direttive di Apache : I “virtualvirtual hostshosts””

•Per aggiungere dei “virtual host” al nostro server e configurarli, si usano le direttive

NameVirtualHost <VirtualHost …>…….</VirtualHost>

Con NameVirtualHost siDefiniscono i “virtual host”

Con questa direttiva possiamoConfigurare i singoli “ virtual host”

48

Direttive di Apache : “Direttive di Apache : “NameVirtualHostNameVirtualHost””

•Con la direttiva NameVirtualHost, possiamo aggiungereun “virtual host”

•La sintassi è : NameVirtualHost host:porta

Dove al posto di host inseriamo il DNS del sito, se ne possiede uno, altrimenti inseriamo il suo indirizzo ip. Al posto di porta, inseriamo la porta sulla quale si devemettere in “ascolto” il “virtual host”.

•Nel nostro caso abbiamo aggiuntoNameVirtualHost 127.0.0.2:80NameVirtualHost 127.0.0.2:443

Page 9: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

9

49

Direttive di Apache : “<Direttive di Apache : “<VirtualHostVirtualHost …>”…>”

•Una volta aggiunti i “virtual host” che ci servono, passiamoalla loro configurazione

•La configurazione viene effettuata per ogni “virtual host” e ognuna è indipendente dalle altre

•Per ogni “virtual host” da configurare, aggiungiamo le direttive di configurazione all’interno dei tag

<VirtualHost host:porta>…..…..</VirtualHost>

All’interno di questi tag possiamo Inserire qualsiasi direttiva di configurazione sia di Apache chedi SSL

50

Direttive di Apache : “<Direttive di Apache : “<VirtualHostVirtualHost …>”…>”

<VirtualHost host:porta>…..…..</VirtualHost>

•Ogni direttiva inserita, si riferirà solo all’host che stiamo configurando.

•E’ importante inserire la direttiva SSLDisable all’interno dellaconfigurazione dell’host non sicuro

All’interno di questi tag possiamo Inserire qualsiasi direttiva di configurazione sia di Apache chedi SSL

51

Direttive SSLDirettive SSL

• E’ la lista di tutte le direttive SSL

• Quelle sottolineate in rosso sonole più importanti

• Vediamole in dettaglio

52

Direttive SSL: Direttive SSL: SSLCACertificatePathSSLCACertificatePath e e SSLCACertificateFileSSLCACertificateFile

•Queste due direttive servono per specificare la posizione e il nome del certificato dell’autorità che ha firmato il certificato del Webserver, nel nostrocaso si tratta dell’autorità di prova.

•La sintassi è :

SSLCACertificatePath directorySSLCACertificateFile cert

Dove directory e cert indicano rispettivamente lacartella contenente il certificato e il certificato veroe proprio.

53

Direttive SSL: Direttive SSL: SSLCertificateFileSSLCertificateFile e e SSLCertificateKeyFileSSLCertificateKeyFile

•Queste due direttive servono a localizzare il certificatoe il file che contiene la chiave privata del Webserver

•La sintassi è simile alle due direttive della slideprecedente:

SSLCertificateFile certSSLCertificateFile keyfile

Dove cert e keyfile indicano il file del certificato e quello della chiave

54

Direttive SSL : Direttive SSL : SSLVerifyClientSSLVerifyClient -- 11

•Questa direttiva serve a specificare le verifiche che il Webserver deve effettuare sui client prima di accettarela connessione.

•La sintassi è : SSLVerifyClient #

•Il tipo di verifica da effettuare è specificato da un numeroda 0 a 3 che andiamo a sostituire a #

Page 10: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

10

55

Direttive SSL : Direttive SSL : SSLVerifyClientSSLVerifyClient -- 22

• 0 – Non è richiesto che il Client abbia un certificatovalido

• 1 – Il Client può scegliere se esibire o meno uncertificato valido

• 2 – Il Client deve avere un certificato valido

• 3 - Il Client può presentare un certificato valido ma nonè richiesto che questo sia firmato da un’autorità di certificazione valida

56

Direttive SSL : Direttive SSL : SSLVerifyDepthSSLVerifyDepth e e SSLDisableSSLDisable

•La direttiva SSLVerifyDepth serve a specificare diquanti livelli si deve salire nella verifica deicertificati, nell’albero di certificazione

•La sintassi è : SSLVerifyDepth #

Dove al posto di #, indichiamo il numero dei livelli

•La direttiva SSLDisable non ha opzioni è serve adisabilitare il protocollo SSL. Viene usata all’internodella configurazione del “virtual host” non sicuro

57

Avviare ApacheAvviare Apache

•Una volta configurato, Apache è pronto per essereeseguito la prima volta

•Per fare ciò, ci spostiamo nella directory DIR/bin/ edeseguiamo il comando ./httpsdctl start

•Per terminare l’esecuzione di Apache, dalla directoryDIR/bin/ digitiamo ./httpsdctl stop

•Per effettuare un riavvio del Webserver, per esempiodopo la modifica del file di configurazione, digitiamo./httpsdctl restart

58

Il sitoIl sito

59

PresentazionePresentazione

Caratteristiche principali

- Transazioni sicure durante l’acquisto

- Gestione Registro Clienti

- Gestione Carrello Virtuale per ogni utente connesso

- Gestione Listino Prezzi diviso per categoria di prodotto

- Interfaccia grafica scalabile e leggera

- Compatibile con qualunque browser per Internet

Idea Principale:Idea Principale:

-- Registrazione nuovo utente.Registrazione nuovo utente.

-- Accesso all’area riservata ai clienti tramite utente e passwordAccesso all’area riservata ai clienti tramite utente e password..

-- Selezione dei prodotti da un listino.Selezione dei prodotti da un listino.

-- Invio dei dati del mezzo di pagamento in maniera sicura Invio dei dati del mezzo di pagamento in maniera sicura

-- Acquisto dei prodotti selezionati.Acquisto dei prodotti selezionati.

-- Ricezione del preventivo.Ricezione del preventivo.

60

FunzionalitàFunzionalità

Page 11: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

11

Per installare il sito è necessario essere amministratori del sistema.

Il sito è composto da un pacchetto di file compressi ed è già configurato per essere eseguito da un host chiamato “ linux”.

Impostazione del nome dell’host:

- Aprire il file etc/hosts.

- Inserire la riga 127.0.0.2 linux.

Creazione della directory del sito:

- Spostarsi in DIR/httpsd/htdocs.

- Eseguire mkdir eurostore.

61

Installazione e Configurazione Installazione e Configurazione -- 11

Impostazione dei permessi:

- Dare i permessi di scrittura/lettura/esecuzione alla directory digitando chmod 777.

- Spostarsi all’interno della directory cd eurostore.

Copia dei file del sito:

- Montare il cd con mount /cdrom.

- Copia dei file nella directory del sito con cp /cdrom/eurostore/es.zip ./

- Scompattare i file digitando unzipes.zip *

- Smontare il cdrom con umount /cdrom

62

Installazione e Configurazione Installazione e Configurazione -- 22

Impostazione dei permessi ai file .cgi, .pm e al contatore dei numeri seriali:

- chmod 755 *.cgi- chmod 755 *.pm- chmod 666 seriale.dat

E’ necessario modificare il file di configurazione httpsd.conf per abilitare i permessi aggiungendo le seguenti righe:

<Directory “/usr/local/httpsd/htdocs/eurostore”>Options +ExecCGI</Directory>

Per completare l’installazione è necessario riavviare il web server.

63

Configurazione del sitoConfigurazione del sito

Per accedere alle funzionalità del sito, occorre aprire un browser (es. NetscapeCommunicator, …)

Digitare come URL:

http://linux/eurostore

E’ consigliabile nominare subito un operatore di sistema il quale sarà l’unico che potrà gestire i preventivi.

64

FunzionamentoFunzionamento

65

Presentazione del sitoPresentazione del sito

Nella pagina principale sono presenti:

Una barra di comandi con i link alle pagine del sito liberamente visitabili.

Un pulsante per registrarsi

Una formper l’inserimento della UserIDe della Password per i clienti registrati.

E’ necessario nominare un’ operatore di sistema per la gestione dei preventivi. Tale operatore deve registrarsi seguendo la seguente procedure:

1. Aprire la pagina principale e cliccare sul pulsante .

2. Nel campo Nome inserire il testo “ registrazione operatore” .

3. Nel campo User ID inserire il testo “sysop” .4. Nel campo Password inserire una password alfanumerica di almeno 6

caratteri.

5. Inviare il modulo ed attendere la connessione.

66

Registrazione dell’operatoreRegistrazione dell’operatore

Page 12: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

12

67

Registrazione nuovo utenteRegistrazione nuovo utenteCliccando su si può accedere alla registrazione di un nuovo utente. Una volta compilati tutti i campi, l’utente è registrato e potra così accedere all’area riservata.

Una volta registrati è possibile accedere all’area clienti attraverso il form.

In quest’ area è possibile effettuare gli acquisti online.

Verrà visualizzato subito un elenco di prodotti da poter

selezionare.

68

Accesso all’area clientiAccesso all’area clienti

Cliccando su una categoria, è possibile accedere a tutti i prodotti in es sa

contenuti.

69

Selezione prodottiSelezione prodotti

Per ogni prodotto sono specificate le caratteristiche principali .

E’ possibile aggiungere un prodotto al carrello cliccando sul tasto

oppure scrivere il numero di quantità nell’apposito box

Cliccando sul pulsante l’utente potrà accedere alla gestione del carrello,

nella quale è possibile:

• Controllare il contenuto del carrello

• Modificare le quantità

• Cancellare un prodotto dal carrello

70

Gestione prodottiGestione prodotti

Cliccando sul pulsante si procede con l’acquisto dei prodotti selezionati nel

carrello.

In tale procedura interverrà la connessione sicura, pertanto verrà visualizzato una

finestra di avvertimento per l’utente

71

Acquisto prodottiAcquisto prodotti

La procedura di acquisto avviene in due fasi:

- L’utente compilerà il preventivo in ogni sua parte ed in particolare inserirà il proprio

numero di carta di credito in modo sicuro.

72

Compilazione preventivoCompilazione preventivo

- L’utente riceverà nel browser una copia del preventivo da stamp are e conservare.

Infine l’utente è tenuto ad effettuare il logout e a ritornare nella pagina principale

Page 13: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

13

La gestione dei preventivi è affidata all’operatore di sistema.

Esso può:

• Controllare il contenuto del preventivo

• Stampare il preventivo

• Convalidare il preventivo

73

Gestione dei preventiviGestione dei preventivi

Anche in questa fase è necessaria la connessione sicura poiché vengono manipolati i numeri di carta di credito, pertanto l’operatore dovrà loggarsiusando come login sysop e password quella scelta durante la fase di registrazione.

74

Il sito in dettaglioIl sito in dettaglio

Schema generale

Euro Euro StoreStore: accesso al sito: accesso al sito

Il sito è suddiviso in due aree principali:

1. Area ad accesso libero:aperto a tutti.

2. Area ad accesso riservato: solo per i clienti registrati.

75

Euro Euro StoreStore: schema principale: schema principale

index.htmlvetrina.html

contact.html

info.html

links.html

listino.html

listino.cgi

register.cgi

login.cgi insert.cgi

carrello.cgi

vetrina2.html

acquista.cgi

logout.cgi

prevent.cgi

ACCESSO RISERVATOACCESSO LIBERO ACCESSO SICURO SSL

76

Euro Euro StoreStore: le pagine ad accesso libero: le pagine ad accesso libero

Le pagine dell’area ad accesso libero

Offerte speciali e ultimi arrivi

Form per la scelta del

listino prezzi diviso per categoria

Lettura del listino prescelto dalla pagina

listino.html

Form per la registrazione di un nuovo

cliente

La Home Pageindex.htmlvetrina.html

contact.html

info.html

links.html

listino.html

listino.cgi

register.cgi

77

Euro Store: script per la Euro Store: script per la registazioneregistazione

Le pagine dell’area ad accesso libero

register.cgi

Script PERL-CGIper la registrazionedi un nuovo cliente.

START

RICEZIONE FORM CON DATI

ANAGRAFICI

IL MODULO E’CORRETTO?

LA USERID E’ UNIVOCA ?

LA PASSWORDE’ VALIDA?

ERRORE DICOMPILAZIONE

USERID GIA’ESISTENTE

SCELTA PWD ERRATA

SI

SI

SI

NO

NO

NOREGISTRAZIONE IN ARCHIVIO CLIENTI

END

SI

78

Page 14: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

14

Euro Euro StoreStore: l’archivio clienti : l’archivio clienti -- 11

Come implementiamo l’archivio dei clienti ?ARCHIVIO CLIENTI

Attraverso una struttura dati molto usata nel linguaggio Perl:

HASH SU FILE

HASH: Chiave Valore

Array : Indice Valore

Il valore di ogni elemento di un array è indicizzato da un intero positivo

Il valore di ogni elemento di un HASH è indicizzato da una chiave univoca, ad es.

una stringa!

79

Euro Euro StoreStore: l’archivio clienti : l’archivio clienti -- 22

Come implementiamo l’archivio dei clienti ?ARCHIVIO CLIENTI

HASH: Chiave Valore

ARCHIVIO : UserID Dati_Cliente

80

$dati = $archivio{$userid}

$archivio{$userid} = $dati

Lettura di un record:

Scrittura di un record:

Chiave dell’Hash

Valore corrispondente: i dati del cliente registrato

associato alla sua UserID

Euro Euro StoreStore: l’archivio clienti : l’archivio clienti -- 33

ARCHIVIO CLIENTIScrittura: $archivio{$userid} = $dati

$userid = Stringa chiave con UserID di un utente.$dati = Stringa record: tutti i campi del modulo concatenato

con opportuno separatore (#) + Password criptata.

“nome#cognome#indirizzo#telefono#…#email#passcrypt”

Costruzione di $dati :

$dati = join ‘#’, ($nome, $cognome, …, $passcrypt);

Concatenazione dei campi del modulo in un’unica stringa

81

Euro Euro StoreStore: l’archivio clienti : l’archivio clienti -- 44

ARCHIVIO CLIENTILettura : $dati = $archivio{$userid}

Dopo aver memorizzato i dati anagrafici di un utente, come accediamo ad essi ?

Sia $userid l’identificativo di un utente:$dati = $archivio{$userid};

($nome, $cognome, …, $passcrypt)= split /#/, $dati;

Legge i campi del record

concatenati col separatore ‘#’

Ritorna una lista di variabili (stringhe) usando i separatori. Ogni elemento è il valore di un

campo del record.

82

Euro Euro StoreStore: l’archivio clienti : l’archivio clienti -- 55

ARCHIVIO CLIENTI HASH o HASH SU FILE ???

E’ possibile memorizzare un Hash in un File !

tie (%archivio, ‘SDBM_File’, ‘registro’);

Apre/Crea il file registro facendolo corrispondere all’hash %archivio.

Ogni operazione sull’hash è un I/O sul file.

%ARCHIVIO REGISTRO.DIR

REGISTRO.PAG

83

Euro Euro StoreStore: le pagine ad accesso riservato: le pagine ad accesso riservato

index.html login.cgi insert.cgi

carrello.cgi

vetrina2.html

acquista.cgi

logout.cgi

prevent.cgi

Le pagine dell’area ad accesso riservato

Home Page dell’area riservata

Inserimento merce nel carrello

Gestione del carrello virtuale

Acquisto della merce con

transazione sicura

84

Page 15: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

15

Euro Euro StoreStore: richiesta di : richiesta di loginlogin

Le pagine dell’area ad accesso riservato

login.cgiRichiesta LOGIN (userid, password)

Richiesta di login con login.cgi

index.html

UTENTEWEB

SERVER

Output login.cgi

Cookie (userid, data, ID_CARRELLO x)COOKIE x

85

Euro Euro StoreStore: richiesta di inserimento : richiesta di inserimento -- 11

Le pagine dell’area ad accesso riservato

Insert.cgiRichiesta di una pagina riservata (es.: insert.cgi)

Richiesta di inserimento di un prodotto con insert.cgi

UTENTEWEB

SERVER

Richiesta Cookie

login.cgi

COOKIEx

Cookie (UserID, data, ID_CARRELLO x)

Invio pagina richiestaInsert.cgi : ELENCO PRODOTTI SELEZIONABILI

86

Euro Store: richiesta di inserimento Euro Store: richiesta di inserimento -- 22

Le pagine dell’area ad accesso riservato

Insert.cgiRichiesta inserimento prodotto y nel carrello

Richiesta di inserimento di un prodotto con insert.cgi

UTENTEWEB

SERVER

Insert.cgi : ELENCO PRODOTTI SELEZIONABILI

Richiesta CookieCOOKIE

xCookie (UserID, data, ID_CARRELLO x)

Esito dell’inserimentoInsert.cgi INSERIMENTO PRODOTTO yIN CARRELLO x

87

Euro Euro StoreStore: richiesta di acquisto : richiesta di acquisto -- 11

Acquista.cgi

Le pagine dell’area ad accesso riservato

Richiesta di acquisto dei prodotti selezionati

Richiesta di acquisto in modalità sicura con acquista.cgi

UTENTEWEB

SERVER

Richiesta Cookie

x=yCOOKIE

login.cgi

Cookie (UserID, data, ID_CARRELLO x)

Stampa PREVENTIVO (con contenuto di x)Acquista.cgi

Tutto ciò avviene in connessione sicura !

88

Euro Euro StoreStore: richiesta di acquisto : richiesta di acquisto -- 22

Acquista.cgi

Le pagine dell’area ad accesso riservato

Transazione sicura con acquista.cgi

UTENTEWEB

SERVER

Richiesta Cookie

x=yCOOKIE

Acquista.cgi

Cookie (UserID, data, ID_CARRELLO x)

REGISTRAPREVENTIVO NEL SERVER per carrello X

Copia Preventivo generatoAcquista.cgi

89

INVIO DATI CARTA DI CERDITO

Euro Euro StoreStore: richiesta di acquisto : richiesta di acquisto -- 33

Logout.cgi

Le pagine dell’area ad accesso riservato

Richiesta di logout dopo l’acquisto, con logout.cgi

UTENTEWEB

SERVER

Richiesta Cookie

x=y

RICHIESTA DI LOGOUT

COOKIE

Acquista.cgi

Index.html

x=y

Cookie (UserID, data, ID_CARRELLO x)

COOKIECancellazione del Cookie

90

Page 16: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

16

Euro Euro StoreStore: script per la : script per la loginlogin

STARTSTART

LETTURA DELCOOKIE

(UserID, DATA, ID x)

LETTURA DELCOOKIE

(UserID, DATA, ID x)

COOKIEDEFINITO?COOKIE

DEFINITO?

SI

NO LETTURAPARAMETRI

USERID ePASSW

LETTURAPARAMETRI

USERID ePASSW

LETTURAARCHIVIO CLIENTI

LETTURAARCHIVIO CLIENTI

USERID ePASSW

VALIDI ?

USERID ePASSW

VALIDI ?

SI

CREAZIONE E INVIO COOKIE

(UserID, DATA, ID x)

CREAZIONE E INVIO COOKIE

(UserID, DATA, ID x)CREAZIONE

CARRELLO xCREAZIONE

CARRELLO xLETTURA

CARRELLO xLETTURA

CARRELLO x

STAMPA MENU’CATEGORIE

PRODOTTI

STAMPA MENU’CATEGORIE

PRODOTTI ENDEND

NO

ERROREERRORE

login.cgi

91

Euro Euro StoreStore: il carrello virtuale : il carrello virtuale -- 11

ARCHIVIOCLIENTI

ARCHIVIOCLIENTI

CARRELLOVIRTUALE

CARRELLOVIRTUALE

= HASH SU FILE

= ?Creiamo un unico file come archivio di carrelli, e quindi

un HASH SU FILE !

Carrello: UserID Prodotti inseriti

Hash Chiave Valore

Ma cos’è l’oggetto Prodotti inseriti ?

92

Euro Euro StoreStore: il carrello virtuale : il carrello virtuale -- 22

ARCHIVIOCARRELLIARCHIVIOCARRELLI

= HASH SU FILE

Carrello: UserID Prodotti inseriti

%carrello $userid $contenuto

$contenuto := Stringa, contentente:ID Carrello + Coppie (codice, quantità) per ogni prodotto.

ID x = 1234 Array di coppie (codice_prodotto, quantità)

$contenuto = “1234#skaudio155%2#skvideo209%1#…”

93

Euro Euro StoreStore: script per l’inserimento: script per l’inserimentoSTARTSTART

LETTURAPARAMETRI E

COOKIE(UserID, DATA, ID x)

LETTURAPARAMETRI E

COOKIE(UserID, DATA, ID x)

COOKIEDEFINITO?COOKIE

DEFINITO?

NO

SI

ERROREERRORE

insert.cgi

ESISTECATEGORIA=y

?

ESISTECATEGORIA=y

?

LETTURA PRODOTTICATEGORIA y

LETTURA PRODOTTICATEGORIA y

SI

NO

ESISTEINSERT

?

ESISTEINSERT

?

STAMPA PRODOTTICON LINK ALCARRELLO x

STAMPA PRODOTTICON LINK ALCARRELLO x

LEGGI COPPIE(CODICE,Q.TA’)DA PARAMETRI

LEGGI COPPIE(CODICE,Q.TA’)DA PARAMETRI

INSERISCI COPPIENEL CARRELLO x

INSERISCI COPPIENEL CARRELLO x

NO

SI

ENDEND

94

Euro Euro StoreStore: l’archivio prodotti : l’archivio prodotti -- 11

ESISTECATEGORIA=y

?

ESISTECATEGORIA=y

?

LETTURA PRODOTTICATEGORIA y

LETTURA PRODOTTICATEGORIA y

SI

ESISTEINSERT

?

ESISTEINSERT

?

LEGGI COPPIE(CODICE,Q.TA’)

DA PARAMETRI

LEGGI COPPIE(CODICE,Q.TA’)

DA PARAMETRI

SI

Se esiste il parametro INSERT, allora il suo valore è un array di coppie (Codice_Prodotto, Quantità). Vi è una coppia per ogni prodotto che l’utente ha SELEZIONATO !

Come gestire l’archivio dei prodotti diviso per

categoria ?

95

Euro Euro StoreStore: l’archivio prodotti : l’archivio prodotti -- 22

ACC.TXTCAT. ACCESSORI

ACC.TXTCAT. ACCESSORI

PRO.TXTCAT. PROCESSORI

PRO.TXTCAT. PROCESSORI

Semplici files di testo (uno per ogni categoria)

01 2

3y

. . .. . .. . .. . .. . .

Eur. 190.002.0 GhzAthlon XPAMDproaxp20Eur. 75.00800 MhzPentium IIIIntelproip3800

PrezzoVersioneModelloProduttoreCodice

96

ARCHIVIO DEIPRODOTTI

ARCHIVIO DEIPRODOTTI

Page 17: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

17

Euro Euro StoreStore: script per il carrello virtuale: script per il carrello virtualeSTARTSTART

LETTURAPARAMETRI E

COOKIE(UserID, DATA, ID x)

LETTURAPARAMETRI E

COOKIE(UserID, DATA, ID x)

COOKIEDEFINITO?COOKIE

DEFINITO?

NO

SI

ERROREERRORE

carrello.cgi: gestione del carrello virtuale

ESISTEINC = C o DEC = C

?

ESISTEINC = C o DEC = C

?AGGIORNA Q.TA’ DI C

NEL CARRELLO xAGGIORNA Q.TA’ DI C

NEL CARRELLO x

SI

NO

ESISTEAGGIORNA

?

ESISTEAGGIORNA

?

QUANTITA’(C ) += 1oppure

QUANTITA’(C ) -= 1

QUANTITA’(C ) += 1oppure

QUANTITA’(C ) -= 1

LEGGI COPPIE(CODICE,Q.TA’)DA PARAMETRI

LEGGI COPPIE(CODICE,Q.TA’)DA PARAMETRI

AGGIORNA COPPIENEL CARRELLO x

AGGIORNA COPPIENEL CARRELLO x

SI

ENDEND

NOSTAMPA TUTTO IL

CARRELLOSTAMPA TUTTO IL

CARRELLO

97

Euro Euro StoreStore: script per la transazione sicura: script per la transazione sicura

Connessione sicura !STARTSTART

LETTURAPARAMETRI E

COOKIE(UserID, DATA, ID x)

LETTURAPARAMETRI E

COOKIE(UserID, DATA, ID x)

COOKIEDEFINITO?COOKIE

DEFINITO?

NO

SI

ENDEND

acquista.cgi

SI ESISTECARTA_CREDITO

?

ESISTECARTA_CREDITO

?

LETTURA ARCHIVIODATI (USERID)

LETTURA ARCHIVIODATI (USERID)

LETTURACARRELLO x

LETTURACARRELLO x

LETTURAARC.PRODOTTI

LETTURAARC.PRODOTTI

GENERAZIONEPREVENTIVO

GENERAZIONEPREVENTIVO

REGISTRAZIONEPREVENTIVO

REGISTRAZIONEPREVENTIVO

ERROREERRORE

STAMPAANTEPRIMAPREVENTIVO

STAMPAANTEPRIMAPREVENTIVO

STAMPAMODULO PER LACOMPILAZIONE

DELLA CC.

STAMPAMODULO PER LACOMPILAZIONE

DELLA CC.

ENDEND

98

Euro Euro StoreStore: l’archivio preventivi : l’archivio preventivi -- 11

REGISTRAZIONEPREVENTIVO

REGISTRAZIONEPREVENTIVO

Come vengono registrati i preventivi ?

Attraveso la consueta tecnica dell’Hash su File !

Chiave dell’Hash: UserID dell’acquirente.Valore: Contenuto del carrello + Informazioni sulla CC.

Soltanto l’operatore di sistema può accedere ai preventivi memorizzati, attraverso lo script prevent.cgi .

99

Euro Euro StoreStore: l’archivio preventivi : l’archivio preventivi -- 22

Il file seriale.dat

Ogni preventivo è generato con un numero di serie univoco.

Il file seriale.dat è un contatore di numero seriale ed è aperto in lettura/scrittura esclusiva, in modo tale che due o più processi non acquisiscano lo stesso numero di serie.

100

Euro Euro StoreStore: interfaccia del sito: interfaccia del sito

Il file interfaccia.pm

Tutti gli script del sito accedono a tale file per acquisire le definizioni degli oggetti utilizzati.

• Elenco delle librerie utilizzate.

• Timeout per la connessione all’area riservata.

• Elenco categorie della merce.

• Nomi degli archivi generati.

• Dominio web nel quale installare il sito.

101

Euro Euro StoreStore: sicurezza contro attacchi DoS: sicurezza contro attacchi DoS

Prevenzione da Attacchi di tipo Denial of Service

Le Form nelle pagine html sono potenzialmentedannose in caso di attacchi DoS.

Il file interfaccia.pm limita l’uso del buffer di input per il web server che utilizziamo

$CGI::POST_MAX=1024;

$CGI::DISABLE_UPLOADS = 1;

Nr. bytes massimo sul canale di ricezione.

Upload di files disabilitati verso il web server.

102

Page 18: APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione possibile su qualsiasi piattaforma Linux, Unix e NT • E’ necessario essere amministratori

18

CreditsCredits -- 11

Università degli Studi di SalernoFacoltà di Scienza MM. FF. NN.Corso di Laurea in Informatica, AA. 2001-2002

Progetto per il Corso di Sicurezza su Reti

APACHE-SSL: Realizzazione di un sito con transazioni sicure

Docente del corso

Alfredo De Santis

http://www.dia.unisa.it/ads.dir/index.html

103

CreditsCredits -- 22

Università degli Studi di SalernoFacoltà di Scienza MM. FF. NN.Corso di Laurea in Informatica, AA. 2001-2002

Autori del Progetto

Andrea Del Papa (56/100859) [email protected]

Antonio Esposito (56/100984) [email protected]

Cristian Gagliardi (56/100451) [email protected]

Gerardo Morrongiello (56/100473) [email protected]

Luigi Calaselice (56/100983) [email protected]

104

CreditsCredits -- 33

105

Goodbye !