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