Skip to content →

Perfect Forward Secrecy pour Postfix/Dovecot

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)

 

Published in Mail Sécurité

One Comment

Comments are closed.

fr_FRFR