setup service CA and MAIL

Transcript

setup service CA and MAIL
Corso di Sicurezza su reti II
Anno accademico 2007-2008
Prof. A. De Santis
Dott. L. Catuogno
Simulazione della rete Internet:
Versione 0.1
Capitolo: Parte prima: INFORMAZIONI GENERALI
Gruppo CA
1
SOMMARIO
Parte prima: INFORMAZIONI GENERALI ............................................................................................................................ 4
Parte seconda: SCHEDA TECNICA ...................................................................................................................................... 5
NTP ............................................................................................................................................................................. 5
CA ............................................................................................................................................................................... 5
Doveri di una CA .................................................................................................................................................... 6
Servizi offerti .......................................................................................................................................................... 6
Doveri del sottoscrittore ........................................................................................................................................ 7
Doveri di terze parti coinvolte ............................................................................................................................... 7
Certificati digitali.................................................................................................................................................... 7
Certificati X.509 ................................................................................................................................................. 7
Struttura del certificato ..................................................................................................................................... 8
Configurazione di OpenCA ..................................................................................................................................... 9
Inizializzazione della Certification Authority ..................................................................................................... 9
Creazione dell’amministratore .......................................................................................................................... 9
Creazione del certificato RA .............................................................................................................................. 9
Inizializzazione di RA ....................................................................................................................................... 10
MANUALE UTENTE............................................................................................................................................... 10
Sottomissione di una richiesta di certificato ................................................................................................... 10
Approvazione del certificato ........................................................................................................................... 10
Ottenimento del certificato ............................................................................................................................ 10
Ottenere il certificato root .............................................................................................................................. 10
Aggiungere SR2camail come CA trusted ......................................................................................................... 11
Richiedere un certificato per un web server ................................................................................................... 11
Revocare un certificato ................................................................................................................................... 11
MAIL ......................................................................................................................................................................... 11
Introduzione ........................................................................................................................................................ 11
Implementazione di un servizio e-mail ................................................................................................................ 12
PREREQUISITI : ANATOMIA DI POSTFIX ............................................................................................................... 13
Capitolo: Parte prima: INFORMAZIONI GENERALI
Rilascio del certificato ..................................................................................................................................... 10
2
Parte terza: FASE DI SETUP .............................................................................................................................................. 15
Software Comuni ..................................................................................................................................................... 16
NTP ........................................................................................................................................................................... 16
CA ............................................................................................................................................................................. 16
mail .......................................................................................................................................................................... 16
INSTALLAZIONE SOFTWARE ......................................................................................................................................... 18
software Comuni ...................................................................................................................................................... 18
Scelta del Sistema Operativo ............................................................................................................................... 18
Installazione .................................................................................................................................................... 18
Aggiornamento................................................................................................................................................ 18
Hardening ........................................................................................................................................................ 18
Firewall ............................................................................................................................................................ 18
Scanning vulnerabilità note ............................................................................................................................. 19
NTP ........................................................................................................................................................................... 19
Installazione ca ......................................................................................................................................................... 19
Installazione web mail.............................................................................................................................................. 23
Installazione di MySQL: ................................................................................................................................... 23
Installazione di PostfixAdmin: ......................................................................................................................... 23
Installazione di Postfix: .................................................................................................................................... 26
Installazione delle componenti di Courier: ..................................................................................................... 28
Testare Courier-IMAP: ..................................................................................................................................... 29
Testare Courier-POP: ....................................................................................................................................... 29
Installazione di SquirrelMail ............................................................................................................................ 32
CONCLUSIONI ............................................................................................................................................................... 32
FONTI BIBLIOGRAFICHE ................................................................................................................................................ 35
CA ............................................................................................................................................................................. 35
MAIL ......................................................................................................................................................................... 35
Parte quarta: COMMESSE ................................................................................................................................................ 36
Capitolo: Parte prima: INFORMAZIONI GENERALI
Postfix SASL: .................................................................................................................................................... 30
3
PARTE PRIMA: INFORMAZIONI GENERALI
NOME DEL GRUPPO
CaMail
DENOMINAZIONE
CA
COMPONENTI
CAROTENUTO FRANCESCO
0521000582
D’AMATO ANGELO
0521000698
ELETTO ANTONIO
0521000742
SCARPA DARIO
0521000692
PROGETTO
Implementazione e messa in esercizio di :

una certificate authority

un servizio di web mail

un server NTP
L’intenzione del gruppo è di realizzare la missione utilizzando tutti gli strumento Open Source
che risultino affidabili e facilmente reperibili e che naturalmente non comportano acquisto e
rinnovo delle licenze. La scelta principale per la realizzazione della CA è ricaduta
sull’infrastruttura OpenCA mentre per la realizzazione di un server Mail la scelta è stata
Postfix (come MTA) e courier-imap per il servizio di IMAP e squirrelMail come web Mail.
Come firewall verrà utilizzato il tool di sistema IPtables. I servizi devono essere tutti
accessibili via web (ad eccezione di NTP). Il provider WebMAIL deve supportare la
registrazione on-line degli utenti e l’utilizzo dei certificati client. Ulteriori tool per la sicurezza e
maggiori dettagli verranno forniti nelle fasi successivi.
Capitolo: Parte prima: INFORMAZIONI GENERALI
MISSIONE
4
PARTE SECONDA: SCHEDA TECNICA
DESCRIZIONE SERVIZI
NTP
NTP è un protocollo per la sincronizzazione dei clock su sistemi distribuiti. E' progettato per funzionare su reti packetswitched a latenza variabile, e usa la porta UDP 123 per lo scambio di dati. I server NTP sono organizzati in una
gerarchia di "strati" che permette di aumentare la precisione ed eliminare eventuali server scorretti: un server si
sincronizza confrontando il suo orologio con quello di altri server di strato inferiore o dello stesso strato. Tipicamente i
server di strato 1 sono sincronizzati con una fonte temporale esterna come un orologio atomico o radiocontrollato.
CA
Si supponga che Alice e Bob vogliono scambiarsi messaggi firmati e crittografati; a tale scopo entrambi creano la loro
coppia di chiavi e le pubblicano su un keyserver. Alice scrive un messaggio per Bob, lo firma con la sua chiave privata
(di Alice) e lo cripta con la chiave pubblica di Bob, quindi il messaggio viene inviato. In ricezione Bob decripta il
messaggio con la sua chiave privata (di Bob) e verifica la firma con la chiave pubblica intestata ad Alice.
Bob a questo punto Bob sa due cose:


il messaggio era diretto a lui perché è riuscito a decifrarlo con la sua chiave privata
il messaggio è stato firmato con la chiave privata relativa alla chiave pubblica che lui ha usato per verificare la
firma.
Si può osservare che Bob non ha la sicurezza che la chiave sia effettivamente di Alice. Pertanto una terza persona,
potrebbe intercettare la comunicazione in cui Alice passa la sua chiave a Bob e riesca a sostituire la chiave di Alice con
la sua
chiave pubblica. In nessun modo Bob può scoprire
questa “sostituzione”.
Le CA nascono per risolvere questo tipo di problema, ossia quello di verificare e garantire la corrispondenza fra chiave
e proprietario. Un utente pertanto richiede un certificato, la CA verifica la sua identità, quindi crea un documento
elettronico in cui sono contenuti:
i dati personali dell'utente
la chiave pubblica dell'utente
gli estremi della CA che ha rilasciato il certificato
gli indirizzi a cui può essere trovata la CRL.
Il documento viene firmato con la chiave pubblica della CA e pubblicato. Nell'esempio precedente supponiamo che
Alice e Bob si facciano firmare le loro chiavi da una CA che entrambi ritengono attendibile. In questo caso l'attacco di
una terza persona non è più fattibile in quanto non è in grado di riprodurre la firma della CA. Le CA commerciali sono
sottoposte ad una rigida regolamentazione e supervisione da parte dello Stato proprio a causa della sensibilità dei dati
personali che gestiscono. Le CA sono delle organizzazioni molto importanti nell'ambito del web dato che tutti i siti che
effettuano di transazioni sicure on-line (come quelle inerenti all'e-commerce), almeno per quanto riguarda
l'autenticazione dell'utente trasferiscono la comunicazione dal protocollo HTTP al protocollo HTTPS; all'atto della
negoziazione il client richiede il certificato del server e quindi viene instaurata la connessione protetta. Quando un
browser (ma anche un client di posta, ecc...) riceve un certificato, lo valida: Nel processo di validazione, si verifica che
tutto l'albero delle CA collegate al certificato sia fidato; un certificato può non essere attendibile per diversi motivi, tra
cui:
1.
2.
3.
Il nome a cui è intestato il certificato non corrisponde al nome di chi lo ha presentato ( p.e. il dominio
www.miodomino.com deve presentare un certificato che sia intestato a www.miodominio.com).
la data corrente non appartiene all'intervallo di validità del certificato.
Non tutte le CA che sono state coinvolte nel rilascio del certificato sono considerate attendibili.
Capitolo: Parte seconda: SCHEDA TECNICA




5
In genere i browser o i sistemi operativi contengono un elenco delle CA di primo livello e di livello intermedio che sono
ritenute attendibili e quindi sì "fidano" di quelle CA. Se tutte le CA coinvolte nel rilascio del certificato in esame sono
fidate, il certificato è ritenuto valido altrimenti viene chiesto all'utente cosa fare, ossia se accettarlo o meno. Il
problema di fidarsi o meno del certificato e quindi dell'entità che lo ha presentato viene passato all'utente. Per cui il
problema della fiducia rimane a completo carico dell'utente. È automatico, quindi, che i siti o le infrastrutture
utilizzino certificati da CA molto famose e note per la loro affidabilità.
D OVERI DI UNA CA
Considerando che la RA ha il compito di fornire, in quanto Autorità di Registrazione, l’autenticazione dell’identità del
soggetto, la convalida della corrispondenza tra una chiave pubblica e l’identità del richiedente, la conferma di tale
convalida nei confronti della CA, si è deciso, in seguito alla visione dei dovuti documenti, di far rivestire tali compiti alla
CA stessa; per cui i principali doveri di una CA sono:









autenticare l’identità del soggetto;
convalidare la corrispondenza tra una chiave pubblica e l’identità del richiedente, attraverso un metodo di
verifica opportuno;
gestire le richieste di certificazione e l’emissione di nuovi certificati;
accettare e confermare le richieste di certificazione da parte di entità richiedenti un certificato;
rilasciare certificati sulla base delle richieste autenticate;
rendere pubblicamente disponibili i certificati emessi;
occuparsi delle richieste di revoca dei certificati e della revoca degli stessi;
accettare e confermare le richieste di revoca da parte di entità richiedenti;
rendere le CRL pubblicamente disponibili.
S ERVIZI OFFERTI


Registrazione: questo è il processo attraverso il quale il richiedente si presenta alla CA, per cercare di
ottenere un certificato; durante la procedura viene richiesto al soggetto di fornire i propri attributi, come il
nome, l’indirizzo e-mail, il numero di telefono ed altre informazioni, seguendo le specifiche CPS (Certification
Practices Statement) della CA; quindi la CA segue le linee guida specificate nel CPS, per verificare che i
dettagli forniti dal soggetto siano corretti, prima di emettere il certificato;
Certificazione: è il processo attraverso il quale la CA emette un certificato che contiene la chiave pubblica del
soggetto, lo pubblica in un repository pubblico ed accessibile a tutti permettendo di scaricarlo;
Revoca o annullamento: nella maggior parte dei casi, un certificato rimane valido fino a quando non viene
raggiunta la data di scadenza. Ci sono, comunque, un certo numero di situazioni in cui è necessaria una
revoca prematura del certificato, ad esempio:
o il soggetto ha cambiato nome;
o un impiegato lascia la compagnia che ha emesso il certificato;
o si è verificata una compromissione (o una sospetta compromissione) della chiave privata.
Il metodo stabilito per la revoca dei certificati include l’uso di una Certificate Revocation List (CRL), che raccoglie i
certificati revocati (normalmente ogni certificato è identificato da un numero seriale unico, assegnato nel momento
dell’emissione) ed è firmata, con tanto di data, dalla CA; la CA pubblica la CRL ad intervalli regolari, nello stesso
repository pubblico. Un certificato la cui corrispondente chiave privata sia stata compromessa deve essere revocato il
più presto possibile, subito dopo che la compromissione è stata scoperta; altrimenti, se la CRL non venisse pubblicata
per molti giorni, dopo la revoca del certificato, gli utenti non sarebbero a conoscenza del problema e potrebbero
accettare messaggi firmati da un intruso con la chiave privata rubata; comunque, anche se la CRL fosse pubblicata
immediatamente dopo la revoca, non ci sarebbe garanzia che gli utenti ne vengano a conoscenza in tempo. Una CRL
permette ai clienti ed ai server di controllare se l’entità con cui stanno dialogando possiede un certificato valido. Il CRL
è un file binario che contiene le seguenti informazioni:
Capitolo: Parte seconda: SCHEDA TECNICA

6




lista di certificati revocati e ragione della revoca;
emissario della CRL;
data di emissione della CRL;
data di pubblicazione della prossima versione della CRL.
È importante specificare che quando la CA, che aveva originariamente emesso il certificato, lo revoca, firma
digitalmente la CRL: in questo modo, l’utente finale che controlla la CRL può essere sicuro dell’attendibilità delle
informazioni che la CRL contiene. Si accede ad una CRL quando si ha bisogno di usare un certificato contenente una
chiave pubblica per crittografare dati da inviare ad un particolare destinatario, o per verificare la firma digitale
presente in un messaggio ricevuto. Quando si ha una qualsiasi di queste due necessità, si eseguono le seguenti
operazioni:





si ottiene il certificato digitale richiesto;
si ottiene il numero seriale del certificato;
si ottiene la CRL (si accede al proprio repository locale di CRL);
si controlla la firma digitale della CRL, la data di pubblicazione e la data di prossima pubblicazione;
si controlla la CRL per determinare se il certificato che si intende usare è stato revocato o sospeso (basandosi
sul numero seriale del certificato).
D OVERI DEL SOTTOSCRITTORE
Un utente deve comportarsi nel rispetto della Certification Practice Statements (CPS) della CA addetta al rilascio di
certificati. Tale accordo prevede:




lettura e rispetto delle procedure concordate;
opportuna custodia della propria chiave privata, in quanto unico possessore, nel caso in cui la sottoscrizione
si riferisca a un singolo utente. Nel caso, invece, di una chiave privata rilasciata per un componente hardware
o software, la custodia ed il controllo della chiave possono essere affidati alla responsabilità di più di una
persona autorizzata;
autorizzazione al trattamento ed alla conservazione dei dati personali;
immediata notifica alla CA in caso di compromissione della chiave privata.
D OVERI DI TERZE PARTI COINVOLTE
Una parte coinvolta deve venire a conoscenza della CPS e della policy utilizzata, prima di trarre alcuna conclusione
sulla fiducia da riporre nell’utilizzo di un certificato emesso da una CA conforme. Essa, inoltre, deve controllare le CRL,
al momento di convalidare l’utilizzo dello stesso certificato.
Un certificato digitale è un documento elettronico che associa l'identità di una persona ad una chiave pubblica. Viene
emesso da una autorità di certificazione riconosciuta secondo standard internazionali (X.509) e viene firmato con la
chiave privata dell'autorità. Gli enti che fanno da autorità devono sottostare a regole rigidissime per quanto riguarda
la
gestione
dei
dati
personali,
pertanto
si
possono
considerare
sicuri.
I certificati garantiscono la tutela delle informazioni personali su Internet e consentono di proteggere il sistema da
programmi software non sicuri. Un certificato è un attestato che consente di verificare l'identità di una persona o la
protezione di un sito Web.
C ERTIFICATI X.509
In crittografia, X.509 è uno standard ITU-T per le infrastrutture a chiave pubblica (PKI). X.509 definisce, fra le altre
cose, formati standard per i certificati a chiave pubblica ed un certification path validation algorithm.
Nel sistema X.509, una CA rilascia un certificato che accoppia una chiave pubblica ad un Nome Distintivo(Distinguished
Name) seguendo la tradizione del X.500, oppure ad un Nome Alternativo(Alternative Name) come potrebbe essere un
indirizzo e-mail o un record DNS.
Capitolo: Parte seconda: SCHEDA TECNICA
C ERTIFICATI DIGITALI
7
Un root certificate fidato di un'azienda può essere distribuito a tutti i dipendenti, per far si che possano usare la PKI
aziendale. Browser come Internet Explorer, Netscape/Mozilla ed Opera vengono distribuiti con alcuni root certificate
preinstallati, rendendo possibile il funzionamento dei certificati SSL di alcuni grossi distributori che hanno pagato per
questo servizio; in pratica chi sviluppa il browser determina quali CA sono terze parti fidate. Nonostante questi root
certificate possano essere eliminati o disabilitati, raramente gli utenti lo fanno.
X.509 include anche gli standard per le implementazioni di certificate revocation list (CRL, liste di revoca di certificati),
un aspetto spesso sottovalutato dei sistemi PKI. La modalità di controllo della validità di un certificato approvata
dall'IETF si chiama Online Certificate Status Protocol (OCSP).
S TRUTTURA DEL CERTIFICATO
La struttura di un certificato digitale X.509 v3 è la seguente:



Certificato
o Versione
o Numero seriale
o ID dell'algoritmo
o Ente emettitore
o Validità
 Non prima
 Non dopo
o Soggetto
o Informazioni sulla chiave pubblica del soggetto
 Algoritmo per l'utilizzo della chiave pubblica
 Chiave pubblica
o Codice identificativo univoco dell'emittente (facoltativo)
o Codice identificativo univoco del soggetto (facoltativo)
o Estensioni (facoltativo)
Algoritmo di firma del certificato
Firma del certificato
I codici identificativi univoci dell'emettitore e del soggetto sono stati introdotti nella versione 2, le "Estensioni" nella
versione 3.
 .CER - certificato codificato con DER, a volte sequenze di certificati;
 .DER - certificato codificato con DER;
 .PEM - certificato codificato con Base64;
 .P7B  .P7C - struttura SignedData PKCS#7 senza dati, solo il/i certificato/i o la/le CRL (Certificate revocation list);
 .PFX - vedi .p12
 .P12 - PKCS#12, può contenere certificati e chiavi pubbliche e private (protette da password);
PKCS #7 è uno standard per la firma o la crittazione (viene chiamata "imbustamento", "incapsulazione", "enveloping"
in inglese) dei dati. Poiché è necessario un certificato per verificare i dati firmati, è possibile includerli in una struttura
SignedData. Un file .P7C non è altro che una struttura SignedData "degenere" (senza dati firmati).
PKCS #12 è nato dallo standard PFX (Personal inFormation eXchange) ed è usato per scambiarsi oggetti pubblici e
privati all'interno dello stesso file. Un file .PEM può contenere certificati o chiavi private, racchiusi tra le apposite linee
BEGIN/END.
Capitolo: Parte seconda: SCHEDA TECNICA
Estensioni comuni per i file contenenti i certificati X.509:
8
C ONFIGURAZIONE DI O PEN CA
1.
Connettiti alla ca http://www.camail.it/ca/ , saranno visibili una serie di tabs. Seleziona il tab Generale e
l’oggetto Initialization all’interno. Viene visualizzata la pagina "OpenCA Init" con una serie di link organizzati
in tre fasi:
I NIZIALIZZAZIONE DELLA C ERTIFICATION A UTHORITY
2.
3.
4.
Clicca su Initialize the Certification Authority. Viene visualizzata la pagina "Init Certification Authority"
Clicca su Initialize Database. Ritorna alla pagina "Init Certification Authority" usando il bottone Back
Clicca su Generate new CA secret key. Questo link conduce alla pagina "Get Additional Parameters".
I valori di default sono:
a. Encryption algorithm (des,des3,idea):des3
b. Asymmetric algorithm (rsa, dsa):rsa
c. CA key size (in bits):4096
Clicca su OK
5.
Inserisci la password CA Certificate Private Key nella pagina di login di CA. Questa password proteggerà CA
private key e deve essere inserita per lavorare con CA. Dopo aver inserito la password clicca su OK. Il server
creerà un paio di chiavi basate sui parametri che hai inserito; questa operazione può richiedere alcuni minuti.
Quando la generazione della chiave è completata, uno screen mostrerà la chiave. Clicca su OK. Ritorna alla
pagina "Init Certification Authority".
6. Clicca su Generate new CA Certificate Request . Riempi i campi con i parametri necessari per l’installazione.
Clicca OK e conferma il DN generato dai parametri Si indicherà di inserire le credenziali, cioè la private key
password generata nel passo precedente. Ritorna alla pagina "Init Certification Authority"
7. Clicca su Generate new CA Certificate Request . Riempi i campi con i parametri necessari per l’installazione.
Clicca OK e conferma il DN generato dai parametri Si indicherà di inserire le credenziali, cioè la private key
password generata nel passo precedente. Ritorna alla pagina "Init Certification Authority"
8. Clicca su Self Signed CA Certificate. Si indicherà di inserire il periodo valido per la CA, e di confermare le
credenziali (private key password). Ritorna a "Init Certification Authority"
9. Clicca su Rebuild CA Chain. Dovresti avere una risposta di conferma.
10. Clicca su Export Configuration.
11. Clicca su OK.
11. Clicca su Create the initial CA certificate. Questo link conduce alla pagina "Init First User". Viene creato un
certificato (e una coppia di chiavi) per identificare il CA Administrator
12. Clicca su Create a new request. Compila i dati utente/certificato come desideri. Il ruolo dovrebbe essere "CA
Operator"..Il PIN sarà usato per proteggere la chiave privata del certificato sul server. Dai la conferma.
Ritorna alla pagina "Init First User".
13. Clicca su Edit the request. Clicca su "Submit the changed request". Clicca su "Issue Certificate". Si indicherà di
confermare le credenziali. Ritorna alla pagina "Init First User"
14. Clicca su Handle the request.. Seleziona "Certificate and Keypair" come p12 nella sezione "Operations"e clicca
su "Download". Si indicherà la password per la chiave privata per questo certificato, che era stata generata
come il PIN sopra. p12 sarà salvato e può essere importato nel browser per usarlo dopo.
C REAZIONE DEL CERTIFICATO RA
15. Clicca su Create the initial RA certificate. Questo link conduce alla pagina "Init First User". Questo passo
permette di creare un certificato (e una coppia di chiavi) per identificare l’amministratore RA
16. Clicca su Create a new request. Riempi i dati utente / certificato come desideri. Il ruolo dovrebbere essere
"RA Operator". Il PIN sarà usato per proteggere la chiave privata del certificato sul server. Dai la conferma.
Non c’è bisogno di stampare le informazioni. Ritorna alla pagina "Init First User"
17. Clicca su Edit the request. Clicca su "Submit the changed request" e poi su "Issue Certificate e conferma.
Ritorna alla pagina "Init First User".
18. Clicca su Handle the request.. Seleziona "Certificate and Keypair" come p12 nella sezione "Operations"e clicca
su "Download".Si indicherà la password per la chiave privata per questo certificato, che era generata come il
PIN. p12 sarà salvato e può essere importato nel browser per usarlo dopo.
Capitolo: Parte seconda: SCHEDA TECNICA
C REAZIONE DELL ’ AMMINISTRATORE
9
I NIZIALIZZAZIONE DI RA
19. Connettiti a : http://www.camail.it/ra-node/. Saranno visibili una serie di tabs. Seleziona Administration e
l’oggetto Server Init all’interno. Sarà visibile la pagina "Init New Node" con due link.
20. clicca su Import Configuration in "PKI Setup". Questo passaggio consente di rendere il certificato CA
disponibile a RA e utenti pubblici
MANUALE UTENTE
S OTTOMISSIONE DI UNA RICHIESTA DI CERTIFICATO
1.
2.
3.
4.
Connettiti a www.camail.it/pub
Seleziona il tab User e l’oggetto Request a Certificate. Si visualizza la pagina "Basic Certificate Request" (le
stesse operazioni valgono più o meno anche tutte le altre tipologie di certificato)
Clicca su Request a certificate with automatic browserdetection. Appare la pagina "Basic Certificate Request"
Compila la pagina "Basic Certificate Request", selezionando il ruolo "User". Clicca su "Continue". Conferma la
richiesta. La keysize deve essere riselezionata. Cosa accade dopo dipende dal browser. Mozilla chiede di
confermare la keysize e di inserire la master keystore password, che è la password che protegge la chiave
private dell’utente. IE chiederà di selezionare il sistema di crittografia, possibilmente passando attraverso
alcune decisioni che riguardano la chiave. Prendi nota del numero seriale della richiesta, lo userai per
recuperare il certificato.
A PPROVAZIONE DEL CERTIFICATO
1.
2.
3.
Connettiti alla ra http://www.camail.it/ra/. Seleziona il tab Active CSRs e il nuovo item dentro di esso. Viene
visualizzata una pagina di ricerca. Se non hai bisogno di modificare i livelli di sicurezza, puoi usare i parametri
di ricerca di default. Clicca su "Search".
Dovrebbe comparire una lista di richieste. Clicca sul numero seriale della richiesta che vorresti effettuare.
Conferma che la richiesta che appare è quella che desideri e clicca su "Approve Without Signing”.
R ILASCIO DEL CERTIFICATO
1.
2.
3.
Connettiti a http://www.camail.it/ca/. Seleziona Usual Operations e Approved Certificate Requests.
Sono visualizzate una lista di richieste. Clicca sul numero seriale della richiesta che desideri.
Conferma che la richiesta che appare è quella che desideri e clicca su "Issue the Certificate". Conferma la
richiesta con la private key password.
1.
2.
3.
Connettiti a www.camail.it/pub
Seleziona il tab User e l’oggetto Get Requested Certificate. Inserisci il numero seriale e seleziona "Request's
Serial" dal box di selezione "Type of Serial". Clicca su OK.
Conferma che il certificato è presente :
 con Mozilla (Edit->Preferences->Privacy and Security->Certificates->Manage Certificates)
 con Internet Explorer (Tools->Internet Options->Content->Certificates->)
O TTENERE IL CERTIFICATO ROOT
1.
2.
3.
Connettiti a www.camail.it/pub
Seleziona il tab CA Infos e l’oggetto Get CA Certificate.
Seleziona "CA-certificate in format CRT ". Con Mozilla devono essere eseguiti i seguenti passi:
 confidare in questa CA per identificare siti web
 confidare in questa CA per identificare emails di utenti
 confidare in questa CA per identificare sviluppatori software
Clicca su OK.
Capitolo: Parte seconda: SCHEDA TECNICA
O TTENIMENTO DEL CERTIFICATO
10
A GGIUNGERE SR2 CAMAIL COME CA TRUSTED
Accedere a OpenCA e selezionare CA Infos -> Get CA certificate
Il browser dovrebbe automaticamente proporre l'aggiunta della CA alla lista di quelle fidate.
R ICHIEDERE UN CERTIFICATO PER UN WEB SERVER
Generare una chiave privata (da conservare con cura) con openssl, ad esempio utilizzando il comando
openssl genrsa -out chiave.key 1024
Generare una CSR (certificate signing request) per la chiave privata generata:
openssl req -new -nodes -key chiave.key -out miosito.csr
Attenzione: specificare SR2camail (case sensitive) come Organization e il dominio (FQDN, comprensivo ad esempio di
www) che si vuole autenticare come Common Name
 Accedere ad OpenCA e selezionare User->Request Certificate
 Selezionare Server Request
 Caricare il file PEM della CSR generata precedentemente (miosito.csr nell'esempio).
 Inserire le informazioni richieste, avendo cura di specificare Role: Web Server e una e-mail valida.
 Quando gli operatori della CA approveranno la richiesta arriveranno delle e-mail di conferma alla mail
specificata.
 Scaricare il certificato dal link indicato nella mail o accedendo a OpenCA.
Alcuni browser potrebbero dare problemi provando a installare il certificato piuttosto che scaricandolo. elinks è
testato come funzionante (digitare l'indirizzo indicato nella mail e scegliere "save"). In alternativa, accedere a OpenCA
e prelevare il certificato dalla lista dei certificati validi.
 E' ora possibile configurare il proprio web server per l'utilizzo del certificato. Nel caso di Apache2 bisognerà
indicare i path di chiave privata e certificato con queste direttive:
SSLCertificateFile /etc/apache2/ssl/certificato.pem
SSLCertificateKeyFile /etc/apache2/ssl/chiave.key

A questo punto i browser che considerano SR2camail come fidata non daranno alcun alert HTTPS nell'accesso
al dominio.
Per revocare un certificato sono necessari la propria chiave privata e il CRIN (pin per la revoca). Il CRIN viene inviato in
una mail cifrata quando il certificato viene rilasciato dalla CA. Per ottenerlo occorre decifrare la mail, seguendo i
seguenti passi:
 accedere alla propria webmail e aprire il messaggio OpenCA Certificate and PIN information
 selezionare View message details, Save Message
 eseguire:
openssl
smime
-decrypt
-in
smime.p7m
-recip
mioCert.pem
-inkey
miaPrivKey.pem
dove mioCert.pem e miaPrivKey.pem sono rispettivamente il proprio certificato e la propria chiave privata.
Decifrato il messaggio, accedere a OpenCA e utilizzare la funzione di revoca (User->Revoke Certificate), inserendo il
CRIN quando richiesto.
MAIL
I NTRODUZIONE
La posta elettronica viene implementata in Internet attraverso la cooperazione di due tipi di sottosistemi:


Mail User Agent (MUA)
Mail Transport Agent (MTA)
Capitolo: Parte seconda: SCHEDA TECNICA
R EVOCARE UN CERTIFICATO
11
Un MUA è un programma di gestione di posta (Outlook, Eudora, Mutt, etc.), operativo sul client, che deve:




Possedere un’interfaccia utente per l’inserimento, la composizione, la ricezione e la lettura dei messaggi.
Conoscere il protocollo per spedire i messaggi (SMTP) e quindi consegnarli ad una MTA per la trasmissione
Conoscere il protocollo POP3 e IMAP4
Conoscere la sintassi di composizione dei messaggi (RFC822 e MIME)
L’MTA funge da ponte tra due MUA, si occupa della ricezione di tutti i messaggi e del suo recapito, può essere
paragonato ad una centralina telefonica dove vengono smistate le chiamate.
L’MTA può essere:



un server SMTP (porta 25) che gestisce la spedizione e la ricezione dei messaggi verso e da altri server SMTP
Un server POP3 (porta 110) che gestisce la spedizione dei messaggi al client
un server IMAP4 (porta 143) che permette la gestione dei messaggi sul server dal client
I protocolli che garantiscono la maggior parte degli attuali servizi di posta elettronica sono l’SMTP, il POP3 e l’IMAP;
tutti e tre sul livello Applicazione (cinque) come l’http, l’ftp e il dns.
Il processo per portare una e-mail da una persona a un'altra all'interno di una rete o attraverso internet, comporta
l'utilizzo di diversi sistemi che cooperano tra loro. Ognuno di questi sistemi deve essere configurato correttamente.
Colui che spedisce una email utilizza un Mail User Agent (MUA), o client email, per spedire il messaggio attraverso uno
o più Mail Transfer Agents (MTA), l'ultimo dei quali lo consegnerà a un Mail Delivery Agent (MDA) per la consegna
nella casella di posta del destinatario, che la preleverà utilizzando un client email attraverso un server POP3 o IMAP.
OBBIETTIVI
L'obbiettivo è quello di installare un server di posta leggero e versatile come Postfix abbinato a Courier che invece
fornisce i sevizi di pop3, imap, pop3s, imaps e utilizza le Maildir. Per amministrare le caselle di posta ed i domini
utilizzeremo PostfixAdmin. I passi dell'installazione inizieranno con PostfixAdmin poiché fornisce delle tabelle
preconfezionate affinché Postfix funzioni correttamente e supporti features come il numero di alias e caselle di posta
predefinite per tutti i domini creati.
Capitolo: Parte seconda: SCHEDA TECNICA
I MPLEMENTAZIONE DI UN SERVIZIO E - MAIL
12
Le caselle di posta, usando questo meccanismo, verranno create al primo messaggio di posta ricevuto. PostfixAdmin di
default invia un messaggio di benvenuto (settato nel suo file di configurazione) da parte dell'amministratore del
dominio appena viene creata la casella via web e quindi generalmente la creazione della Maildir avverrà in questo
momento
PREREQUISITI : ANATOMIA DI POSTFIX
Postfix è un MTA progettato per essere sicuro e veloce: esso è costituito da numerosi demoni, ognuno dei quali si
occupa di un processo ben definito, che interagiscono con i processi utenti (sendmail, postqueue, postsuper, e così
via) e un vasto numero di programmi eseguiti in background. Solo i programmi che sono eseguiti in background sono
controllati dal demone master. Il lavoro del demone master è determinare quale lavoro c’è da fare e indirizzarlo
all’appropriato programma. Questo design modulare permette un più alto livello di sicurezza perché ogni programma
è eseguito con i privilegi più bassi rispetto al task che devono compiere.
Il processo master è un demone residente, che si occupa di richiamare di volta in volta gli altri processi: ad esempio, a
seguito di una richiesta di connessione SMTP, master invocherà il sottoprocesso smtpd, il quale si occupa di aprire
la connessione e di passare l'input al demone cleanup; quest'ultimo, a sua volta, si occupa di aggiungere (o
eventualmente modificare) eventuali header mancanti, per poi inserire il messaggio nella coda di arrivo.
Lo scopo di Postfix è quello di sostituire interamente Sendmail, mantenendone però in tutto e per tutto la
compatibilità: ciò significa che migrare un server da Sendmail a Postfix risulterà completamente trasparente ad ogni
altra applicazione! Come Sendmail, le mailbox corrispondono agli utenti di sistema operativo.
Potremmo immaginare l’intero sistema Postfix come un router. Questo potrebbe sembrare strano all’inizio, ma si
ricorda che il lavoro di un router è vedere l’ip di un pacchetto e determinare la destinazione dallo stesso indirizzo ip (e
possibilmente la sorgente), e poi scegliere la giusta interfaccia alla cui instradare il pacchetto verso la destinazione.
Postfix fa la stessa cosa con le mail , vede la destinazione del messaggio (l’ envelope recipient) e la sorgente (l’
envelope sender) per determinare l’applicazione che porterà il messaggio più vicino alla destinazione finale.
Capitolo: Parte seconda: SCHEDA TECNICA
ANATOMIA DI POSTFIX: LE ELLISSI GIALLE RAPPRESENTANO I VARI PROCESSI, I RETTANGOLI GIALLI SONO I FILE DELLE MAILBOX O DELLE CODE DI
POSTA, QUELLI AZZURRI SONO I FILE DI CONFIGURAZIONE
13
Vediamo più da vicino postfix continuando l’analogia fatta tra postfix e router; Postfix smista i messaggi da sorgenti
multiple e poi passa la mail a multiple destinazioni. Il messaggio potrebbe essere generato da sendmail in locale o
da connessioni SMTP o QMQP. La destinazione può essere, una mailbox locale o remota e il messaggio può essere
instradato tramite SMTP, LMTP o una pipe verso un programma.
Un router usa una tabella di routing che fa match tra indirizzi IP della rete per capire su quale interfaccia deve
inoltrare il pacchetto; Postfix fa la stessa cosa con l’indirizzo mail.
Capitolo: Parte seconda: SCHEDA TECNICA
In Postfix, le tabelle di lookup usate dai routers, sono chiamate maps e vengono usate, non solo per capire dove inviare
la mail, ma anche per imporre restrizioni sui clients, mittenti e destinatari. La figura sottostante illustra tipi di mappe
come : aliases, virtual e transport.
14
PARTE TERZA: FASE DI SETUP
ORGANIZZAZIONE
D’Amato Angelo – Eletto Antonio
Installazione della web mail con tutti i componenti necessari per fornire servizio
mail
Carotenuto Francesco – Scarpa Dario
Installazione del servizio ntp e CA
RISORSE HARDWARE
:
AMD Athlon 550 Mhz
Memoria Ram :
128MB
Scheda video
:
Matrox mga G200
Hard Disk
:
ATA Disk 19GB
Lettore cd
:
Philips 48X
Scheda di rete :
VT86C100A di VIA Technolologies, Inc.
Scheda audio
Ensoniq 5880 audiopci
:
Capitolo: Parte terza: FASE DI SETUP
processore
15
STRUMENTI SOFTWARE
SOFTWARE COMUNI
DEBIAN
Sistema Operativo
apache (apache ssl) 2.0
web server (comprendente moduli mod_ssl)
Mysql-server 5.0
database di riferimento per la gestione degli account di
posta e memorizzare i certificati
phpmyadmin 2.9.1.1-6
interfaccia web di gestione di mysql
Perl5
Linguaggio di script utilizzato da OpenCA e SquirrelMail
NTP
Ntpd
Network time protocol
CA
OpenCA
Framework che implementa il servizio web per gestire
una Certification Authority
MAIL
postfix 2.3.8-2
Server MTA
NOTE
Cyrus SASL 2.1.21
SASL authentication daemon.
Procmail 3.22
Viene usato per filtrare la posta in ingresso. Permette agli
utenti di definire delle regole che vengono confrontate
con i messaggi di posta per realizzare delle funzioni
specifiche. E’ facilmente integrabile con l’ MTA.
Fetchmail 6.25
E’ un client IMAP e POP che dà la possibilità agli utenti di
scaricare automaticamente la posta da server remoti e di
salvarla nelle proprie caselle di posta locali.
Capitolo: Parte terza: FASE DI SETUP
Postfix utilizza una serie di piccoli programmi per
effettuare il lavoro di delivery di posta, in opposizione a
sendmail che utilizza un approccio monolitico (un solo
programma effettua tutti i lavori). Il risultato di questa
tecnica e che risulta essere uno dei server mail più veloci
e sicuri (meno soggetto a bug in teoria). La
configurazione di questo server rispetto a sendmail è
molto più facile.
16
SpamBayes 1.1a1 * (facoltativo)
E’ uno strumento per la prevenzione dello spam
all'interno delle caselle di posta elettronica. Grazie a
questo software l'utente ha la possibilità di evitare di
scaricare le fastidiose email pubblicitarie ricevute per
email. Il programma rileva automaticamente le email
spazzatura e le elimina, facendo risparmiare grandi
quantità di tempo nella fase di download.
Mutt 1.4.2.1 * (facoltativo)
E’ un programma leggero ma molto efficiente per leggere
la posta da console.
postfix Admin 2.2.0
Interfaccia web di gestione per postfix.
Courier-imap 4.0.4
E’ un server IMAP veloce e scalabile che supporta le
caselle in formato maildir . Si tratta dello stesso server
IMAP incluso nel più ampio progetto Courier, ma
configurato come server standalone per essere usato
insieme ad altri MTA, come per l'appunto Postfix.
Courier-authlib 0.57
E’ una libreria che fornisce un servizio di autenticazione
per le altre componenti di Courier.
squirrelMail
E’ un' applicazione che implementa un client webmail in
grado di accedere ad un account di posta elettronica
utilizzando un comune browser web. (richiede imap-server,
Capitolo: Parte terza: FASE DI SETUP
perl, e php)
17
INSTALLAZIONE SOFTWARE
SOFTWARE COMUNI
S CELTA DEL S ISTEMA O PERATIVO
La scelta del SO è caduta su Debian Gnu/Linux 4.0 (Etch). Debian è una distribuzione che da sempre si
contraddistingue per l'accuratezza e la cautela con cui i pacchetti software vengono inseriti nel branch "stable" della
distribuzione, e per la velocità con cui vengono fornite le patch di sicurezza per tali software (attraverso il sistema di
gestione dei pacchetti del sistema, APT). Debian "stable" si rivela quindi una scelta sensata in ambito server, dove la
stabilità e la sicurezza dei servizi sono requisiti fondamentali da soddisfare (a scapito magari di qualche feature
disponibile solo nelle ultime versioni di una certa applicazione).
I NSTALLAZIONE
Abbiamo proceduto con un'installazione base Debian piuttosto standard, dal CD-ROM principale della distribuzione
"stable" corrente, dopo averne verificato l'integrità calcolandone l'md5sum. Abbiamo prestato attenzione a
partizionare l'hard disk a nostra disposizione dividendo il file system, com'e' naturale su una macchina server, in modo
da limitare gli effetti di alcuni attacchi DoS. Se ad esempio il mailspool (o in genere una directory direttamente o
indirettamente user-writable) non è separata dal resto del file system, è possibile creare seri problemi al sistema col
semplice riempimento dello spazio su disco.
A GGIORNAMENTO
Completata la base-install, abbiamo rimosso i pacchetti non ritenuti utili e disattivato i servizi di rete attivi per default.
A questo punto abbiamo connesso la macchina a Internet e configurato APT per effettuare gli aggiornamenti di
sicurezza dai repository ufficiali Debian. Sebbene una fresh-install di Debian stable abbia buone probabilità di essere
"secure by default" per le policy adottate dalla distribuzione, è bene disattivare i servizi o negarne l'accesso tramite
firewall prima di collegare il sistema in rete, in modo da evitare di esporre servizi non aggiornati e quindi
potenzialmente vulnerabili nella finestra temporale dell'update.
Va ricordato che l'integrità dei pacchetti scaricati dai repository Debian via APT è automaticamente verificata tramite
un meccanismo di firma digitale.
Dati i presupposti della simulazione, abbiamo ovviamente ignorato gli accorgimenti relativi alla "sicurezza fisica" del
server, assumendo che, ad esempio, non sia da considerare l'eventualità che un attaccante possa accedere alla
macchina e fare il boot da un dispositivo rimovibile, o smontare l'hard disk e copiare/alterare dei file. Per il resto,
abbiamo operato una serie di piccoli accorgimenti seguendo il "Securing Debian Manual", cercando di ottenere un
buon compromesso tra usabilità/manutenibilità e sicurezza. Varie contromisure consigliate sono state ignorate
considerando il fatto che non è previsto l'accesso interattivo al sistema da parte di utenti (eccetto i membri del gruppo
in laboratorio). Alcuni accorgimenti possibilmente adatti al nostro contesto di esecuzione sono stati rimandati alla fase
di tu.
F IREWALL
Per questa fase di setup iniziale ci siamo affidati a un front-end di iptables molto semplice e intuitivo, firestarter. Ci
riserviamo di rifinire la configurazione manualmente durante la fase di tuning, per ora ci siamo limitati a bloccare tutte
le connessioni inbound eccetto quelle sulle porte dei servizi da rendere disponibili all'esterno:
porta 80 TCP (HTTP)
porta 443 TCP (HTTPS)
porta 123 UDP (NTP)
Capitolo: Parte terza: FASE DI SETUP
H ARDENING
18
S CANNING VULNERABILITÀ NOTE
Una volta ultimata la configurazione dei servizi è stato fatto uno scan completo del sistema con nessus (con tanto di
plugins addizionali della sottoscrizione "free" offerta). Lo scan è stato ovviamente effettuato da un altro host
temporaneamente connesso alla LAN, per avere la prospettiva di un sistema client. Alcuni piccoli accorgimenti alla
configurazione di Apache sono stati effettuati in base al report di Nessus.
NTP
L'installazione del server NTP sotto Debian consiste nella semplice installazione del relativo pacchetto
apt-get install ntp
Dovendo rendere indipendente la nostra simulazione da Internet e quindi dall'aggiornamento subordinato ad altri
server NTP online, abbiamo poi configurato il daemon in modo che si considerasse di "strato 1" e comunicasse ai client
il valore del suo clock locale.
Anche se questo non sarà generalmente corretto, l'importante è che faccia da punto di riferimento al mini-world della
"nostra" Internet.
#modifiche a /etc/ntp.conf
server 127.127.1.0 #undisciplined local clock
fudge 127.127.1.0
stratum 1
INSTALLAZIONE CA
Di seguito riportiamo i passi necessari alla realizzazione dell'installazione dell'infrastruttura OpenCA su un sistema
operativo Debian/Linux, questi passi sono stati ottenuti dopo svariate prove d'installazione effettuate, seguendo varie
guide trovate in rete, da un paio di queste sono riuscito a farne una che come risultato finale portasse ad una
installazione valida.
I repository dei pacchetti che ho usato sono quelli disponibili nella distribuzione. Occorre effettuare un aggiornamento
degli stessi prima di cominciare con l'installazione dei pacchetti necessari, utilizzando il comando apt-get update.
Dato che alcuni software saranno compilati da sorgenti, dobbiamo predisporre il sistema con i pacchetti adeguati:
apt-get install g++ gcc make libssl-dev ncftp ftp unzip bzip2 zip nmap ss
apt-get install libwww-perl libxml-perl libxml-regexp-perl libdbi-perl \
perl perl-modules libldap2 libldap2-dev libdbd-mysql-perl \
libauthen-sasl-perl libx500-dn-perl libcgi-session-perl \
libconvert-asn1-perl libdigest-md2-perl libdigest-md4-perl \
libdigest-sha1-perl libio-socket-ssl-perl libio-stringy-perl \
libmime-lite-perl libmime-perl libmailtools-perl libnet-server-perl \
liburi-perl libxml-twig-perl libintl-perl libnet-ldap-perl \
libdigest-hmac-perl libgssapi-perl dbishell libintl-xs-perl \
libxml-sax-perl libcompress-zlib-perl libunicode-map8-perl \
libunicode-string-perl libterm-readline-gnu-perl \
libterm-readline-perl-perl libhtml-format-perl libtie-ixhash-perl \
libxml-xpath-perl perl-doc
Capitolo: Parte terza: FASE DI SETUP
OpenCA richiede come prerequisiti alcuni pacchetti perl, necessari per il suo funzionamento:
19
Dato che la gestione/configurazione/richiesta dei certificati avverrà tramite interfaccia web, occorre installare anche
un webserver (Apache) e per sicurezza dei dati scambiati, abiliteremo il protocollo SSL. Per comodità mia ho aggiunto
anche il modulo php5, che non è comunque necessario al funzionamento di OpenCA.
apt-get install libapache-mod-perl libapache-mod-ssl libapache-mod-php5 \
php5-mysql php5-gd php-pear xml-core libft-perl php5-dev libgd-tools
Dobbiamo installare e configurare Apache in maniera tale da usare i moduli citati prima.
apt-get install apache
a2enmod perl
a2enmod php5
Per la registrazione delle informazioni personali e dei certificati, ci appoggiamo ad un db MySQL.
apt-get install mysql-server
Adesso possiamo procedere con l'installazione di OpenCA, che avverrà tramite i suoi sorgenti, Pertanto occorre
scaricarli ed estrarli. Per comodità saranno creati due file eseguibili per automatizzare le procedure di installazione.
cd /tmp
wget https://www.openca.org/alby/download?target=openca-0.9.3-rc1.tar.gz
check-certificate
tar xvfz openca-0.9.3-rc1.tar.gz
cd openca-0.9.3-rc1
touch config_ra
touch config_ca
chmod 755 config_ra
chmod 755 config_ca
--no-
Creiamo il primo file per automatizzare l'installazione.
e, all'interno di esso, inseriamo:
#!/bin/sh
./configure --prefix=/usr/local/openca --with-web-host=localhost \
--with-httpd-user=www-data --with-httpd-group=www-data \
--with-ext-prefix=/usr/local/openca.0.9.3 --with-htdocs-fs-prefix=/var/www/ \
--with-cgi-fs-prefix=/usr/lib/cgi-bin --with-ca-organization=TEST \
--with-ca-locality=Palermo --with-ca-country=IT \
--with-module-prefix=/usr/local/openca/modules --enable-dbi --disable-db \
--disable-rbac --with-hierarchy-level=ra \
--with-service-email-account=alessandro.pensato@areanetworking.it \
--with-db-type=mysql --with-db-name=openca --with-db-port=3306 \
--with-db-user=openca --with-db-passwd=openca
make
make install-ra
make install-pub
make install-node
Ora possiamo eseguirlo.
./config_ra
Capitolo: Parte terza: FASE DI SETUP
nano config_ra
20
Creiamo il secondo file per automatizzare l'installazione.
nano config_ca con all'interno:
#!/bin/sh
./configure --prefix=/usr/local/openca --with-web-host=localhost \
--with-httpd-user=www-data --with-httpd-group=www-data \
--with-ext-prefix=/usr/local/openca.0.9.3 --with-htdocs-fs-prefix=/var/www/ \
--with-cgi-fs-prefix=/usr/lib/cgi-bin --with-ca-organization=SR2camail \
--with-ca-locality=Salerno --with-ca-country=IT \
--with-module-prefix=/usr/local/openca/modules --enable-dbi --disable-db \
--disable-rbac --with-hierarchy-level=ca \
[email protected] \
--with-db-type=mysql --with-db-name=openca --with-db-host=localhost \
--with-db-port=3306 --with-db-user=openca --with-db-passwd=openca
make
make install-ca
make install-node
Eseguiamo anche questo:
./config_ca
Come detto in precedenza, useremo MySQL per memorizzare i dati personali e dei certificati, quindi occorre creare i
database.
mysql -uroot -p
create database openca;
create database openra;
grant all privileges on openca.* to openca@localhost identified by 'openca';
grant all privileges on openra.* to openra@localhost identified by 'openra';
exit;
Modifichiamo il file di configurazione di OpenCA. I relativi campi devono essere come i seguenti.
ca_organization SR2camail
ca_locality Salerno
ca_country IT
service_mail_account [email protected]
httpd_host localhost
httpd_port :443
dbmodule DBI
db_type mysql
db_name openca
db_host localhost
db_port 3306
db_user openca
db_passwd openca
Capitolo: Parte terza: FASE DI SETUP
nano /usr/local/openca/OpenCA/etc/config.xml
21
Finaliziamo la configurazione di OpenCA e predisponiamo il sistema alla sua esecuzione ad ogni boot.
cd /usr/local/openca/OpenCA/etc/
./configure_etc.sh
cp /usr/local/openca/OpenCA/etc/openca_rc /etc/init.d/
cd /etc/init.d/
update-rc.d openca_rc defaults
./openca_rc start
Costruiamo la coppia di chiavi che saranno utilizzate dalla CA.
mkdir /etc/apache/ssl
cd /etc/apache/ssl
openssl req -x509 -newkey rsa:2048 -keyout cakey.pem -days 3650 -out cacert.pem
-nodes
Inoltre sono state necessarie effettuare alcuni passi fondamentali, per far si che OpenCA potesse funzionare
adeguatamente, sotto Apache 2, tali passi sono necessari per poter effettuare le seguenti operazioni:

Permettere ad Apache 2 di accettare richieste https.

Fare il redirect coatto, di richieste http in https.
Per quanto riguarda la prima operazione i passi compiuti sono essenzialmente: Fare una copia di '/etc/apache2/sitesavailable/default' denominata solitamente 'ssl'
cd /etc/apache2/sites-available/
cp default ssl
Abilitare il sito, questo lo si può fare con un link simbolico alla configurazione da /etc/apache2/sites-enabled/. Per far
ciò Apache2 ha un comando specifico:
a2ensite ssl
Abilitiamo il modulo ssl in Apache2
a2enmod ssl
Aggiungere la seguente riga in /etc/apache2/ports.conf
Listen 443
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
...
</VirtualHost>
Riavviare Apache2 digitando:
/etc/init.d/apache2 restart
Dalla barra del browser digitare https://localhost/
Capitolo: Parte terza: FASE DI SETUP
Modificare /etc/apache2/sites-available/ssl come segue:
22
La seconda operazione invece consiste nell'aggiungere al file.htaccess le seguenti righe di configurazione:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Ed eseguire il seguente comando per poter avviare il modulo mod_rewrite, che consente di poter elaborare
e righe scritte sopra
a2enmod rewrite
INSTALLAZIONE WEB MAIL
I NSTALLAZIONE DI M Y SQL:
$ apt-get install mysql-server mysql-client
I NSTALLAZIONE DI P OSTFIX A DMIN :
Occorre scaricare PostfixAdmin dal seguente link:
http://sourceforge.net/project/showfiles.php?group_id=191583&package_id=225300&release_id=595813
si tratta di un pacchetto di tipo deb appositamente compilato per debian può essere installato utilizzando la classica
utility dpkg. Dopo l’installazione viene generato automaticamente un link simbolico all’interno della document root
del server web Apache. Il programma infatti è direttamente accessibile attraverso una interfaccia web.
Prima di procedere copiamo il file di configurazione di esempio:
# cp $document-root/postfixadmin/config.inc.php.sample $document-root /postfixadmin/config.inc.php
settiamo i permessi giusti per i file e directory:
# chown -R www-data.www-data *
# cd $document-root /postfixadmin
# chmod 640 *.php *.css
# cd $document-root /postfixadmin/admin/
# cd $document-root /postfixadmin/images/
# chmod 640 *.gif *.png
# cd $document-root /postfixadmin/languages/
# chmod 640 *.lang
# cd $document-root /postfixadmin/templates/
# chmod 640 *.tpl
# cd $document-root /postfixadmin/users/
Capitolo: Parte terza: FASE DI SETUP
# chmod 640 *.php .ht*
23
# chmod 640 *.php
<?php
if (ereg ("config.inc.php", $_SERVER['PHP_SELF']))
{
header ("Location: login.php");
exit;
}
$CONF['configured'] = true;
$CONF['postfix_admin_url'] = '';
$CONF['postfix_admin_path'] = '';
$CONF['default_language'] = 'it';
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'pxadmin';
$CONF['database_password'] = 'password';
$CONF['database_name'] = 'postfix';
$CONF['database_prefix'] = '';
$CONF['admin_email'] = '[email protected]';
$CONF['smtp_server'] = 'localhost';
$CONF['smtp_port'] = '25';
$CONF['encrypt'] = 'md5crypt';
$CONF['generate_password'] = 'NO';
$CONF['page_size'] = '10';
$CONF['default_aliases'] = array (
'abuse' => '[email protected]',
'hostmaster' => '[email protected]',
'postmaster' => '[email protected]',
'webmaster' => '[email protected]'
);
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'YES';
$CONF['aliases'] = '10';
$CONF['mailboxes'] = '10';
$CONF['maxquota'] = '10';
$CONF['quota'] = 'NO';
$CONF['quota_multiplier'] = '1024000';
$CONF['transport'] = 'NO';
$CONF['vacation'] = 'NO';
$CONF['vacation_domain'] = 'autoreply.camail.it';
$CONF['alias_control'] = 'NO';
$CONF['special_alias_control'] = 'YES';
$CONF['logging'] = 'YES';
$CONF['show_header_text'] = 'NO';
$CONF['header_text'] = ':: Postfix Admin ::';
$CONF['show_footer_text'] = 'YES';
$CONF['footer_text'] = 'Return to camail.it';
$CONF['footer_link'] = 'http://www.camail.it';
$CONF['welcome_text'] = <<<EOM
Hi,
Welcome to your new account.
EOM;
?>
Capitolo: Parte terza: FASE DI SETUP
editiamo config.inc.php affinché sia come segue:
24
PostfixAdmin fornisce uno script per creare il database al quale si appoggeranno poi Postfix e Courier:
$ mysql -u root -p < $document-root/postfixadmin/DATABASE_MYSQL.TXT
Per motivi di sicurezza occorre rimuovere il file di configurazione setup.php subito dopo che questa sia stata eseguita:
$ rm $document-root/postfixadmin/setup.php
Bisogna poi configurare la password di accesso per la directory /admin del nostro server aggiungendo al file .htaccess
in $document-root/postfixadmin/admin le seguenti righe:
Capitolo: Parte terza: FASE DI SETUP
AuthUserFile /var/www/postfixadmin/admin/.htpasswd
AuthGroupFile /dev/null
AuthName "Postfix Admin"
AuthType Basic
<limit GET POST>
require valid-user
</limit>
25
I NSTALLAZIONE DI P OSTFIX :
$ apt-get install postfix postfix-mysql
Per la configurazione occorre modificare il file /etc/postfix/main.cf come segue:
home_mailbox = Maildir/
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:113
virtual_mailbox_base = /usr/local/virtual
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 51200000
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 109
virtual_transport = virtual
virtual_uid_maps = static:109
# Additional for quota support
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes
unknown_local_recipient_reject_code = 450
Ovviamente i parametri riguardanti uid e gid sono strettamente dipendenti dalle configurazioni del nostro sistema.
Vediamo invece ora i singoli file che abbiamo specificato nella configurazione di Postfix:
user = postfix
password = postfix
hosts = 127.0.0.1
dbname = postfix
table = alias
select_field = goto
where_field = address
Capitolo: Parte terza: FASE DI SETUP
/etc/postfix/mysql_virtual_alias_maps.cf
26
/etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = postfix
hosts = 127.0.0.1
dbname = postfix
table = domain
select_field = description
where_field = domain
/etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix
hosts = 127.0.0.1
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
E’ quindi possibile riavviare Postfix e controllare che non dia errori nei log:
Capitolo: Parte terza: FASE DI SETUP
$ /etc/init.d/postfix restart
$ cat /var/log/mail.log
Apr 25 11:12:34 rproxy postfix/postfix-script: starting the Postfix mail system
Apr 25 11:12:34 rproxy postfix/master[23274]: daemon started -- version 2.1.5
27
I NSTALLAZIONE DELLE COMPONENTI DI C OURIER :
Anche queste possono essere installate attraverso il tool apt-get di Debian:
$ apt-get install courier-imap courier-pop courier-authdaemon courier-authmysql
Occorre modificare i seguenti file di configurazione:
/etc/courier/authdaemonrc
authmodulelist="authmysql "
authmodulelistorig="authmysql"
daemons=5
authdaemonvar=/var/run/courier/authdaemon
/etc/courier/authmysqlrc
Si può, a questo punto, riavviare courier-authdaemon:
$ /etc/init.d/courier-authdaemon restart
Capitolo: Parte terza: FASE DI SETUP
MYSQL_SERVER
localhost
MYSQL_USERNAME
postfix
MYSQL_PASSWORD
postfix
MYSQL_CRYPT_PWFIELD password
MYSQL_DATABASE postfix
MYSQL_GID_FIELD '113'
MYSQL_HOME_FIELD '/usr/local/virtual/'
MYSQL_LOGIN_FIELD username
MYSQL_MAILDIR_FIELD maildir
MYSQL_NAME_FIELD name
MYSQL_OPT 0
MYSQL_PASSWORD postfix
MYSQL_SERVER 127.0.0.1
MYSQL_SOCKET /var/run/mysqld/mysql.sock
MYSQL_PORT 3306
MYSQL_UID_FIELD '109'
MYSQL_USERNAME postfix
MYSQL_USER_TABLE mailbox
MYSQL_QUOTA_FIELD quota
28
T ESTARE C OURIER -IMAP:
# telnet mail.example.org 143
Trying 85.34.111.52...
Connected to host52-111.pool8534.interbusiness.it.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT
THREAD=REFERENCES SORT QUOTA ACL ACL2=UNION XMAGICTRASH] Courier-IMAP ready.
Copyright 1998-2004 Double Precision, Inc. See COPYING for distribution information.
AB LOGIN "[email protected]" "password"
AB OK LOGIN Ok.
BC SELECT "Inbox"
* FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent)
* OK [PERMANENTFLAGS (\Draft \Answered \Flagged \Deleted \Seen)] Limited
* 2 EXISTS
* 2 RECENT
* OK [UIDVALIDITY 1114365001] Ok
* OK [MYRIGHTS "acdilrsw"] ACL
BC OK [READ-WRITE] Ok
ZZZZ LOGOUT
* BYE Courier-IMAP server shutting down
ZZZZ OK LOGOUT completed
Connection closed by foreign host.
T ESTARE C OURIER -POP:
$ telnet localhost 110
Trying 127.0.0.1...
Connected to mail.example.org.
Escape character is '^]'.
+OK Hello there.
user [email protected]
+OK Password required.
pass password
+OK logged in
QUIT
Connection closed by foreign host.
Esiste la possibilità di installare le rispettive versioni di IMAP e POP in SSL con il comando:
Capitolo: Parte terza: FASE DI SETUP
$ apt-get install courier-pop-ssl courier-imap-ssl
29
Dopo il download ci troveremo davanti a questa schermata:
SSL certificate required
POP and IMAP over SSL requires a valid, signed, X.509 certificate.
During the installation of courier-pop-ssl resp. courier-imap-ssl a
self-signed X.509 certificate will be generated if necessary. For
production use the X.509 certificate must be signed by a recognized
certificate authority, in order for mail clients to accept the
certificate. The default locations for this certificate is
/etc/courier/pop3d.pem resp. /etc/courier/imapd.pem.
dopo la quale verranno generati i certificati.
Per una maggiore descrizione e utilizzo di essi si rimanda all'articolo sul sito:
http://www.sistemistiindipendenti.org/modules/news/article.php?storyid=84
P OSTFIX SASL:
Un passo oramai obbligatorio è quello di configurare il nostro MTA per l'autenticazione SASL affinché solo utenti
autenticati possano inviare posta.
Installazione del supporto SASL:
$ apt-get install postfix-tls sasl2-bin libsasl2 libsasl2-modules*
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,
reject_rbl_client opm.blitzed.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client sbl-xbl.spamhaus.org
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
Capitolo: Parte terza: FASE DI SETUP
Aggiungiamo le seguenti righe al file /etc/postfix/main.cf :
30
Configuriamo ora il file smtpd.conf per dirgli che metodo di password check deve usare e il tipo di autenticatore da
usare. La posizione di questo file varia da distribuzione a distribuzione, nel caso di debian dovrà trovarsi al seguente
path:
/etc/postfix/sasl/smtpd.conf
NB. Il file non esiste e quindi va creato.
Ecco come dovrà apparire:
pwcheck_method:authdaemond
log_level: 10
mech_list: LOGIN PLAIN
authdaemond_path:/var/run/courier/authdaemon/socket
NB.Anche il percorso del socket di authdaemon cambia nelle varie distribuzioni. Spesso capita anche che i permessi
del socket non siano quelli giusti. Le solizioni funzionanti sono due:
$ chmod -R a+rwx /var/run/courier/authdaemon
altrimenti:
$ chown root.postfix /var/run/courier/authdaemon
Un esempio di autenticazione:
Apr 26 18:39:50 rproxy postfix/smtpd[16743]: connect from host84253.pool8248.interbusiness.it[82.48.253.84]
Apr 26 18:39:51 rproxy postfix/smtpd[16743]: 0D99A4FDFA: client=host84253.pool8248.interbusiness.it[82.48.253.84], sasl_method=PLAIN,
[email protected]
Apr 26 18:39:51 rproxy postfix/cleanup[26346]: 0D99A4FDFA: messageid=<[email protected]>
size=598, nrcpt=1 (queue active)
Apr 26 18:39:51 rproxy postfix/smtpd[16743]: disconnect from host84253.pool8248.interbusiness.it[82.48.253.84]
Apr 26 18:39:52 rproxy postfix/smtp[11935]: 0D99A4FDFA: to=<[email protected]>,
relay=mx.email.it[80.247.70.43], delay=2, status=sent (250 Ok: queued as 6A7D1100035)
Apr 26 18:39:52 rproxy postfix/qmgr[17882]: 0D99A4FDFA: removed
Capitolo: Parte terza: FASE DI SETUP
Apr 26 18:39:51 rproxy postfix/qmgr[17882]: 0D99A4FDFA: from=<[email protected]>,
31
A questo punto dovreste essere in grado di usare il vostro server di posta per più domini e con una gestione molto più
semplificata.
I NSTALLAZIONE DI S QUIRREL M AIL
Siamo arrivati alla fase finale del nostro lavoro inteso a offrire un servizio di web mail  . La nostra attenzione è
ricaduta su SquirrelMail perché è una soluzione modulare, flessibile e semplice da installare e configurare tramite lo
script conf.pl . Questo servizio si appoggia completamente al protocollo IMAP (nel nostro caso offertoci da courierIMAP) . L’unica cosa che manca è la gestione delle iscrizioni di nuovi utenti e quello che si è dovuto fare è di
implementare una soluzione ad hoc.
CONCLUSIONI
Concludendo la nostra esperienza con OpenCA, dobbiamo dire che questo si è rivelato (inaspettatamente) deludente
sotto vari aspetti.

l'installazione è macchinosa e forza ad effettuare manualmente una serie di passaggi che potrebbero
tranquillamente essere automatizzati

l'interfaccia è poco usabile e confonde facilmente gli utenti: procedure che dovrebbero essere ovvie non lo
sono

non è previsto alcun genere di controllo (tipo CAPTCHA) per evitare l'inserimento automatico di richieste
o Infatti la nostra CA è stata soggetta ad un attacco simile, che abbiamo risolto (approssimativamente,
per mancanza di tempo) con uno script per la ripulitura del database colpito.
o Una misura risolutiva di tale problema comporterebbe la modifica del front-end web di OpenCA (ad
esempio inserendo un CAPTCHA), ma probabilmente sarebbe meglio investire il tempo necessario a
tale modifica per cercare soluzioni alternative a OpenCA stesso, visti i suoi altri problemi.
** script cleaner.php *******************************************************************************
<?php
// cancella richieste new
mysql_select_db("openca") or die(mysql_error());
$query = "SELECT * FROM `request` WHERE STATUS = 'NEW'";
$res = mysql_query($query);
$mailbox = Array();
while ( $row = mysql_fetch_array($res) ) {
$mailfield = $row['dn'];
$start = stripos($mailfield, "=")+1;
Capitolo: Parte terza: FASE DI SETUP
mysql_connect("localhost", "root", "PASSHERE") or die(mysql_error());
32
$end = stripos($mailfield, ",");
$addr = substr($mailfield,$start, $end-$start);
$mailbox[] = $addr;
}
$query = "DELETE FROM `request` WHERE STATUS = 'NEW'";
mysql_query($query) or die(mysql_error());
mysql_select_db("postfix") or die(mysql_error());
// cancella mailboxes relative
foreach ($mailbox as $mb) {
$query = "DELETE FROM `mailbox` WHERE username = '$mb'";
mysql_query($query) or die(mysql_error());
$query = "DELETE FROM `alias` WHERE address = '$mb'";
mysql_query($query) or die(mysql_error());
$cmd = "rm -rf /usr/local/virtual/camail.it/".$mb."<br>";
echo $cmd;
}
?>
************************************************************************************************

non siamo riusciti in alcun modo a configurare la comunicazione di OpenCA col sottosistema di
posta: sebbene la documentazione preveda la possibilità di richiamare sendmail per trasmettere i
messaggi, la direttiva di configurazione coinvolta sembra non fare nulla. Il nostro workaround è stato
uno script in cron che ogni minuto legge i messaggi scritti da OpenCA in una sua directory "outbox",
li gira a postfix per l'invio e li sposta in una directory "sent".
#!/bin/sh
SENDMAIL=/usr/lib/sendmail
OPENCADIR=/usr/local/openca/OpenCA/var/mail
DEFAULT=$OPENCADIR/default
CRINS=$OPENCADIR/crins
OPENCADIRSENT=/usr/local/openca/OpenCA/var/mail/sent
DEFAULTSENT=$OPENCADIRSENT/default
Capitolo: Parte terza: FASE DI SETUP
** script mandamail.sh *****************************************************************************
33
CRINSSENT=$OPENCADIRSENT/crins
for x in $DEFAULT/*.msg
do
$SENDMAIL -t < $x
mv $x $DEFAULTSENT/
done
for x in $CRINS/*.msg
do
$SENDMAIL -t < $x
mv $x $CRINSSENT/
Capitolo: Parte terza: FASE DI SETUP
done
34
FONTI BIBLIOGRAFICHE
CA
[http://www.areanetworking.it/index_docs.php?title=Installazione_di_OpenCA]
[http://www.openca.org]
MAIL
[http://www.linuxjournal.com/article/9454]
[http://www.pluto.it/files/journal/pj0201/postfix.htm]
[http://www.postfix.org/anatomy.html]
Capitolo: Parte terza: FASE DI SETUP
[http://postfixadmin.org]
35
PARTE QUARTA: COMMESSE
Commessa 1 : access point NIC
DESCRIZIONE
Era richiesto la realizzazione di una wi-fi area per l’aereoporto internazionale di Salerno
SOLUZIONE PROPOSTA
Un access point offre la wi-fi area gestendo la registrazione degli utenti tramite
un’applicazione web accessibile a servizi.salernoflies.com che fa uso di transazioni sicure.
LAVORO COMPIUTO
Abbiamo controllato la correttezza dei dati inseriti nella richiesta di certificato e provveduto ad
approvarla.
GRUPPI COINVOLTI
NIC ha configurato l’access point, realizzato l’applicazione web e richiesto il certificato, che
noi abbiamo rilasciato.
DESCRIZIONE
Era richiesto la realizzazione e il setup di un portale di e-commerce sicuro per la vendita di
frutta esotica. Il nostro ruolo è stato quello di fornire servizi di mail e rilasciare il certificato per
il web server.
SOLUZIONE PROPOSTA
Sulla homepage di CaMail è descritta la procedura per richiedere una mailbox e per
effettuare una richiesta di certificato per web server, che è stata seguita dai webmaster di tutti
frutti.it
LAVORO COMPIUTO
Abbiamo controllato la correttezza dei dati inseriti nella richiesta di certificato e provveduto ad
approvarla.
GRUPPI COINVOLTI
ISP1 ha realizzato il portale web. Il NIC ha provveduto a registrare il dominio tuttifrutti.it e noi
abbiamo fornito mailbox e certificato.
Capitolo: Parte quarta: COMMESSE
Commessa 2 : tuttifrutti.it
36