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.
- 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)
- 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.