Après mon article sur PFS pour Apache, j’ai mis Ă©galement en place PFS sur mon serveur de messagerie Postfix/Dovecot, le client K9-Mail pour Android supportant dĂ©sormais des versions plus rĂ©centes de TLS, TLSv1.1 et v1.2.
Voici ici quelques éléments pour réaliser cette configuration et augmenter la sécurisation des flux chiffrés.
Postfix
Tout d’abord, pour utiliser TLS avec les propriĂ©tĂ©s PFS sous Postfix, il faut gĂ©nĂ©rer les clĂ©s DH. Cette opĂ©ration peut ĂŞtre rĂ©alisĂ©e par crontab pour amĂ©liorer encore la sĂ©curitĂ© des communications TLS. Il est Ă©galement possible de gĂ©nĂ©rer un DH Ă 2048 bits.
openssl gendh -out /etc/postfix/dh_512.pem -2 512 openssl gendh -out /etc/postfix/dh_1024.pem -2 1024
Une fois les clés générées, il faut modifier le fichier de configuration main.cf de Postfix :
# Clés DH smtpd_tls_dh1024_param_file = /etc/postfix/dh_1024.pem smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem # Activation d'ECDH smtpd_tls_eecdh_grade = strong # Désactivation de SSLv2 smtpd_tls_protocols= !SSLv2 smtpd_tls_mandatory_protocols= !SSLv2 # Activation de la cipher list tls_high_cipherlist # (default: ALL:!EXPORT:!LOW:!MEDIUM:+RC4:@STRENGTH) smtpd_tls_mandatory_ciphers = high #smtpd_tls_ciphers = high # Forcer la sélection / choix de la cipher list côté serveur (côté client par défaut) tls_preempt_cipherlist = yes # Suppression des cipher non souhaités smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5 , DES, ADH, RC4, PSD, SRP, 3DES, eNULL # Activation du log cipher pour les connexions entrantes smtpd_tls_loglevel = 1 # Activation du log cipher pour les connexions sortantes smtp_tls_loglevel = 1
Un redĂ©marrage de Postfix permettra de constater des logs comme celui ci (Merci Google et Amazon AWS ;), indiquant l’utilisation du chiffrement par courbes elliptiques et des propriĂ©tĂ©s cipher lists forcĂ©es.
postfix/smtpd[26611]: connect from mail-wg0-x238.google.com[2a00:1450:400c:c00::238] postfix/smtpd[26611]: setting up TLS connection from mail-wg0-x238.google.com[2a00:1450:400c:c00::238] postfix/smtpd[26611]: Anonymous TLS connection established from mail-wg0-x238.google.com[2a00:1450:400c:c00::238]: TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits) postfix/smtpd[28846]: connect from a0-41.smtp-out.eu-west-1.amazonses.com[54.240.0.41] postfix/smtpd[28846]: setting up TLS connection from a0-41.smtp-out.eu-west-1.amazonses.com[54.240.0.41] postfix/smtpd[28846]: Anonymous TLS connection established from a0-41.smtp-out.eu-west-1.amazonses.com[54.240.0.41]: TLSv1 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)
Pour plus de détails sur Perfect Forward Secrecy et Postfix , voir le lien.
Dovecot et imapd
Pour Dovecot, seul l’IMAPS est actif dans ma solution personnelle de mails, et j’utilise dovecot 2.0
La première modification a réaliser est donc dans le fichier /etc/dovecot/conf.d/10-ssl.conf, ou on va modifier les ciphers lists :
# SSL ciphers autorisés # DEFAULT : ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL ssl_cipher_list = EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4 # Forcer la sélection de la cipher list côté serveur (disponible uniquement dans les dernières versions de Dovecot 2.2.x) #ssl_prefer_server_ciphers = yes
Une fois cette modification rĂ©alisĂ©e, nous allons modifier le logging pour voir apparaitre la ciphers list utilisĂ©e par le client IMAPS, en ajoutant l’option %k, dans le fichier /etc/dovecot/conf.d/10-logging.conf :
# Space-separated list of elements we want to log. The elements which have # a non-empty variable value are joined together to form a comma-separated # string. #login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c login_log_format_elements = "user=<%u> method=%m rip=%r lip=%l mpid=%e %c %k"
Un redĂ©marrage de Dovecot devrait suffire Ă produire Ă la prochaine connexion d’un client le log au format suivant :
dovecot: imap-login: Login: user=<user@domain.net>, method=PLAIN, rip=2001:41d0:8:dead::beef, lip=2001:41d0:8::ac1d, mpid=15748, TLS, TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)
[…] https://beufa.net/blog/perfect-forward-secrecy-pour-postfix-dovecot/ […]