Dans le cadre de la documentation associée à ce produit, nous nous efforçons d’utiliser un langage exempt de préjugés. Dans cet ensemble de documents, le langage exempt de discrimination renvoie à une langue qui exclut la discrimination en fonction de l’âge, des handicaps, du genre, de l’appartenance raciale de l’identité ethnique, de l’orientation sexuelle, de la situation socio-économique et de l’intersectionnalité. Des exceptions peuvent s’appliquer dans les documents si le langage est codé en dur dans les interfaces utilisateurs du produit logiciel, si le langage utilisé est basé sur la documentation RFP ou si le langage utilisé provient d’un produit tiers référencé. Découvrez comment Cisco utilise le langage inclusif.
Cisco a traduit ce document en traduction automatisée vérifiée par une personne dans le cadre d’un service mondial permettant à nos utilisateurs d’obtenir le contenu d’assistance dans leur propre langue. Il convient cependant de noter que même la meilleure traduction automatisée ne sera pas aussi précise que celle fournie par un traducteur professionnel.
Ce document décrit les étapes pour personnaliser les chaînes de chiffrement préconfigurées sur Expressway.
Cisco vous recommande de prendre connaissance des rubriques suivantes :
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.
La configuration par défaut d’Expressway inclut des chaînes de chiffrement préconfigurées, qui, pour des raisons de compatibilité, permettent la prise en charge de certains chiffrements qui peuvent être considérés comme faibles dans le cadre de certaines politiques de sécurité d’entreprise. Il est possible de personnaliser les chaînes de chiffrement afin de les affiner pour les adapter aux politiques spécifiques de chaque environnement.
Dans Expressway, il est possible de configurer une chaîne de chiffrement indépendante pour chacun de ces protocoles :
Les chaînes de chiffrement obéissent au format OpenSSL décrit dans la page OpenSSL Chiphers Manpage. La version actuelle d’Expressway X15.0.2 est fournie avec la chaîne par défaut EECDH : EDH : HIGH : -AES256+SHA : !MEDIUM : ! LOW : ! 3DES : ! MD5 : ! PSK : ! eNULL : ! aNULL : ! aDH préconfigurée pour tous les protocoles de la même manière. Sur la page d'administration Web, sous Maintenance > Security > Ciphers, vous pouvez modifier la chaîne de chiffrement attribuée à chaque protocole, afin d'ajouter ou de supprimer des chiffrements ou des groupes de chiffrements spécifiques à l'aide d'un algorithme commun.
En utilisant la commande openssl ciphers -V "<chaîne de chiffrement>", vous pouvez sortir une liste avec tous les chiffrements qu'une certaine chaîne autorise, ce qui est utile pour inspecter visuellement les chiffrements. Cet exemple montre le résultat lors de l’inspection de la chaîne de chiffrement par défaut d’Expressway :
~ # openssl ciphers -V "EECDH:EDH:HIGH:-AES256+SHA:!MEDIUM:!LOW:!3DES:!MD5:!PSK:!eNULL:!aNULL:!aDH"
0x13,0x02 - TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD
0x13,0x03 - TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD
0x13,0x01 - TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD
0xC0,0x2C - ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
0xC0,0x30 - ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
0xCC,0xA9 - ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
0xCC,0xA8 - ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
0xC0,0xAD - ECDHE-ECDSA-AES256-CCM TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESCCM(256) Mac=AEAD
0xC0,0x2B - ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD
0xC0,0x2F - ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
0xC0,0xAC - ECDHE-ECDSA-AES128-CCM TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESCCM(128) Mac=AEAD
0xC0,0x24 - ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384
0xC0,0x28 - ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
0xC0,0x23 - ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256
0xC0,0x27 - ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
0xC0,0x09 - ECDHE-ECDSA-AES128-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA1
0xC0,0x13 - ECDHE-RSA-AES128-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
0x00,0xA3 - DHE-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(256) Mac=AEAD
0x00,0x9F - DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
0xCC,0xAA - DHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=DH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
0xC0,0x9F - DHE-RSA-AES256-CCM TLSv1.2 Kx=DH Au=RSA Enc=AESCCM(256) Mac=AEAD
0x00,0xA2 - DHE-DSS-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(128) Mac=AEAD
0x00,0x9E - DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD
0xC0,0x9E - DHE-RSA-AES128-CCM TLSv1.2 Kx=DH Au=RSA Enc=AESCCM(128) Mac=AEAD
0x00,0x6B - DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256
0x00,0x6A - DHE-DSS-AES256-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(256) Mac=SHA256
0x00,0x67 - DHE-RSA-AES128-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(128) Mac=SHA256
0x00,0x40 - DHE-DSS-AES128-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(128) Mac=SHA256
0x00,0x33 - DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1
0x00,0x32 - DHE-DSS-AES128-SHA SSLv3 Kx=DH Au=DSS Enc=AES(128) Mac=SHA1
0x00,0x9D - AES256-GCM-SHA384 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(256) Mac=AEAD
0xC0,0x9D - AES256-CCM TLSv1.2 Kx=RSA Au=RSA Enc=AESCCM(256) Mac=AEAD
0x00,0x9C - AES128-GCM-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(128) Mac=AEAD
0xC0,0x9C - AES128-CCM TLSv1.2 Kx=RSA Au=RSA Enc=AESCCM(128) Mac=AEAD
0x00,0x3D - AES256-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA256
0x00,0x3C - AES128-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA256
0x00,0x2F - AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
~ #
En capturant une négociation TLS dans une capture de paquets, vous pouvez inspecter les détails de la négociation de chiffrement à l'aide de Wireshark.
Le processus d’échange TLS inclut un paquet ClientHello envoyé par le périphérique client, fournissant la liste des chiffrements qu’il prend en charge en fonction de sa chaîne de chiffrement configurée pour le protocole de connexion. Le serveur examine la liste, la compare à sa propre liste de chiffrements autorisés (déterminés par sa propre chaîne de chiffrage) et choisit un chiffrage pris en charge par les deux systèmes, à utiliser pour la session chiffrée. Il répond ensuite avec un paquet ServerHello indiquant le chiffre choisi. Il existe des différences importantes entre les dialogues d'échange TLS 1.2 et 1.3, cependant le mécanisme de négociation de chiffrement utilise le même principe dans les deux versions.
Voici un exemple de négociation de chiffrement TLS 1.3 entre un navigateur Web et Expressway sur le port 443, comme illustré dans Wireshark :
Tout d'abord, le navigateur envoie un paquet ClientHello avec la liste des chiffrements qu'il prend en charge :
Expressway vérifie sa chaîne de chiffrement configurée pour le protocole HTTPS, et trouve un chiffre que lui-même et le client prennent en charge. Dans cet exemple, le chiffre ECDHE-RSA-AES256-GCM-SHA384 est sélectionné. Expressway répond avec son paquet ServerHello indiquant le chiffre sélectionné :
Le format de chaîne de chiffrement OpenSSL comprend plusieurs caractères spéciaux afin d'effectuer des opérations sur la chaîne, telles que la suppression d'un chiffrement spécifique ou d'un groupe de chiffrements partageant un composant commun. Étant donné que ces personnalisations ont généralement pour objectif de supprimer les chiffrements, les caractères utilisés dans ces exemples sont les suivants :
Les deux peuvent être utilisés pour supprimer un chiffre de la chaîne, cependant ! est préférable. Pour obtenir la liste complète des caractères spéciaux, consultez la page OpenSSL Chiphers Manpage.
Remarque : le site OpenSSL indique que lorsque vous utilisez le caractère !, "les chiffrements supprimés ne peuvent jamais réapparaître dans la liste même s'ils sont explicitement indiqués". Cela ne signifie pas que les chiffrements sont supprimés définitivement du système, il se réfère à la portée de l'interprétation de la chaîne de chiffrement.
Afin de désactiver un chiffre spécifique, ajoutez à la chaîne par défaut le séparateur :, le signe ! ou- et le nom du chiffre à désactiver. Le nom de chiffrement doit obéir au format d'attribution de noms OpenSSL, disponible dans la page OpenSSL Ciphers Manpage. Par exemple, si vous devez désactiver le chiffrement AES128-SHA pour les connexions SIP, configurez une chaîne de chiffrement comme suit :
EECDH:EDH:HIGH:-AES256+SHA:!MEDIUM:!LOW:!3DES:!MD5:!PSK:!eNULL:!aNULL:!aDH:!AES128-SHA
Ensuite, accédez à la page Web Admin d’Expressway, accédez à Maintenance > Sécurité > Chiffres, attribuez la chaîne personnalisée au(x) protocole(s) requis, puis cliquez sur Enregistrer. Pour que la nouvelle configuration soit appliquée, un redémarrage du système est nécessaire. Dans cet exemple, la chaîne personnalisée est attribuée au protocole SIP sous Chiffres SIP TLS :
Remarque : dans le cas d’un cluster Expressway, effectuez les modifications sur le serveur principal uniquement. La nouvelle configuration est répliquée sur les autres membres du cluster.
Attention : utilisez la séquence de redémarrage de cluster recommandée fournie dans le Guide de déploiement de création et de maintenance de cluster Cisco Expressway. Commencez par redémarrer le serveur principal, attendez qu'il soit accessible via l'interface Web, puis faites de même avec chaque homologue dans l'ordre selon la liste configurée sous Système > Clustering.
Afin de désactiver un groupe de chiffrements à l'aide d'un algorithme commun, ajoutez à la chaîne par défaut le séparateur :, le signe ! ou - et le nom de l'algorithme à désactiver. Les noms d'algorithme pris en charge sont disponibles dans la page OpenSSL Ciphers Manpage. Par exemple, si vous devez désactiver tous les chiffrements qui utilisent l'algorithme DHE, configurez une chaîne de chiffrement comme ceci :
EECDH:EDH:HIGH:-AES256+SHA:!MEDIUM:!LOW:!3DES:!MD5:!PSK:!eNULL:!aNULL:!aDH:!DHE
Accédez à la page Expressway web admin, accédez à Maintenance > Security > Ciphers, attribuez la chaîne personnalisée au(x) protocole(s) requis, et cliquez sur Save. Pour que la nouvelle configuration soit appliquée, un redémarrage du système est nécessaire.
Remarque : dans le cas d’un cluster Expressway, effectuez les modifications sur le serveur principal uniquement. La nouvelle configuration est répliquée sur les autres membres du cluster.
Attention : utilisez la séquence de redémarrage de cluster recommandée fournie dans le Guide de déploiement de création et de maintenance de cluster Cisco Expressway. Commencez par redémarrer le serveur principal, attendez qu'il soit accessible via l'interface Web, puis faites de même avec chaque homologue dans l'ordre selon la liste configurée sous Système > Clustering.
Vous pouvez inspecter la chaîne de chiffrement personnalisée en utilisant la commande openssl ciphers -V "<chaîne de chiffrement>". Vérifiez le résultat afin de confirmer que les chiffrements indésirables ne sont plus répertoriés après les modifications. Dans cet exemple, la chaîne de chiffrement EECDH:EDH:HIGH:-AES256+SHA:!MEDIUM:!LOW:!3DES:!MD5:!PSK:!eNULL:!aNULL:!aDH:!DHE est inspectée. Le résultat de la commande confirme que la chaîne n'autorise aucun des chiffrements qui utilisent l'algorithme DHE :
~ # openssl ciphers -V "EECDH:EDH:HIGH:-AES256+SHA:!MEDIUM:!LOW:!3DES:!MD5:!PSK:!eNULL:!aNULL:!aDH:!DHE"
0x13,0x02 - TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD
0x13,0x03 - TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD
0x13,0x01 - TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD
0xC0,0x2C - ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
0xC0,0x30 - ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
0xCC,0xA9 - ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
0xCC,0xA8 - ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
0xC0,0xAD - ECDHE-ECDSA-AES256-CCM TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESCCM(256) Mac=AEAD
0xC0,0x2B - ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD
0xC0,0x2F - ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
0xC0,0xAC - ECDHE-ECDSA-AES128-CCM TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESCCM(128) Mac=AEAD
0xC0,0x24 - ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384
0xC0,0x28 - ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
0xC0,0x23 - ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256
0xC0,0x27 - ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
0xC0,0x09 - ECDHE-ECDSA-AES128-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA1
0xC0,0x13 - ECDHE-RSA-AES128-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
0x00,0x9D - AES256-GCM-SHA384 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(256) Mac=AEAD
0xC0,0x9D - AES256-CCM TLSv1.2 Kx=RSA Au=RSA Enc=AESCCM(256) Mac=AEAD
0x00,0x9C - AES128-GCM-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(128) Mac=AEAD
0xC0,0x9C - AES128-CCM TLSv1.2 Kx=RSA Au=RSA Enc=AESCCM(128) Mac=AEAD
0x00,0x3D - AES256-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA256
0x00,0x3C - AES128-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA256
0x00,0x2F - AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
~ #
Vous pouvez utiliser la commande openssl s_client afin de vérifier qu'une tentative de connexion utilisant un chiffrement désactivé est rejetée. Utilisez l’option -connect pour spécifier votre adresse et votre port Expressway, et utilisez l’option -cipher pour spécifier le chiffrement unique à négocier par le client pendant la connexion TLS :
openssl s_client -connect <adresse>:<port> -cipher <chiffre> -no_tls1_3
Dans cet exemple, une connexion TLS vers Expressway est tentée à partir d’un PC Windows sur lequel openssl est installé. Le PC, en tant que client, négocie uniquement le chiffrement DHE-RSA-AES256-CCM indésirable, qui utilise l'algorithme DHE :
C:\Users\Administrator>openssl s_client -connect exp.example.com:443 -cipher DHE-RSA-AES256-CCM -no_tls1_3
Connecting to 10.15.1.7
CONNECTED(00000154)
D0130000:error:0A000410:SSL routines:ssl3_read_bytes:ssl/tls alert handshake failure:..\ssl\record\rec_layer_s3.c:865:SSL alert number 40
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 118 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1721019437
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
---
C:\Users\Administrator>
La sortie de la commande montre que la tentative de connexion échoue avec un message d’erreur « ssl/tls alert handshake failure:..\ssl\record\rec_layer_s3.c:865:SSL alert number 40 », car l’Expressway est configuré pour utiliser la chaîne de chiffrement EECDH:EDH:HIGH:-AES256+SHA:!MEDIUM:!LOW:!3DES:!MD5:!PSK:!eNULL:!aNULL:!aDH:!DHE pour les connexions HTTPS, ce qui désactive les chiffrements qui utilisent l’algorithme DHE.
Remarque : pour que les tests avec la commande openssl s_client fonctionnent comme expliqué, l'option -no_tls1_3 doit être passée à la commande. S'il n'est pas inclus, le client insère automatiquement des chiffrements TLS 1.3 dans le paquet ClientHello :
Si l’Expressway cible prend en charge ces chiffrements, l’un d’eux peut être choisi au lieu du chiffre spécifique que vous devez tester. La connexion a réussi, ce qui peut vous faire croire qu'une connexion a été possible en utilisant le chiffrement désactivé passé à la commande avec l'option -cipher.
Vous pouvez collecter une capture de paquets, à partir du périphérique de test ou de l’Expressway, tout en effectuant un test de connexion à l’aide de l’un des chiffrements désactivés. Vous pouvez ensuite l'inspecter avec Wireshark afin d'analyser plus en détail les événements de connexion.
Recherchez ClientHello envoyé par le périphérique de test. Confirmez qu'il négocie uniquement le chiffrement test indésirable, dans cet exemple un chiffrement utilisant l'algorithme DHE :
:
Confirmez qu’Expressway répond par un paquet d’alerte TLS fatal en refusant la connexion. Dans cet exemple, comme Expressway ne prend pas en charge les chiffrements DHE par sa chaîne de chiffrement configurée pour le protocole HTTPS, il répond avec un paquet d’alerte TLS fatal contenant le code d’échec 40.
Révision | Date de publication | Commentaires |
---|---|---|
1.0 |
23-Jul-2024 |
Première publication |