Table des matières

Introduction

Conditions préalables

Exigences

Composants utilisés

Informations générales

Vérifier la chaîne de chiffrement

Inspecter la négociation de chiffrement dans la connexion TLS avec une capture de paquets

Configurer

Désactiver un chiffrement spécifique

Désactiver un groupe de chiffrements à l'aide d'un algorithme commun

Vérifier

Examinez la liste des chiffrements autorisés par la chaîne de chiffrement

Tester une connexion TLS en négociant un chiffrement désactivé

Inspecter une capture de paquet d'un TLSHandshake à l'aide d'un chiffrement désactivé

Informations connexes

Introduction

Ce document décrit les étapes pour personnaliser les chaînes de chiffrement préconfigurées sur Expressway.

Conditions préalables

Exigences

Cisco vous recommande de prendre connaissance des rubriques suivantes :

- Cisco Expressway ou Cisco VCS.

- Protocole TLS.

Composants utilisés

Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :

- Cisco Expressway version X15.0.2.

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.

Informations générales

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 :

- HTTPS

- LDAP

- Mandataire inverse

- SIP

- SMTP

- Provisionnement TMS

- Détection des serveurs UC

- XMPP

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.

Vérifier la chaîne de chiffrement

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

~ #

Inspecter la négociation de chiffrement dans la connexion TLS avec une capture de paquets

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 :

Exemple de connexion TLS dans Wireshark

Tout d'abord, le navigateur envoie un paquet ClientHello avec la liste des chiffrements qu'il prend en charge :

Exemple de paquet Hello client dans Wireshark

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é :

Exemple de paquet Hello de serveur dans Wireshark

Configurer

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 :

- Caractère -, utilisé pour supprimer les chiffres de la liste. Certains ou tous les chiffrements supprimés peuvent être autorisés à nouveau par des options apparaissant plus loin dans la chaîne.

- Le caractère !, également utilisé pour supprimer les chiffres de la liste. Lors de son utilisation, les chiffrements supprimés ne peuvent pas être autorisés à nouveau par d'autres options apparaissant plus tard dans la chaîne.

- Le caractère :, qui sert de séparateur entre les éléments de la liste.

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.

Désactiver un chiffrement spécifique

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 :

Page des paramètres de chiffrement sur le portail d’administration Web Expressway

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.

Désactiver un groupe de chiffrements à l'aide d'un algorithme commun

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.

Vérifier

Examinez la liste des chiffrements autorisés par la chaîne de chiffrement

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

~ #

Tester une connexion TLS en négociant un chiffrement désactivé

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 :

Paquet ClientHello avec chiffrement ajouté automatiquement

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.

Inspecter une capture de paquet d'une connexion TLS à l'aide d'un chiffrement désactivé

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 :

Exemple de paquet Hello client dans Wireshark

:

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.

Un paquet d'alerte TLS fatal dans Wireshark

Informations connexes

- Page de manuel OpenSSL Ciphers

- Guide de l’administrateur de Cisco Expressway (X15.0) - Chapitre : Gestion de la sécurité - Configuration de la version TLS minimale et des suites de chiffrement