POODLE ou comment désactiver SSLv3

Sysadmin rules

Si vous êtes sysadmin et un tant soit peu attentif à la sécurité des données qui transitent via votre serveur, vous avez probablement déjà entendu parler de la nouvelle vulnérabilité baptisée POODLE.

Le but de ce billet n'est pas d'expliquer la faille mais plutôt de savoir comment configurer les différents services qui peuvent tourner (mail, http) sur un serveur pour garantir une sécurité adéquate.

La solution choisie ici est de désactiver complètement SSLv3, une autre possibilité consiste à implémenter le TLS_FALLBACK_SCSV.
Le seul inconvénient à désactiver SSLv3 est que cela va empêcher les utilisateurs d'IE6 et de Windows XP (et peut-être d'autres outils totalement obsolètes) d'utiliser les services.

Client WEB - Firefox

Une astuce pour les utilisateurs de Firefox consiste à dire à Firefox de ne plus supporter les anciens protocoles.

Allez dans about:config (à taper dans le champs d'adresse) et cherchez :

security.tls.version.min

Positionnez la valeur à 1, les prochaines version 34+ auront ce réglage par défaut.

Client WEB - Chrome/Chromium

Passez simplement à la dernière version et c'est fait automatiquement de ce que j'en ai compris (cf le billet suivant).

Serveur WEB - Apache

Pour désactiver SSLv3 dans apache, cela se passe dans le fichier suivant :

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

Dans ce fichier, cherchez la ligne SSLProtocol et modifiez-la comme suit :

SSLProtocol all -SSLv2 -SSLv3

Vous pouvez en profiter pour modifier les algorithmes qui seront supportés avec les lignes suivantes :

SSLCipherSuite AES256+EECDH:AES256+EDH:HIGH:!LOW:!MEDIUM:!aNULL:!MD5:!RC4
SSLHonorCipherOrder on

C'est tout, pensez à relancer apache.

Serveur WEB - lighttpd

L'emplacement du fichier de configuration sera laissé à la guise du lecteur (faudrait pas trop mâcher le travail non plus), voici les options à renseigner :

ssl.honor-cipher-order = "enable"
ssl.cipher-list = "AES256+EECDH:AES256+EDH:HIGH"
ssl.use-compression = "disable"
ssl.use-sslv2 = "disable"
ssl.use-sslv3 = "disable"

Une petite précision sur l'ajout de l'option use-compression, cela permet d'éviter une autre attaque baptisée BEAST.

Serveur WEB - Nginx

Tout comme pour lighttpd, je laisse chercher l'emplacement du fichier :

ssl_ciphers "AES256+EECDH:AES256+EDH:HIGH";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

Serveur mail - Postfix (smtps)

On a tendance à oublier les autres services qui utilisent SSL, mais si vous gérez un serveur mail... eh bien, il faut aussi penser à lui.

Bien sûr, vous devez utiliser SSL/TLS pour envoyer des mails depuis vos clients (Thunderbird, K9Mail, AndroMail...) si vous le ne faites pas cela revient à envoyer ses lettres sans enveloppe (mais comme vous êtes un bon administrateur système ceci était déjà configuré).

La configuration est à faire dans le fichier suivant :

/etc/postfix/main.cf

Et les lignes à ajouter/modifier sont les suivantes :

smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5, LOW, MEDIUM, RC4
smtpd_tls_mandatory_ciphers = high
smtpd_use_tls=yes

Tout comme pour apache, on exclut totalement SSLv2 et SSLv3, et en profite pour ne garder que des algorithmes sécurisés.

Serveur mail - dovecot (imaps)

Bien que le titre soit trompeur, cela est aussi valable pour pops (mais qui utilise encore POP3 ?).

La configuration est assez similaire à celle présente dans Apache, il faut modifier le 10-ssl.conf avec les lignes suivantes :

ssl_protocols = !SSLv2 !SSLv3
ssl_cipher_list = AES256+EECDH:AES256+EDH:HIGH:!LOW:!MEDIUM:!aNULL:!MD5:!RC4

Comment vérifier ?

Pour les serveurs WEB, vous pouvez utiliser l'outil SSL Labs de Qualys qui est très bien et donnera une note à votre configuration.

Pour les autres services, vous pouvez utiliser l'outil sslscan qui fait très bien son boulot :

sslscan --no-failed serveur:port

Exemple, pour vérifier la configuration du serveur smtps (port 465) :

sslscan --no-failed www.aplu.fr:465      
                   _
           ___ ___| |___  ___ __ _ _ __          
          / __/ __| / __|/ __/ _` | '_ \      
          \__ \__ \ \__ \ (_| (_| | | | |       
          |___/___/_|___/\___\__,_|_| |_| 

                  Version 1.8.2
             http://www.titania.co.uk
        Copyright Ian Ventura-Whiting 2009

Testing SSL server www.aplu.fr on port 465

  Supported Server Cipher(s):
    Accepted  TLSv1  256 bits  ECDHE-RSA-AES256-SHA
    Accepted  TLSv1  256 bits  DHE-RSA-AES256-SHA
    Accepted  TLSv1  256 bits  DHE-RSA-CAMELLIA256-SHA
    Accepted  TLSv1  256 bits  AES256-SHA
    Accepted  TLSv1  256 bits  CAMELLIA256-SHA
    Accepted  TLSv1  168 bits  ECDHE-RSA-DES-CBC3-SHA
    Accepted  TLSv1  168 bits  EDH-RSA-DES-CBC3-SHA
    Accepted  TLSv1  168 bits  DES-CBC3-SHA
    Accepted  TLSv1  128 bits  ECDHE-RSA-AES128-SHA
    Accepted  TLSv1  128 bits  DHE-RSA-AES128-SHA
    Accepted  TLSv1  128 bits  DHE-RSA-CAMELLIA128-SHA
    Accepted  TLSv1  128 bits  AES128-SHA
    Accepted  TLSv1  128 bits  CAMELLIA128-SHA

  Prefered Server Cipher(s):
    TLSv1  256 bits  ECDHE-RSA-AES256-SHA

Si vous voyez apparaître SSLv3, quelque chose est mal configuré ou vous avez implémenté le TLS_FALLBACK_SCSV (comme Google l'a fait).

Haut de page