56 votes

Comment corriger la vulnérabilité "logjam" d'Apache (httpd) ?

Récemment, une nouvelle vulnérabilité dans Diffie-Hellman, officieusement appelée "logjam", a été publiée. このページ a été mis en place pour suggérer comment contrer cette vulnérabilité :

Nous avons trois recommandations pour déployer correctement Diffie-Hellman pour TLS :

  1. Désactiver l'exportation de suites de chiffrement. Même si les navigateurs modernes ne ne prennent plus en charge les suites d'exportation, les attaques FREAK et Logjam permettent à une un attaquant de type "man-in-the-middle" d'inciter les navigateurs à utiliser des suites après quoi la connexion TLS peut être décryptée. L'exportation sont un vestige de la politique des années 1990 qui empêchait l'utilisation de puissants les protocoles cryptographiques forts d'être exportés des États-Unis. Non Aucun client moderne ne s'appuie sur les suites d'exportation et il y a peu d'inconvénients à les de les désactiver.
  2. Déployer (éphémère) Elliptic-Curve Diffie-Hellman (ECDHE). L'échange de clés Diffie-Hellman à courbe elliptique (ECDH) évite tous les problèmes de sécurité. attaques cryptanalytiques connues et réalisables, et les navigateurs web modernes préfèrent désormais l'ECDHE à la méthode originale Diffie-Hellman à champ fini. Le site algorithmes de log discret que nous avons utilisés pour attaquer le standard Diffie-Hellman ne tirent pas un avantage aussi important du précalcul, et les algorithmes de logs discrets que nous avons utilisés pour attaquer le standard Diffie-Hellman les serveurs individuels n'ont pas besoin de générer des courbes elliptiques uniques.
  3. Générer un groupe Diffie Hellman fort et unique . Quelques groupes fixes sont utilisés par des millions de serveurs, ce qui en fait une cible optimale pour le précalcul et les écoutes potentielles. Les administrateurs doivent générer des groupes Diffie-Hellman uniques, de 2048 bits ou plus, en utilisant des nombres premiers "sûrs" pour chaque site web ou serveur.

Quelles sont les meilleures mesures à prendre pour sécuriser mon serveur conformément aux recommandations ci-dessus ?

82voto

m6tt Points 3507

De la article que vous avez cité il y a trois étapes recommandées pour se protéger contre cette vulnérabilité. En principe, ces étapes s'appliquent à tous les logiciels que vous utilisez avec SSL/TLS, mais nous allons traiter ici les étapes spécifiques pour les appliquer à Apache (httpd) puisque c'est le logiciel en question.

  1. Désactiver l'exportation de suites de chiffrement

Les changements de configuration que nous ferons au point 2 ci-dessous en tiendront compte ( !EXPORT vers la fin de l'année SSLCipherSuite est la façon dont nous allons désactiver les suites de chiffrement d'exportation)

  1. Déployer (éphémère) Elliptic-Curve Diffie-Hellman (ECDHE)

Pour cela, vous devez modifier quelques paramètres dans vos fichiers de configuration Apache - à savoir SSLProtocol , SSLCipherSuite , SSLHonorCipherOrder d'avoir une configuration des "meilleures pratiques". Quelque chose comme ce qui suit suffira :

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

Note : pour lequel SSLCipherSuite à utiliser, celle-ci est en constante évolution, et il est bon de consulter des ressources telles que éste pour vérifier la dernière configuration recommandée.

3. Générer un groupe Diffie Hellman fort et unique

Pour ce faire, vous pouvez exécuter

openssl dhparam -out dhparams.pem 2048 .

Il est à noter que cette procédure entraînera une charge importante sur le serveur pendant que les paramètres sont générés. Vous pouvez toujours contourner ce problème potentiel en générant les paramètres sur une autre machine et en utilisant la fonction scp ou similaire pour les transférer sur le serveur en question afin de les utiliser.

Pour utiliser ces nouvelles dhparams dans Apache, de la Documentation Apache :

Pour générer des paramètres DH personnalisés, utilisez la commande openssl dhparam. Alternativement, vous pouvez ajouter le texte suivant standard 1024-bit DH de la RFC 2409, section 6.2. t SSLCertificateFile :

(c'est moi qui souligne)

qui est ensuite suivi d'un paramètre DH standard de 1024 bits. Nous pouvons en déduire que les paramètres DH générés par le client peuvent simplement être ajoutés à l'adresse de l'utilisateur. SSLCertificateFile en question.

Pour ce faire, exécutez quelque chose de similaire à ce qui suit :

cat /path/to/custom/dhparam >> /path/to/sslcertfile

Alternativement, conformément à la Sous-section Apache de l'article dont vous avez donné le lien à l'origine, vous pouvez également indiquer le fichier dhparams personnalisé que vous avez créé si vous préférez ne pas modifier le fichier de certificat lui-même, ainsi :

SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"

dans la (les) configuration(s) Apache correspondant à votre implémentation particulière de SSL/TLS - généralement dans conf.d/ssl.conf ou conf.d/vhosts.conf mais cela dépendra de la façon dont vous avez configuré Apache.

Il convient de noter que, selon ce lien ,

Avant Apache 2.4 n'est pas configurable par l'utilisateur. Ceci a été corrigé dans mod_ssl 2.4.7 que Red Hat a rétroporté dans sa distribution RHEL 6 Apache 2.2 avec le paramètre httpd-2.2.15-32.el6

Sur Debian Wheezy, mettez à niveau apache2 vers 2.2.22-13+deb7u4 ou une version ultérieure et openssl vers 1.0.1e-2+deb7u17. La suite SSLCipherSuite ci-dessus ne fonctionne pas parfaitement, utilisez plutôt ce qui suit comme indiqué ce blog :

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384: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-DSS-AES128-SHA256:DHE-DSS-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384: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:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-RSA-AES256-SHA256:!DHE-RSA-CAMELLIA128-SHA:!DHE-RSA-CAMELLIA256-SHA

Vous devez vérifier si votre version d'Apache est postérieure à ces numéros de version en fonction de votre distribution, et si ce n'est pas le cas - mettez-la à jour si possible.

Une fois que vous avez effectué les étapes ci-dessus pour mettre à jour votre configuration, et que vous avez redémarré le service Apache pour appliquer les changements, vous devez vérifier que la configuration est conforme à ce que vous souhaitez en exécutant les tests sur SSLLabs et sur l'article liées à cette vulnérabilité particulière.

1voto

Flo Points 45

Basé sur un patch de Winni Neessen, j'ai publié un correctif pour Apache/2.2.22 (Debian Wheezy, peut-être aussi utilisable sur Ubuntu) : https://flo.sh/debian-wheezy-apache2-logjam-fix/ - Merci pour vos commentaires.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X