Posta elettronica e Kerberos

L’ultimo passo della nostra dimostrazione è relativo alla posta elettronica: anche in questo caso dobbiamo essere in grado di collegarci con il server di posta elettronica senza dover immettere le credenziali utente. Nel modello Microsoft il mail server Exchange usa un protocollo proprietario incapsulato su NetBIOS ed utilizza un sistema di autenticazione differente, che si basa sempre sul framework di SPNEGO. Il nostro scopo è quello di usare tecnologia Open, basata su standard quali SMTP e IMAP, ma in particolare si è deciso di focalizzarsi sull’autenticazione relativa ad IMAP. È possibile abilitare l’autenticazione GSSAPI anche per alcuni server SMTP, però a causa della scarsa disponibilità di client che supportano questo tipo di autenticazione, si è deciso di implementare la policy relativa all’invio di posta tramite il controllo degli IP address sorgenti. La mancanza di client, soprattutto in ambiente Windows, ha creato numerosi problemi durante la creazione del laboratorio. Esistono infatti numerosi client Unix e MacOS X, ma pochi sono quelli per Windows, probabilmente perchè alcuni sviluppatori Windows considerano Kerberos un qualcosa di troppo “nuovo” e ancora poco conosciuto, mentre altri lo considerano “troppo vecchio”, ignorando che l’intera architettura di Active Directory è basata proprio sul “vecchio” Kerberos.

L’installazione del server

Per implementare il server di posta elettronica si sono scelti due popolari software OpenSource, ovvero Postfix (http://www.postfix.org) e University of Washington UW-IMAPD (http://www.washington.edu/imap/). Per quanto riguarda la distribuzione Debian, il primo software è disponibile attraverso il pacchetto postfix-tls e non si è proceduto a nessuna personalizzazione particolare, a parte la specifica di venere.azienda.it nella variabile mydestination del file main.cf: questa variabile permette a Postfix di capire qual è il dominio o il nome host appartenente alla macchina locale. È consigliabile procedere alla configurazione della variabile mynetworks specificando la propria rete locale (ad esempio: mynetworks = 192.168.1.0/24): questo permette a tutti i client della rete locale di usare Postfix come relay di posta elettronica. Postfix è già stato compilato per diverse piattaforme, ma è possibile ricompilarlo scaricandone i sorgenti dal sito specificato. Anche il server IMAP UW-IMAPD è disponibile come pacchetto Debian, ma non è stato compilato con l’autenticazione GSSAPI: è pertanto necessario ricompilare il server a partire dai sorgenti. I sorgenti del server, disponibili sul sito dell’Università di Washington, sono contenuti nel file imap.tar.Z: una volta decompresso il file è sufficiente procedere alla compilazione come segue:

make VERSION=uw-imap-ssl-gssapi lnp SSLTYPE=unix 
EXTRAAUTHENTICATORS=gss

L’opzione EXTRAAUTHENTICATORS permette l’autenticazione attraverso le GSSAPI. Si ricorda che gli include file relativi a Kerberos e all’SSL devono essere già negli include path, altrimenti è necessario specificare nella variabile EXTRACFLAGS la lista degli include path (ad esempio: EXTRACFLAGS=”-I/usr/kerberos/include”). Una volta eseguita la compilazione, si identifica il file imapd che contiene l’IMAP daemon (è nella sottodirectory imapd/) e lo si copia come /usr/local/sbin/imapd.orig. Con un editor di testo si crea un nuovo file /usr/local/sbin/imapd, che fungerà da wrapper, e si inserisce il seguente contenuto:

#!/bin/sh
KRB5_KTNAME=/etc/krb5.keytab.imap
export KRB5_KTNAME

/usr/sbin/imapd.orig $*

Questo wrapper ci consentirà di creare un file di keytab separato per il servizio IMAP (/etc/krb5.keytab.imap). Analogamente a quanto fatto per Apache nel paragrafo precedente, è necessario creare sul KDC il principal per il servizio, ad esempio:

# kadmin.local -q “addprinc -randkey imap/venere.azienda.it@AZIENDA.IT”
# kadmin.local -q “ktadd -k /tmp/imap-venere.key imap/venere.azienda.it@AZIENDA.IT”

Copiare quindi il file temporaneo che è stato creato (nel nostro esempio /tmp/imap-venere.key) sul server IMAP con il nome del file specificato nel wrapper /etc/krb5.keytab.imap, ricordando di proteggerlo alla sola lettura di root. Successivamente modificare il file /etc/inetd.conf e includere quindi il nostro daemon IMAP come segue:

imap2  stream  tcp   nowait      root    /usr/sbin/tcpd  /usr/local/sbin/imapd
imaps  stream  tcp   nowait      root    /usr/sbin/tcpd  /usr/local/sbin/imapd

L’ultimo step della configurazione riguarda la creazione di un file di accesso PAM relativo al servizio IMAP. Anche se non è strettamente necessario in quanto l’autenticazione avverrà tramite GSSAPI, questo ci consentirà di erogare il servizio IMAP anche a quei client che non supportano GSSAPI. Creare quindi un file /etc/pam.d/imap con lo stesso contenuto di quello creato per il servizio SSH o login, ad esempio:

#%PAM-1.0
auth       required     pam_nologin.so
auth       required     pam_env.so # [1]
auth       sufficient   pam_unix.so likeauth nullok
auth       sufficient   pam_krb5.so use_first_pass
auth       required     pam_deny.so

account    sufficient   pam_unix.so
account    sufficient   pam_krb5.so
#account    sufficient   pam_ldap.so
account    required     pam_deny.so

session    required     pam_limits.so
session    required     pam_unix.so
session    optional     pam_krb5.so
session    optional     pam_lastlog.so # [1]
session    optional     pam_motd.so # [1]
session    optional     pam_mail.so standard noenv # [1]

password   sufficient   pam_unix.so nullok use_authok
password   sufficient   pam_krb5.so use_authok
password   required     pam_deny.so

È fortemente consigliabile attivare anche la funzionalità SSL: in questo caso è necessario provvedere alla generazione di un certificato e ad installarlo come file su /usr/lib/ssl/certs/usr/local/sbin/imapd.orig.pem. Il server riconoscerà automaticamente la connessione SSL in ingresso ed avvierà la negoziazione SSL.

Client Linux

Come client per Linux si è scelto Ximian Evolution, un client grafico per Linux che sta avendo molto successo in quanto simile a Microsoft Outlook. Quasi tutte le nuove distribuzioni di Linux includono Evolution tra i client di posta elettronica, ma è comunque scaricabile gratuitamente dal sito Internet http://www.ximian.com/products/evolution/. Si assume che il client sia stato installato e che sia stato effettuato il primo setup.

Dal menu Tools, selezionare Settings; verrà presentata all’utente una finestra di dialogo:

Selezionare quindi Mail Accounts (figura 21) e premere il pulsante Add. Un wizard guiderà l’utente nella creazione del profilo: alla prima schermata Mail Configuration premere Forward (figura 22).

Nella schermata Identity inserire i propri dati (ad esempio, come indirizzo e-mail mrossi@venere.azienda.it) e premere Forward.

Nella finestra Receiving Email, selezionare come Server Type il valore IMAP. Nella sezione Configuration come Host specificare il mail server, ad esempio venere.azienda.it, lo username, ad esempio mrossi, e in Use secure connection (SSL) selezionare Always. Nella sezione authentication specificare nell’Authentication type il valore GSSAPI. Premere Forward.

Nella finestra successiva Receiving Email lasciare il default e premere Next. Successivamente verrà chiesto nella finestra Sending Email come inviare la mail. Lasciare come Server Type il valore SMTP e come Host inserire il nome del proprio server di posta, ad esempio venere.azienda.it. Premere Forward.

Nella schermata di Account Management, lasciare il default e premere Next. Se la configurazione e l’autenticazione andrà a buon fine, allora verrà creato una cartella sulla sinistra e potremmo accedere alla cartella IMAP presente sul server.

Client Windows

Come accennato in precedenza, è stato difficile trovare un client IMAP per Windows che supporti Kerberos. Ne sono stati trovati alcuni, ad esempio Eudora, ma su Windows cercano l’implementazione MIT di Kerberos e non sfruttano le SSPI. L’unico software in grado di usare le API SSPI è PC-Pine disponibile gratuitamente sul sito Internet http://www.washington.edu/pine/getpine/pcpine.html. È necessario scaricare il “PC-Pine for Windows 2000 Kerberos setup program”, che è stato compilato per sfruttare le SSPI di Windows 2000. Il file si presenta come un normale installer per Windows, basterà quindi scaricarlo ed eseguirlo. Una volta eseguito, copiare il file pinerc.adv, solitamente presente nella directory C:\Programmi\PC-Pine in una cartella personale (ad esempio chiamandolo pinerc) e modificare il parametro inbox-path come segue:

inbox-path={venere.azienda.it/novalidate-cert}INBOX

Il parametro prevede tra le parentesi graffe l’hostname del nostro mail server IMAP, seguito da parametri relativi alla connessione, e successivamente la cartella INBOX. Come si può notare, non si specifica nessuna autenticazione particolare: in automatico Pine selezionerà il protocollo migliore per l’autenticazione, nel nostro caso GSSAPI, e il protocollo TLS/SSL. Se non si vuole usare l’SSL per collegarsi al server IMAP sarà necessario specificare il parametro /notls dopo l’hostname (ad esempio: {venere.azienda.it/notls}INBOX), mentre il parametro /novalidate-cert serve per evitare il controllo del certificato nell’elenco delle Certification Authorities di fiducia. Solitamente quest’ultimo parametro viene sempre messo quando il certificato del server non è stato acquistato da una CA ufficiale, ma è stato generato in una CA interna.

Dopo aver modificato il file, nel nostro caso pinerc, eseguire il programma PC-Pine. Dopo lo splash screen, verrà visualizzata la schermata di configurazione:

Selezionare Use local configuration file e, attraverso il tasto Browse, selezionare il file pinerc modificato. Selezionare quindi il parametro Use this as the default PC-Pine Configuration e premere Ok. Successivamente si aprirà il programma esattamente alla Inbox desiderata. Se non visualizzate errori, il vostro mail client si è autenticato correttamente al server usando GSSAPI/SSPI. Qualora si desiderasse usarlo come client di posta, sarà necessario personalizzarlo ulteriormente con i propri dati e le proprie preferenze. Per maggiori informazioni si consiglia la lettura del manuale allegato.

Sebbene si tratti di un ottimo client, PC-Pine non dispone di una interfaccia grafica: il fatto di non essere “intuitivo” influenza negativamente la sua adozione. Alla data della scrittura del presente documento nessun client Windows grafico è in grado di sfruttare le SSPI: Mozilla Thunderbird e Mozilla 1.7 (http://www.mozilla.org/) hanno entrambi la feature tra le “wish list”, ma nessuno ha ancora deciso di implementarlo, come successo per SPNEGO e il client Web.

Client MacOS X

Al contrario del sistema operativo Windows (che attualmente non dispone di veri e propri client grafici; lo sarà Mozilla in una prossima versione), MacOS X dispone di un client Mail nativo che supporta l’autenticazione GSSAPI. L’applicazione, chiamata per l’appunto Mail, si trova inserita di default nel Dock di MacOS X. Una volta eseguita l’applicazione, selezionare il menu Mail e la voce Preferences. Selezionare la sezione Accounts (Fig. 27) e premere sul simbolo + in basso a sinistra.

La prima schermata è relativa alla sezione Account Information. Selezionare come Account Type il valore IMAP e come Description un valore mnemonico (ad esempio Venere), inserire in Email Address il valore mrossi@venere.azienda.it e come Full Name il nome completo dell’utente (nel nostro eempio Mario Rossi). Successivamente come Incoming Mail Server indicare venere.azienda.it e come User Name il valore mrossi (figura 28).

Appena sotto Outgoing Mail Server (SMTP) selezionare Server Settings. Qui verrà indicato il server SMTP di uscita. Nella finestra indicare venere.azienda.it come Outgoing Mail Server e premere quindi Ok.

Ritornati al menu Account Information, selezionare quindi la sezione Advanced. In fondo alla finestra, nella voce Authentication specificare Kerberos Version 5 (GSSAPI) come in figura 30.

Chiudere la finestra e salvare. Se la nostra configurazione avrà avuto successo, nella finestra In troverete i vostri messaggi nell’INBOX.

 

Save