Forward secrecy in Postfix

È possibile implementare la forward secrecy anche nelle sessioni TLS di Postfix.

Questa guida parte dal presupposto che Postfix abbia TLS configurato e funzionante, non importa se con un certificato auto-emesso o rilasciato da un’autorità PKI, e si applica alla versione 2.10, le versioni precedenti potrebbero aver bisogno di qualche aggiustamento dei parametri, come indicato nel readme apposito.

Lo scopo è di avere delle chiavi di sessione effimere con una vita relativamente breve al fine di rendere più ardua la cosiddetta retrospective decryption attraverso una rigenerazione periodica dei parametri p e g dell’algoritmo Diffie-Hellman per lo scambio di chiavi.

Se si compila Postfix sul proprio server è consigliabile avere OpenSSL 1.0.0 o successiva; dal momento che alcune versioni non aggiornate di RedHat/CentOS possono avere il protocollo ECDHE disabilitato per dubbi (ora risolti) sul copyright dell’algoritmo, è bene comunque verificare con il comando

openssl ciphers -V 'EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA256 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EDH+aRSA EECDH RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS'

Per default, dalla versione 2.8 Postfix supporta nativamente le curve ellittiche, ma è bene verificare che il parametro smtpd_tls_eecdh_grade sia impostato a strong (il default) oppure non sia indicato.

Nel file main.cf aggiungere (o modificare) questi parametri:

smtpd_tls_dh1024_param_file = /etc/postfix/dh2048.pem
smtpd_tls_dh512_param_file = /etc/postfix/dh512.pem

Se qualche client dovesse dare errore potrebbe essere perché non supporta i parametri EDH a 2048 byte; per aggirare il problema modificare il submission in master.cf aggiungendo questi parametri

        -o smtpd_tls_dh1024_param_file=/etc/postfix/dh1024.pem
        -o smtpd_tls_security_level=encrypt
        -o smtpd_sasl_auth_enable=yes

e utilizzare sul client la porta submission per inviare la mail.

Per rigenerare periodicamente i parametri EDH creare uno script simile a questo

#!/bin/bash
cd /etc/postfix
openssl dhparam -out dh512.tmp 512 && mv dh512.tmp dh512.pem
openssl dhparam -out dh1024.tmp 1024 && mv dh1024.tmp dh1024.pem
openssl dhparam -out dh2048.tmp 2048 && mv dh2048.tmp dh2048.pem
chmod 644 dh512.pem dh1024.pem dh2048.pem

ed eseguirlo con i privilegi di root. Una frequenza di una volta la giorno è ragionevolmente sicura, i più paranoici possono rigenerare i parametri più spesso. In una macchina virtuale di medie performance la rigenerazione richiede al massimo due o tre minuti; è ovviamente consigliabile disporre di una buona fonte di entropia.

Non è necessario ricaricare Postfix dopo aver rigenerato i parametri EDH.

Se si desidera indicare negli header dei messaggi le caratteristiche della sessione TLS aggiungere la riga

smtpd_tls_received_header = yes

al file main.cf

La lettura di questo articolo aiuta chi volesse approfondire ulteriormente il tema.

Autore: Luigi Rosa

Consulente IT, sviluppatore, SysAdmin, cazzaro, e, ovviamente, geek.

Un commento su “Forward secrecy in Postfix”

Spazio per un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.