Eliminazione della trasmissione di passwords in chiaro Stunnel & port forwarding Enrico M.V. Fasanelli I.N.F.N. - Lecce Firenze, 19-20 Settembre 2000 Enrico M.V. Fasanelli - Stunnel & port forwarding
Sommario Prologo Perchè tutto ciò Strumenti a disposizione I protocolli ed i prodotti più diffusi SSL/TLS Descrizione sommaria e SW che lo usa Come utilizzarlo anche senza SW SSL/TLS-aware (es. stunnel) stunnel Prerequisiti per l installazione ed il funzionamento Esempio di installazione e configurazione Altro SW SSL/TLS-aware (free/opensource) in arrivo Riferimenti utili 2
Prologo Eliminazione della trasmissione (in chiaro) delle passwords (ed eventualmente anche dei dati) Sniffer di rete CERT incident note IN-99-06 sui distributed network sniffer del 25/10/99 (http://www.cert.org/incident_notes/in-99-06.html) Attenzione agli anelli deboli della catena Es.: Sessioni X11 da xterm, telnet, ftp, ecc. ecc. 3
Protocolli e prodotti a disposizione (a me noti) Kerberos, nelle due versioni: 4 (AFS) e 5 (DCE) Semplice autenticatore Suppone la rete insicura, ma il server sicuro Le chiavi (passwords) sono depositate sul server ssh (Secure SHell) nelle due versioni SSH1 ed SSH2 Sostituisce i servizi r come rsh, rlogin, rcp (ftp nella sola SSH2) Autenticazione SSH1 Chiave pubblica RSA, kerberos, password file, host (/etc/hosts.equiv o.rhosts) Autenticazione SSH2 Chiave pubblica DSA, password file, host (public key) Canale di comunicazione crittografato SSL/TLS (Secure Sockets Layer/Transport Layer Security) 4
Secure Sockets Layer/Transport Layer Security SSLv2/SSLv3 Nasce in Netscape Communications (Internet draft expired) TLSv1 (RFC 2246 Gennaio 1999) Internet Standards Track (http://www.ietf.org/rfc/rfc2246.txt) TLS (Include compatibilità verso SSL) Protocollo a due strati TLS Record Protocol Connessioni private via crittografia simmetrica Connessioni affidabili via message interity check TLS Handshake Protocol Autenticazione via crittografia asimmetrica (X.509v3) Negoziazione sicura ed affidabile 5
SSL/TLS: Le porte assegnate da IANA nsiiops 261/tcp # IIOP Name Service over TLS/SSL https 443/tcp # http protocol over TLS/SSL smtps 465/tcp # smtp protocol over TLS/SSL (was ssmtp) nntps 563/tcp # nntp protocol over TLS/SSL (was snntp) imap4-ssl 585/tcp # IMAP4+SSL (use 993 instead) sshel 614/tcp # SSLshell ldaps 636/tcp # ldap protocol over TLS/SSL (was sldap) ftps-data 989/tcp # ftp protocol, data, over TLS/SSL ftps 990/tcp # ftp protocol, control, over TLS/SSL telnets 992/tcp # telnet protocol over TLS/SSL imaps 993/tcp # imap4 protocol over TLS/SSL ircs 994/tcp # irc protocol over TLS/SSL pop3s 995/tcp # pop3 protocol over TLS/SSL (was spop3) msft-gc-ssl 3269/tcp # Microsoft Global Catalog with LDAP/SSL 6
Cosa serve per usare SSL/TLS Coppia Client-Server SSL/TLS-aware: Clients: generalmente disponibili free almeno per uso educational/ noprofit (es. Netscape Communicator, IE, Outlook) Servers: già disponibili per https, in fase di rilascio per altri pop3s, imaps: IMAP-2000 della W.U (Release Candidate 6) smtps: Sendmail 8.11 (chi l ha provato?) telnets: start_tls-telnet (in fase di sviluppo) In mancanza di Server e/o Client SSL/TLS-aware: wrapper (es. Stunnel) Certificato X.509 per il server Rilasciato e firmato da una CA autofirmato Certificato per l utente 7
stunnel Uno dei prodotti OpenSource che permette di crittografare connessioni TCP arbitrarie usando il protocollo SSL Disponibile sia per sistemi UNIX che per Windows Rende possibile l uso di SSL con servers (e clients) non SSL, senza dover modificare il codice del server (e clients) Richiede librerie SSL (OpenSSL, SSLeay) Lo potete trovare (dall 11 giugno scorso) in http://www.stunnel.org/ 8
Installazione delle librerie SSL (OpenSSL) su Linux o *BSD Punto di partenza: http://www.openssl.org/ Versione corrente: OpenSSL 0.9.5a (0.9.6 in Beta) Su Linux (RH62) e su *BSD, la sequenza./configure ;make ;make test; make install; non ha problemi. Installazione di default in /usr/local/ssl (modificabile da flags di configurazione) --prefix=/usr/lecce E preferibile condividere l installazione tra macchine della stessa architettura AFS: /usr/lecce ---> /afs/le.infn.it/sw/@sys/usr.lecce /usr/infn --> /afs/@cell/sw/@sys/usr.infn 9
Installazione delle librerie SSL (OpenSSL) su non-linux Punto di partenza: http://www.openssl.org/ Versione corrente: OpenSSL 0.9.5a (0.9.6 in Beta) Dalla 0.9.5 in poi, OpenSSL *RICHIEDE* che la funzione di generazione dei numeri pseudocasuali, sia opportunamente inizializzata (/dev/urandom sui sistemi Linux) Si può usare la 0.9.4 (correndo i rischi di una versione vecchia in un sistema di crittografia...) Si può sopperire alla mancanza di /dev/urandom usando il demone egd (Entropy Gathering Demon) http://www.lothar.com/tech/crypto/ 10
Installazione di stunnel Punto di partenza: http://www.stunnel.org/ Versione corrente: Stunnel-3.8p4 rilasciata il 25-06-2000 E preferiribile l installazione locale Certificato+chiave privata nello stesso file (chmod 600) Malfunzionamento del file server./configure --prefix=/usr --localstatedir=/var/stunnel \ --with-ssl=/usr/lecce/ssl --with-pem-dir=/etc/stunnel \ [--with-egd-socket=/etc/entropy] make genera anche un certificato self-signed make install 11
set-up di stunnel E comunque necessario un certificato X.509 in formato PEM Auto-firmato Generato in fase di make Firmato da una CA (es. INFN CA) Istruzioni dettagliate in http://security.fi.infn.it/tools/stunnel/ Si usa OpenSSL per generare la richiesta di certificato per il server openssl req -new -nodes -out req.pem -keyout key.pem Si spedisce la riciesta (req.pem) alla CA per il rilascio del certificato firmato, che andra, insieme al key.pem, nel file /etc/stunnel/stunnel.pem 12
stunnel può: Cosa fa e cosa non fa Aggiunge le funzionalità di SSL/TLS a servers che ne sono sprovvisti (es. i servers IMAP/POP3 di W.U. e Cyrus) Creare una VPN (ppp over stunnel) Trasmettere in modo sicuro (crittografato) il traffico TCP tra porte per le quali non è prevista la crittografia NON può essere usato con: Traffico UDP Protocolli che fanno uso di connessioni multiple (es. ftp) Protocolli in cui la selezione di una connessione SSL è frutto di una negoziazione tra client e server (es STARTTLS in ssltelnet) Protocolli che dipendono da dati Out Of Band 13
Esempio di utilizzo Macchina A : servers POP3/IMAP4rev1 v. 4.7c della W.U. Macchina B : stunnel stunnel -d imaps -r A:imap stunnel -d pop3s -r A:pop3 Client C si collega a B:imaps Se A e B coincidono, stunnel -d imaps -r localhost:imap C A B 14
Dalla parte del client I clients Netscape ed IE (Outlook) verificano i certificati Certificato firmato da una root CA codificata nel client (o comunque caricata nel client) lo accettano Certificato firmato da una CA ignota chiedono conferma Scaricare il certificato della CA che rilascia e firma i certificati per i servers Accettare i certificatidei servers 15
IMAP-2000 Altro SW SSL/TLS-aware in arrivo Server imap4rev1 e pop3 con supporto SSL (Release Candidate 6) Sendmail 8.11 Famoso MTA start_tls-telnet sftp telnet client/server con supporto di SSL e X11 forwarding da SSH2 WU FTPd/SSL 16
Riferimenti bibliografici e maggiori informazioni (1) Mio riferimento in italia http://security.fi.infn.it/ Kerberos4 http://www.pdc.kth.se/kth-krb/ Kerberos5 http://www.pdc.kth.se/heimdal/ RSA/DSA ssh http://www.rsasecurity.com/rsalabs/faq/ http://www.ssh.org/ http://www.ssh.com/ 17
Riferimenti bibliografici e maggiori informazioni (2) SSL/TLS http://www.openssl.org/ http://www.irtf.org/rfc/rfc2246.txt stunnel http://www.stunnel.org/ sendmail http://www.sendmail.org/ telnets http://www.cc.columbia.edu/kermit/telnetd.html imaps http://www.cac.washington.edu/imap http://asg.web.cmu.edu/cyrus 18
Domande e (nei limiti del possibile) risposte 19