Guide des technologies

Protéger un serveur Debian/Ubuntu contre l'attaque Logjam

5 min read Sécurité Serveur Mis à jour 03 Oct 2025
Sécuriser Ubuntu/Debian contre Logjam
Sécuriser Ubuntu/Debian contre Logjam

Important : exécutez les commandes en tant que root.

Contexte rapide

Logjam exploite la faiblesse des groupes Diffie‑Hellman de 1024 bits et des suites de chiffrement faibles. Il affecte les échanges utilisant Diffie‑Hellman (par exemple HTTPS, TLS, SMTPS, SSH). Pour plus de détails techniques, consultez https://weakdh.org/.

Étapes principales

  1. Générer un groupe DH unique (dhparams.pem) en 2048 bits.
  2. Restreindre et ordonner les suites de chiffrement sur chaque service.
  3. Charger dhparams.pem quand le serveur et OpenSSL le supportent.
  4. Redémarrer et tester les services.

Générer un groupe DH unique

Créez ou utilisez le répertoire /etc/ssl/private pour stocker la clé DH. Si le répertoire n’existe pas :

mkdir -p /etc/ssl/private  
chmod 710 /etc/ssl/private

Générez ensuite le fichier dhparams.pem et protégez les permissions :

cd /etc/ssl/private  
openssl dhparam -out dhparams.pem 2048  
chmod 600 dhparams.pem

Note : 2048 bits est la taille recommandée ; 1024 bits est considéré faible.

Apache

  1. Restreindre la suite de chiffrement

Ouvrez /etc/apache2/mods-available/ssl.conf :

nano /etc/apache2/mods-available/ssl.conf

Remplacez ou ajoutez ces lignes (SSLCipherSuite doit rester sur une seule ligne) :

SSLProtocol             all -SSLv2 -SSLv3  

SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

SSLHonorCipherOrder     on

Important : ne pas insérer de sauts de ligne dans SSLCipherSuite.

  1. Charger dhparams.pem dans Apache (si supporté)

L’option SSLOpenSSLConfCmd est disponible à partir d’Apache 2.4.8 et nécessite OpenSSL ≥ 1.0.2. Vérifiez vos versions :

apache2 -v
openssl version

Si vos versions supportent l’option, ajoutez dans /etc/apache2/mods-available/ssl.conf :

SSLOpenSSLConfCmd DHParameters "/etc/ssl/private/dhparams.pem"

Puis redémarrez Apache :

service apache2 restart

Note : si vous ne pouvez pas charger dhparams.pem (versions trop anciennes), la restriction des suites de chiffrement reste utile et protège déjà contre de nombreuses attaques.

Nginx

Éditez /etc/nginx/nginx.conf :

nano /etc/nginx/nginx.conf

Dans la section http { … } ajoutez ou remplacez :

ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

ssl_prefer_server_ciphers on;

ssl_dhparam /etc/ssl/private/dhparams.pem;

Puis redémarrez Nginx :

service nginx restart

Postfix

Appliquez ces paramètres pour Postfix :

postconf -e "smtpd_tls_mandatory_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDC3-SHA, KRB5-DE5, CBC3-SHA"  
postconf -e "smtpd_tls_dh1024_param_file = /etc/ssl/private/dhparams.pem"

Puis redémarrez Postfix :

service postfix restart

Note : la variable smtpd_tls_dh1024_param_file accepte le fichier dhparams pour forcer l’usage des paramètres DH.

Dovecot

Ouvrez /etc/dovecot/dovecot.conf :

nano /etc/dovecot/dovecot.conf

Ajoutez ou remplacez la liste de suites :

ssl_cipher_list=ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

Vérifiez la version de Dovecot :

dovecot --version
  • Si la version est ≥ 2.2.6, ajoutez :
ssl_prefer_server_ciphers = yes
  • Si la version est ≥ 2.2.7, ajoutez aussi :
ssl_dh_parameters_length = 2048

Puis redémarrez Dovecot :

service dovecot restart

Pure‑ftpd

La configuration de pure‑ftpd nécessite d’ajouter la prise en charge de l’option -J dans /usr/sbin/pure-ftpd-wrapper. Éditez le fichier :

nano /usr/sbin/pure-ftpd-wrapper

Repérez la ligne :

'TLS' => ['-Y %d', \&parse_number_1],

et ajoutez immédiatement après :

'TLSCipherSuite' => ['-J %s', \&parse_string],

Ensuite créez ou éditez le fichier de configuration :

nano /etc/pure-ftpd/conf/TLSCipherSuite

Collez la liste de chiffrement suivante (remplacez le contenu existant si nécessaire) :

ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

Redémarrez pure‑ftpd :

service pure-ftpd-mysql restart

Vérification et tests

Après modification, testez vos services :

  • Utilisez openssl s_client pour vérifier la négociation TLS :
openssl s_client -connect exemple.com:443 -servername exemple.com
  • Outils en ligne : SSL Labs (tester les sites publics) ; weakdh.org propose des ressources spécifiques.

  • Contrôlez que le serveur n’accepte plus les suites faibles et que DH utilise des paramètres de 2048 bits.

Quand cela peut échouer

  • Clients anciens (navigateurs ou bibliothèques TLS) peuvent ne pas supporter ECDHE ou les suites récentes. Dans ce cas, déterminer si la compatibilité est nécessaire pour votre audience.
  • Serveurs avec OpenSSL/Apache/Nginx anciens ne pourront pas charger directement dhparams.pem. Solution : compiler OpenSSL/Apache plus récents ou utiliser des proxys terminant TLS.

Approches alternatives

  • Utiliser un reverse proxy moderne (HAProxy, Nginx 1.13+, Envoy) devant des services anciens pour centraliser la terminaison TLS et appliquer des politiques de chiffrement à jour.
  • Préférer ECDHE (Elliptic Curve Diffie‑Hellman) plutôt que DHE pour de meilleures performances et sécurité, lorsque les clients le supportent.

Boîte de faits

  • Logjam exploite des groupes Diffie‑Hellman trop petits (souvent 512–1024 bits).
  • Recommandation pratique : 2048 bits pour dhparams.pem.
  • Vérifier la compatibilité OpenSSL/Apache : SSLOpenSSLConfCmd nécessite Apache ≥ 2.4.8 et OpenSSL ≥ 1.0.2.

Checklist administrateur (rôle : administrateur système)

  • Générer /etc/ssl/private/dhparams.pem en 2048 bits.
  • Protéger les permissions (chmod 600 pour dhparams.pem).
  • Mettre à jour les SSLCipherSuite/ssl_ciphers pour chaque service.
  • Ajouter la référence à dhparams.pem quand le logiciel le supporte.
  • Redémarrer chaque service et vérifier la négociation TLS.
  • Documenter les clients qui échouent et prévoir des mesures de compatibilité.

Commandes et extrait récapitulatif (cheat sheet)

# Créer dossier sécurisé
mkdir -p /etc/ssl/private && chmod 710 /etc/ssl/private

# Générer DH params
openssl dhparam -out /etc/ssl/private/dhparams.pem 2048 && chmod 600 /etc/ssl/private/dhparams.pem

# Vérifier versions
apache2 -v
openssl version

# Redémarrer services
service apache2 restart
service nginx restart
service postfix restart
service dovecot restart
service pure-ftpd-mysql restart

# Tester TLS
openssl s_client -connect exemple.com:443 -servername exemple.com

Notes de compatibilité et migration

  • Si votre distribution fournit des paquets anciens, envisagez une montée en version ou compilation locale d’OpenSSL/serveur TLS.
  • Alternative sûre : déployer un proxy TLS moderne devant vos services existants.

Résumé

Ce guide montre comment protéger un serveur Debian/Ubuntu contre Logjam : générer dhparams.pem en 2048 bits, restreindre les suites de chiffrement et charger les paramètres DH quand le logiciel le permet. Testez chaque service après modification et préparez des solutions de contournement pour les clients anciens.

Notes :

Liens

Auteur
Édition

Matériaux similaires

Tether : Android comme modem sans root
réseau

Tether : Android comme modem sans root

Installer Linux sur un Chromebook
Linux

Installer Linux sur un Chromebook

smartmontools : installation et guide
Administration

smartmontools : installation et guide

Sécuriser Ubuntu/Debian contre Logjam
Sécurité Serveur

Sécuriser Ubuntu/Debian contre Logjam

Dark Sky : prévisions hyperlocales et alternatives
Météo

Dark Sky : prévisions hyperlocales et alternatives

SSH sécurisé sur CentOS 7 avec WiKID 2FA
Sécurité Linux

SSH sécurisé sur CentOS 7 avec WiKID 2FA