Laboratorio II: Sistemi Operativi - a.a. 1998/99
Sviluppo di un proxy per un servente POP (Post Office Protocol)
Sono facoltative le seguenti richieste
(in ordine crescente di importanza):
1) istallazione automatica. Si richiede di automatizzare
la procedura descritta nel file INSTALL accluso nel sorgente del qpopper.
Uno script in perl dovrebbe eseguire automaticamente le indicazioni contenute
nel file.
2) file di log. Il proxy potrebbe registrare in un suo
file di log vari tipi di informazioni, ad esempio solo le connessioni,
le richieste eseguite da ogni connessione, il contenuto dei messaggi, ecc.
Si richiede sia di definire le informazioni utili da mantenere sia di estendere
il proxy con questa funzione.
3) Valutazione delle prestazioni.
3.a)Si richiede di valutare "il costo globale" dovuto
all'introduzione del proxy. Ad esempio, si potrebbe misurare e confrontare
il tempo impiegato per leggere una email di varie dimensioni senza/con
il proxy. Data la necessita' di isolare l'errore di misura introdotto dal
carico di fondo della rete dei laboratori, una misura dal vivo risulta
complessa, bisognerebbe pero' almeno descrivere come una misura del genere
puo' essere impostata.
3.b) Si richiede la comparazione fra la versione monoprocesso
e quella multiprocesso. Descrivere almeno come la misura puo' essere eseguita.
Introduzione
Normalmente, gli utenti accedono la propria posta, mail, leggendo un file
sulla macchina dove e' stata "consegnata" tramite il protocollo SMTP (Simple
Mail Transfer Protocol). A volte e' utile usare un meccanismo diverso basato
su un servente, mail server, che mantiene e distribuisce su richiesta la
posta ai singoli utenti (tipicamente questo schema e' utilizzato dai provider
Internet). Il protocollo POP (
RFC 1725) permette di accedere la
propria posta elettronica gestita da un mail server. Esistono diversi programmi
che possono svolgere le funzioni di clienti POP. Tra i piu' noti vi sono
Eudora ed i Web browser piu' diffusi: Netscape, Internet Explorer.
Per controllare gli accessi ed evitare che si possa leggere la posta
elettronica di altri utenti, il protocollo POP richiede l'autenticazione
dell'utente. In genere il meccanismo di controllo degli accessi e' lo stesso
che viene comunemente utilizzato per l'accesso interattivo ai sistemi:
la coppia login,password.
Poiche' in molti casi la password viaggia in "chiaro" tra il cliente
ed il server, si ha un potenziale problema di sicurezza perche' la password
puo' essere intercettata e riutilizzata da altri (e non solo per l'accesso
alla posta elettronica).
Esistono implementazioni del POP che cercano di risolvere questo problema
ricorrendo a Kerberos o sfruttando password "non riutilizzabili" (APOP).
Purtroppo queste varianti sicure non sono ampiamente diffuse o supportate.
In particolare, non e' possibile utilizzare come POP client i browser piu'
diffusi se l'autenticazione sul server e' di tipo APOP.
Scopo del progetto
Lo scopo del progetto e' lo studio e la realizzazione in Perl di un
proxy
che supporti il meccanismo di autenticazione APOP e che quindi consenta
l'utizzo sicuro di un qualsiasi browser come cliente POP. In particolare,
il proxy deve essere in grado di ricevere la password in chiaro inviata
dal browser utilizzato dal cliente e seguire la procedura APOP per accedere
al mail server reale. Una volta autenticato il cliente in modo sicuro sul
mail server, e' necessario:
-
ricevere i comandi POP inviati dal browser,
-
girare le richieste al POP server
-
ricevere le risposte (compresi eventuali codici di errore!)
-
girare le risposte al browser
Si richiede lo sviluppo delle seguenti due versioni:
-
Monoprocesso: un singolo processo che gestisce multiple connessioni
-
Monoconnessione: un processo per ogni connessione (i processi multipli
sono supervisionati da un processo daemon).
Particolare attenzione deve essere rivolta all'
affidabilita' del
proxy. Un altro importante elemento di valutazione sara' la flessibilita'
del disegno e del codice che devono essere facilmente adattabili a modifiche
del POP e/o all'utilizzo come proxy di altri protocolli.
A completamento del progetto ogni gruppo dovra' consegnare una documentazione
su carta con chiara l'indicazione dei componenti del gruppo (nome, matricola,
anno accademico e recapito). La documentazione dovra' almeno contenere
le informazioni dettagliate di seguito:
Bibliografia (solo consultazione)
-
Building Internet Firewalls, D.B. Chapman and E.D. Zwicky, O'Reilly &
Ass. 1995
-
TCP/IP Network Administration, 2nd Ed., C. Hunt, O'Reilly & Ass., 1998
-
Advanced Perl Programming, S. Srinivasan, O'Reilly & Ass., 1997
-
Unix Network Programming, R.Stevens, Prentice Hall Software Series, 1990
-
POP3: http://www.eudora.com/freeware
definito in rfc1725