web-dev-qa-db-fra.com

Comment activer le secret de transmission parfait par défaut sur Apache?

Attention: veuillez utiliser uniquement les recommandations pour la configuration d'Apache à partir des réponses ci-dessous. Pour quel (s) chiffrement (s) à utiliser - les normes de sécurité changent avec le temps et certains des conseils de sécurité ci-dessous sont déjà obsolètes

À la suite d’événements récents, j’ai reconsidéré ma configuration Apache. Actuellement, la configuration de mon site Apache ressemble à ceci:

 <IfModule mod_ssl.c>
    <VirtualHost *:80>
            ServerName example.com
            ServerAlias www.example.com
            Redirect permanent / https://example.com
    </VirtualHost>

    <VirtualHost *:443>
            ServerAdmin webmaster@localhost
            ServerName example.com

            DocumentRoot /var/www-wordpress
            <Directory />
                    Options FollowSymLinks
                    AllowOverride None
            </Directory>
            <Directory /var/www-wordpress>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride FileInfo
                    Order allow,deny
                    allow from all
            </Directory>

            ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
            <Directory "/usr/lib/cgi-bin">
                    AllowOverride None
                    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                    Order allow,deny
                    Allow from all
            </Directory>

            ErrorLog ${Apache_LOG_DIR}/error.log
            LogLevel warn

            CustomLog ${Apache_LOG_DIR}/ssl_access.log combined
            SSLCertificateFile    /etc/ssl/certs/example.com.crt
            SSLCertificateKeyFile /etc/ssl/private/example.com.key
            SSLCertificateChainFile /etc/ssl/certs/sub.class1.server.ca.pem
            <FilesMatch "\.(cgi|shtml|phtml|php)$">
                    SSLOptions +StdEnvVars
            </FilesMatch>
            <Directory /usr/lib/cgi-bin>
                    SSLOptions +StdEnvVars
            </Directory>

            BrowserMatch "MSIE [2-6]" \
                    nokeepalive ssl-unclean-shutdown \
                    downgrade-1.0 force-response-1.0
            BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </VirtualHost>

Que dois-je faire pour prendre en charge le secret parfaitement transmis? Comment puis-je activer le secret de transmission parfait SSL par défaut? Comment pourrais-je l'appliquer?

66
Jannik Jochem

Que diriez-vous:

SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+RC4:EDH+RC4:RC4-SHA:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5

Notez l'ajout de l'indicateur -SSLv3 pour désactiver SSLv3. Ceci est ajouté pour se protéger contre le attaque POODLE .

Cela préférera un secret de transmission parfait, mais pas au détriment de la vulnérabilité à l'attaque BEAST. Apache n'ayant pas le moyen de configurer les préférences de chiffrement en fonction de la version du protocole, je le simule en faisant référence aux chiffrements uniquement disponibles dans les protocoles les plus récents. Plus précisément, AES était uniquement disponible avec le hachage SHA1 jusqu'au TLSv1.2. Ainsi, la liste commence par les chiffres de Diffie-Hellman éphémère TLSv1.2, puis RC4 (d'abord avec DH éphémère, puis sans), et enfin une option AES vulnérable pour BEAST. L'exclusion sans autorisation/chiffrement faible/hachage faible à la fin est juste pour une bonne hygiène et pourrait être omise puisqu'aucun chiffrement de ce type n'a été introduit. Si la performance est une préoccupation, utilisez uniquement EECDH et omettez EDH.

En combinaison avec Apache 2.2 (donc pas EECDH comme le dit @Bruno), par https://www.ssllabs.com/ssltest/analyze.html , cela permet d'obtenir PFS pour iOS Safari uniquement. IE et Firefox étant TLSv1.0, ils ont donc le droit d’utiliser RC4 pour éviter BEAST. (Hélas, EDH RC4 n’existe pas, alors sans EECDH, vous renoncez à PFS). croire, le meilleur espoir de ces navigateurs sur Apache 2.2. Chrome est le seul mal servi, car il supporte TLSv1.1 et pourrait utiliser EDH AES sans être vulnérable à BEAST. Au lieu de cela RC4-RSA est comme Firefox et IE.Mise à niveau Apache pour permettre à EECDH RC4 d'obtenir PFS pour Firefox, IE et Chrome.

Mise à jour 2013-11-09:

J'ai trouvé quelques recommandations alternatives sur le Web. Ils accordent moins d'importance à la protection de BEAST (peut-être plus judicieuse; BEAST l'est la plupart du temps, côté client atténué ) et davantage à un secret parfait. À des degrés divers, ils ont également des préférences plus fortes pour le GCM et une plus grande réticence à accepter le RC4.

Je pense que les recommandations suivantes méritent une attention particulière:

Personnellement, je vais aller avec Mozilla OpSec. Leur raisonnement est bien expliqué sur leur page. À noter, ils préfèrent AES128 à AES256. Dans leurs mots: " [AES128] fournit une bonne sécurité, est très rapide et semble être plus résistant aux attaques par minutage."

Il convient de noter dans les recommandations de Ivan Ristic et Geoffroy Gramaize que SSLv3 est désactivé. Je pense que cela ne fait que très peu caser IE6, bien que certaines différences liées à la sécurité entre SSLv3 et TLS v1.0 soient mentionnées sur Wikipedia .

Aussi avant je ne parlais pas de CRIME et INFRACTION . Pour vous protéger contre CRIME, désactivez la compression SSL. Ceci est inclus dans les exemples liés. Pour être protégé contre BREACH, vous devez désactiver la compression au niveau HTTP. Pour Apache 2.4, il suffit de le faire une fois globalement:

<Location />
  SetEnvIfExpr "%{HTTPS} == 'on'" no-gzip
</Location>

Pour les anciennes versions d'Apache, placez-le dans chaque VirtualHost où SSLEngine est activé:

<Location />
    SetEnv no-gzip
</Location>

Mise à jour du 14/10/2014: Le guide OpSec de Mozilla est désormais scindé en recommandations pour la compatibilité ancienne/intermédiaire/moderne. Avec les paramètres intermédiaires ou modernes, vous obtenez SSLv3 désactivé. Cela protégera contre l'attaque de POODLE.

93
Lorrin

De ma propre compréhension, vous devez activer SSLHonorCipherOrder et ajouter le préfixe SSLCipherSuite avec ECDHE et DHE à l'aide des chiffrements de openssl ciphers -v

De mon /etc/Apache2/mods-available/ssl.conf:

SSLHonorCipherOrder on
SSLCipherSuite ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:DHE-RSA-CAMELLIA128-SHA:AES128-SHA:RC4-SHA:HIGH:!aNULL:!MD5:!ADH

Pour tester votre site Web, vous pouvez utiliser: https://www.ssllabs.com/ssltest

Remarque: DHE Eliptic Curve semble fonctionner uniquement avec Apache 2.3.3 ou supérieur (voir source et le commentaire de Bruno).

6
kunnix

Entrez ce code de chiffrement dans votre httpd.conf dans la directive main/core conf:

SSLCipherSuite AES128+EECDH:AES128+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off 
SSLUseStapling on 
SSLStaplingCache "shmcb:logs/stapling-cache(150000)" 

Vous pouvez même vérifier son degré de sécurité en le testant à l'adresse suivante: https://www.ssllabs.com/ssltest/analyze.html ?

3
VaTo

Les suites de chiffrement qui fournissent un secret de transfert parfait sont celles qui utilisent une forme éphémère de l'échange de clés Diffie-Hellman. Leur inconvénient est leur surcharge, qui peut être améliorée en utilisant les variantes de courbe elliptique (voir blog de Vincent Bernat .)

Les suites de chiffrement dans Apache Httpd (à condition que vous utilisiez mod_ssl compilé avec OpenSSL) sont configurés à l’aide de SSLCipherSuite, qui prend une liste comme vous le verriez si vous utilisiez le openssl ciphers commande. Si vous regardez la page de manuel OpenSSL , vous trouverez kEDH ce que vous recherchez. (Vous pouvez également répertorier les suites de chiffrement individuellement.)

3
Bruno

Essayez ce code dans votre fichier ssl.conf:

SSLProtocol +TLSv1.2 +TLSv1.1 +TLSv1
SSLCompression off
SSLHonorCipherOrder on
SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA:AES256-GCM-SHA384:AES256-SHA256:CAMELLIA256-SHA:ECDHE-RSA-AES128-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:CAMELLIA128-SHA

Au fait,

Conseil d'expert: L'astuce de l'enregistrement fractionné (1/n-1) est implémentée dans Firefox depuis un certain temps. Ainsi, vous pouvez désactiver en toute sécurité RC4 sur Firefox dans le menu de configuration avancée. Pour ce faire, entrez "about: config" dans votre barre d’adresse, puis recherchez "rc4" et basculez toutes les valeurs trouvées sur "false". Si vous rencontrez des problèmes de connexion, rétablissez la valeur true pour ces paramètres.

https://cc.dcsec.uni-hannover.de/

Ce site Web vous donne des informations sur les suites de chiffrement SSL prises en charge par votre navigateur pour la sécurisation des connexions HTTPS.

2
huuu

Cet article vous aidera à configurer la sécurité avancée et à vous tenir au courant des normes en vigueur - https://community.qualys.com/blogs/securitylabs/2013/08/05/configuring-Apache-nginx-and- openssl-for-forward-secrecy

À compter du 16/09/2015, vous obtiendrez un A sur les résultats du test SSLLabs.

SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:EDH+aRSA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4
2
Mike M

Regardez https://cipherli.st

Vous y trouverez des extraits de configuration copier-coller pour plusieurs services, ce qui devrait garantir des paramètres de sécurité ssl forts.

2
Adam

J'ai obtenu un grade A (septembre 2016) sur SSLLabs supportant toujours Windows XP/Internet Explorer 8 utilisant cette configuration ssl.conf sur Apache:

SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite EECDH+AESGCM:AES256+EECDH:DES-CBC3-SHA

En bref: seul TLS est autorisé: toutes les versions sont prises en charge pour la compatibilité et le chiffrement DES-CBC3-SHA est également autorisé pour la compatibilité. Le premier, préféré deux chiffrements utilisent courbe elliptique Diffie-Hellman , le dernier a été ajouté en tant que solution de repli car ceci ne bonne option parmi les chiffrements disponibles XP/IE . Si vous avez installé la dernière version OpenSSL disponible, ce mélange est suffisant pour obtenir un A au moment où j'écris.

J'espère que c'est utile.

0
chirale