210 likes | 324 Views
Workshop sulle problematiche del Calcolo e Reti INFN. Configurazione sicura di Sendmail. Sicurezza in sendmail. Situazione MTA nell’INFN Installazione sicura Utilizzo di TLS/SSL e relay basato sui certificati Autenticazione SMTP Content Management API (Milter)
E N D
Workshop sulle problematiche del Calcolo e Reti INFN Configurazione sicura di Sendmail Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Sicurezza in sendmail • Situazione MTA nell’INFN • Installazione sicura • Utilizzo di TLS/SSL e relay basato sui certificati • Autenticazione SMTP • Content Management API (Milter) • Sendmail e I MUA (Netscape/Mozilla,Outlook,PINE) Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Situazione MTA nell’INFN define(`confSMTP_LOGIN_MSG',`$m server; $b') Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Situazione MTA nell’INFN (2) 40% degli MTA è affetto da security advisories Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Installazione sicura Sendmail necessita di avere privilegi di root per compiere alcuni task importanti: • aprire la porta 25 TCP • comunicare con LDA (mail.local, procmail,cyrus) • aprire i file .forward • scrivere un file nella queue directory quando un mail è sottomesso tramite linea di comando Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Installazione sicura (2) Sendmail gira con 2 processi distinti: • /PATH/TO/sendmail -L sm-mta -bd –q30m MTA: gira con privilegi di root e soddisfa I primi 3 punti precedenti • /PATH/TO/sendmail -L sm-msp-queue -Ac -q30m MSP: utilizzato per la sottomissione delle mail, può essere invocato da programmi, gira come set-group-ID smmsp utilizza/var/spool/clientmqueue Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Installazione sicura (3) Permessi del filesystem da utilizzare nella configurazione di sendmail MTA e MSP: -r-xr-sr-x root smmsp ... /PATH/TO/sendmail drwxrwx--- smmsp smmsp ... /var/spool/clientmqueue drwx------ root wheel ... /var/spool/mqueue -r--r--r-- root wheel ... /etc/mail/sendmail.cf -r--r--r-- root wheel ... /etc/mail/submit.cf Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Porte TCP utilizzate da sendmail • smtp + STARTTLS porta 25 • submission + STARTTLS porta 587 • smtps porta 465 (non è abilitata per default) Per utilizzare tutte e tre le porte occorre definire: DAEMON_OPTIONS(`Port=smtp, Name=MTA') DAEMON_OPTIONS(`Port=465, Name=SSA, M=Eas') Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Utilizzo di TLS/SSL • STARTTLS (RFC2487): il client richiede l’inizializzazione di una connessione TLS/SSL attraverso il comando STARTTLS all’interno di una normale connessione SMTP in chiaro (porta 25 o 587). Sendmail risponde: 220 2.0.0 Ready to start TLS • SSL_wrapped SMTP: si tratta di SMTP over SSL, la porta utilizzata è la 456/smtps, questa soluzione però è ormai deprecata a favore di STARTTLS Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
STARTTLS • Opzioni di compilazione per iI supporto per STARTTLS. In site.config.m4: APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS') APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto') • Variabili m4 da definire: define(`CERT_DIR', `/var/imap/certs') define(`CACERT_DIR', `/etc/ssl/certs') define(`confCACERT_PATH', `CACERT_DIR') define(`confCACERT', `CACERT_DIR/CAcert.pem') define(`confSERVER_CERT', `CERT_DIR/postino-sendmail.pem') define(`confSERVER_KEY', `CERT_DIR/sendmail.key') define(`confCLIENT_CERT', `CERT_DIR/postino-sendmail.pem') define(`confCLIENT_KEY', `CERT_DIR/sendmail.key') Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
STARTTLS mail relaying Attraverso il meccanismo STARTTLS si può consentire il relay ai client che si sono autenticati con successo tramite l’utilizzo dei certificati. Se la verifica del certificato ha successo il relay viene consentito a seconda della policy inserita nell’access map di sendmail: CERTIssuer:/C=IT/O=INFN/OU=Authority/CN=INFN+20Certification+20Authority SUBJECT CERTSubject:MATCH RELAY Per operare controlli sul DN dei certificati offerti dal client occorre definire una variabile m4 opportuna define(`_CERT_REGEX_SUBJECT_',`-sMATCH /C=IT/O=INFN/OU=Personal\+20Certificate/L=Firenze') Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Vantaggi e limiti di STARTTLS • Autenticazione del client e del server che consente il Relay sicuro attraverso l’utilizzo di certificati • Privacy: la trasmissione di informazioni non può essere letta e ritradotta in plaintext, il canale di comunicazione è criptato • Integrità dei dati che transitano nel canale di comunicazione, dal momento che il plaintext non può essere modificato in transito • Non può garantire una encryption end-to-end (multiple hops) • Non può fornire in assoluto un’autenticazione del messaggio a meno che la mail sia inviata dal MUA direttamente al MTA del destinatario (ma potrebbe a sua volta venire modificata localmente) Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
SMTP over SSL (smtps) • Occorre abilitare esplicitamente SMTP over SSL nelle opzioni di compilazione di sendmail: APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS') APPENDDEF(`conf_sendmail_ENVDEF', `-D_FFR_SMTP_SSL') • Istruire sendmail ad ascoltare sulla porta 465/smtps: DAEMON_OPTIONS(`Port=465, Name=SSA, M=Eas') • L’utilizzo della porta smtps è ormai obsoleto e viene consigliato l’utilizzo di STARTTLS come valida alternativa Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Autenticazione SMTP • SMTP AUTH (RFC2554) consente di effettuare il relay per chi si autentica • L’autenticazione è basata su SASL (RFC2222) • Sendmail supporta cyrus-sasl e cyrus-sasl2 APPENDDEF(`conf_sendmail_ENVDEF', `-I/usr/local/include') APPENDDEF(`conf_sendmail_ENVDEF', `-DSASL=2') APPENDDEF(`confLIBDIRS', `-L/usr/local/lib') ESASL_PATH=/usr/local/lib/sasl2 TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 PLAIN LOGIN') define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 PLAIN LOGIN') define(`confAUTH_OPTIONS', `p,y') define(`confDONT_BLAME_SENDMAIL', `GroupReadableSASLDBFile') Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Autenticazione SMTP (2) • I plugin di autenticazione SASL si trovano in /usr/lib/sasl2 oppure /usr/local/lib/sasl2 a seconda del sistema operativo: -rwxr-xr-x 1 root wheel 15932 Jan 15 11:33 libanonymous.so.2 -rwxr-xr-x 1 root wheel 19038 Jan 15 11:33 libcrammd5.so.2 -rwxr-xr-x 1 root wheel 48492 Jan 15 11:33 libdigestmd5.so.2 -rwxr-xr-x 1 root wheel 26268 Jan 15 11:33 libgssapiv2.so.2 -rwxr-xr-x 1 root wheel 16775 Jan 15 11:33 liblogin.so.2 -rwxr-xr-x 1 root wheel 34886 Jan 15 11:33 libntlm.so.2 -rwxr-xr-x 1 root wheel 23731 Jan 15 11:33 libotp.so.2 -rwxr-xr-x 1 root wheel 16737 Jan 15 11:33 libplain.so.2 -rwxr-xr-x 1 root wheel 21336 Jan 15 11:33 libsasldb.so.2 -rw-r--r-- 1 root wheel 26 Oct 13 2003 Sendmail.conf • Sendmail.conf definisce quale metodo utilizzare per autenticare l’utente, in genere saslauthd (dce, getpwent, kerberos4, kerberos5, pam, sasldb, shadow, ldap…) Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Content Management API (Milter) • Interfaccia che consente di scrivere software esterno a sendmail (filtri) per validare o modificare i messaggi mentre passano per il mail transport system: • Security: I filtri non necessitano di avere privilegi di root • Reliability: Se un thread che implementa un filtro si blocca, questo non ferma il delivery dei messaggi, non compromette la funzionalità di altri filtri o dell’MTA stesso • Performance: la libreria Milter implementa un protocollo di comunicazione fra MTA e filtri molto efficiente basato su un modello threaded • Utilizzata come interfaccia efficiente con: antivirus, content scanner, implementazione di ACL Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Content Management API (Milter) (2) • Supporto Milter per sendmail: APPENDDEF(`conf_libmilter_ENVDEF', `-DMILTER') APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER') • Filtri che utilizzano l’interfaccia Milter ad es: INPUT_MAIL_FILTER(`milter-amavis', `S=local:/var/amavis/amavis-milter.sock, F=T, T=S:10m;R:10m;E:10m') INPUT_MAIL_FILTER(`spamassassin',`S=local:/var/run/spamass-milter.sock, F=T, T=C:15m;S:4m;R:4m;E:10m') Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Interazione con i MUA Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Netscape/Mozilla autenticazione con Certificato Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
PINE 4.58 • STARTTLS (TCP 25) + SMTP AUTH (PLAIN) smtp-server=postino.fi.infn.it:/tls/novalidate-cert/user=veraldi • STARTTLS (TCP 587) + SMTP AUTH (PLAIN) smtp-server=postino.fi.infn.it:587/tls/novalidate-cert/user=veraldi • smtps (TCP 465) + SMTP AUTH (PLAIN) smtp-server=postino.fi.infn.it:465/ssl/novalidate-cert/user=veraldi Riccardo Veraldi - INFN Firenze - Workshop CCR 2004
Soluzione ottimale per il fisico viaggiante • Utilizzare un MUA che supporti STARTTLS su porta 587 (submission) • Utilizzare un MUA che supporti uno di questi metodi di autenticazione: Certificato,LOGIN,PLAIN • Mozilla 1.7 ha il maggior numero di feature • MS Outlook non supporta STARTTLS su porta TCP != 25 Riccardo Veraldi - INFN Firenze - Workshop CCR 2004