APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione...

of 18 /18
APACHE APACHE-SSL SSL 1 Università degli Studi di Salerno Facoltà 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 Apache Panoramica su Apache 3 Premessa Premessa 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 patchy server, da cui il nome Apache Server. La prima versione, basata su server NCSA, è stata sviluppata nel 1995. 4 Cos’è Apache Cos’è Apache Un Web Server per il protocollo HTTP Affidabile, compatto e funzionale Progettato per essere eseguito come processo standalone 5 Strumenti di Apache Strumenti di Apache Apache mette a disposizione una serie di strumenti aggiuntivi: Sistemi di controllo d'accesso a pi Sistemi di controllo d'accesso a più livelli livelli Generazione di statistiche variamente strutturate Generazione di statistiche variamente strutturate Possibilit Possibilità di di “integrare integrare” l’HTML in modo HTML in modo dinamico(Server dinamico(Server-Side Include) Side Include) 6 Integrazione Integrazione 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.

Embed Size (px)

Transcript of APACHE-SSL Panoramica su Apache - UNISAads/corso-security/www/CORSO-0102/...4 • Installazione...

  • 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.

  • 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.

  • 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

  • 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

  • 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

  • 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

    …..

    User.Group

  • 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

  • 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 …….

    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

  • 9

    49

    Direttive di Apache : “”

    •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

    …..…..

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

    50

    Direttive di Apache : “”

    …..…..

    •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 #

  • 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à

  • 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:

    Options +ExecCGI

    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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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 !