Sessions NETCONF sur tls (Transport Layer Security)
RÉSUMÉ Les clients NETCONF (Network Configuration Protocol) peuvent utiliser le protocole TLS (Transport Layer Security) avec une authentification mutuelle basée sur des certificats X.509 pour établir une session NETCONF avec les équipements Junos pris en charge.
Comprendre les connexions NETCONF-over-TLS
- Avantages de NETCONF sur TLS
- Présentation de NETCONF over TLS
- Comprendre le mappage du client TLS vers le mappage des noms d’utilisateur NETCONF
- Flux de travail de connexion NETCONF-over-TLS
Avantages de NETCONF sur TLS
-
Gestion à distance des équipements à l’aide d’une authentification mutuelle basée sur des certificats
-
Vous permet de gérer plus facilement les réseaux à plus grande échelle qu’avec NETCONF sur SSH
-
Utilise une infrastructure à clé publique pour fournir une authentification mutuelle basée sur des certificats TLS pour le client et le serveur
-
Sécurise la connexion et l’échange des messages NETCONF
-
Garantit l’intégrité des données pour les messages échangés
Présentation de NETCONF over TLS
Vous pouvez établir une session NETCONF (Network Configuration Protocol) sur tls (Transport Layer Security) sur certains équipements Junos, comme alternative à l’établissement d’une session NETCONF sur SSH. TLS est un protocole cryptographique qui utilise l’authentification mutuelle basée sur des certificats et fournit une connexion sécurisée et fiable entre deux équipements. Il s’agit d’un successeur du protocole SSL (Secure Sockets Layer). Lorsque vous établissez une session NETCONF sur TLS, le serveur NETCONF agit comme le serveur TLS, et le client NETCONF est le client TLS.
Les sessions NETCONF sur TLS offrent certains avantages par rapport aux sessions qui utilisent SSH. Alors que SSH authentifie un client à l’aide d’informations d’identification (nom d’utilisateur et mot de passe) ou de clés, TLS utilise des certificats pour authentifier mutuellement le client et le serveur. Les certificats peuvent fournir des informations supplémentaires sur un client et peuvent être utilisés pour authentifier en toute sécurité un équipement sur un autre. Ainsi, alors que les sessions NETCONF sur SSH fonctionnent bien pour la gestion manuelle d’équipements individuels, les sessions NETCONF qui utilisent TLS permettent une communication sécurisée d’équipement à équipement pour mieux gérer et automatiser les équipements dans les réseaux à grande échelle.
Les sessions NETCONF-over-TLS avec les équipements Junos ont les exigences suivantes :
-
Client NETCONF prenant en charge TLS version 1.2
-
Le serveur et le client doivent disposer de certificats de clé publique X.509 signés par une autorité de certification
-
L’infrastructure à clé publique (PKI) Junos doit avoir les certificats locaux et ca appropriés chargés
-
L’équipement Junos est configuré pour NETCONF sur TLS et définit un mappage de certificat par défaut ou de nom d’utilisateur spécifique à NETCONF pour un client
-
Le nom d’utilisateur NETCONF correspond à un compte utilisateur Junos OS valide
TLS utilise des certificats numériques X.509 pour l’authentification du serveur et du client. Un certificat numérique est un moyen électronique de vérifier votre identité par l’intermédiaire d’un tiers de confiance, connu sous le nom d’autorité de certification ou d’autorité de certification (CA). Une autorité de certification émet des certificats numériques, qui peuvent être utilisés pour établir une connexion sécurisée entre deux points de terminaison par le biais de la validation de certificat. La norme X.509 définit le format des certificats. Pour établir une session NETCONF sur TLS sur les équipements Junos pris en charge, le serveur et le client doivent disposer d’un certificat X.509 valide et les certificats doivent être signés par une autorité de certification. Les certificats auto-signés ne peuvent pas être utilisés pour établir des sessions NETCONF sur TLS.
Junos OS PKI fournit une infrastructure pour la gestion numérique des certificats. Pour établir une connexion TLS, vous devez installer les éléments suivants dans la PKI Junos OS :
-
Certificat local du serveur NETCONF et ses certificats CA intermédiaires
Note:Si la chaîne de certificats de serveur ne comprend pas de CA intermédiaires, vous devez configurer le certificat d’autorité de certification racine.
-
Certificat d’autorité de certification racine du client NETCONF requis pour valider le certificat ou la chaîne de certificats du client NETCONF
Une fois que le serveur a vérifié l’identité du client et établi la connexion TLS, il doit dériver le nom d’utilisateur NETCONF de ce client avant de pouvoir établir la session NETCONF. Le nom d’utilisateur NETCONF est le compte d’utilisateur Junos sous lequel les droits et privilèges d’accès sont exécutés les opérations NETCONF. Vous pouvez configurer une liste de mappages de nom d’utilisateur de certificat client à NETCONF, et vous pouvez également configurer un mappage de nom d’utilisateur NETCONF par défaut. Junos OS utilise le mappage par défaut lorsqu’un certificat client ne correspond à aucun des clients configurés. Si le serveur extrait un nom d’utilisateur NETCONF valide, il établit alors la session NETCONF. Pour plus d’informations sur la dérivation du nom d’utilisateur NETCONF, consultez Comprendre le mappage des noms d’utilisateur NETCONF du client TLS.
Le processus Junos tls-proxyd gère la connexion TLS. Il effectue la liaison TLS, chiffre et déchiffre le trafic, détermine le nom d’utilisateur NETCONF et récupère les paramètres d’autorisation de l’utilisateur NETCONF. Le processus tls-proxyd fonctionne conjointement avec le processus de gestion (mgd) pour créer et gérer la session NETCONF. Le workflow de session NETCONF-over-TLS est décrit dans le workflow de connexion NETCONF-over-TLS.
Pour plus d’informations sur NETCONF sur TLS, voir RFC 7589, Utilisation du protocole NETCONF sur la couche de transport (TLS) avec l’authentification Mutual X.509.
Pour plus d’informations sur le protocole Transport Layer Security, voir RFC 5246, Le protocole TLS (Transport Layer Security) version 1.2.
Comprendre le mappage du client TLS vers le mappage des noms d’utilisateur NETCONF
L’identité authentifiée du client NETCONF-over-TLS est le nom d’utilisateur NETCONF. Les équipements Junos exécutent les opérations NETCONF sous les privilèges de compte de cet utilisateur. Vous pouvez configurer la méthode utilisée pour dériver le nom d’utilisateur NETCONF pour les clients individuels, et vous pouvez également définir une méthode par défaut pour dériver le nom d’utilisateur NETCONF pour les clients qui ne correspondent pas à un client configuré.
Vous pouvez configurer le mappage des certificats clients avec les noms d’utilisateur NETCONF au niveau de la [edit system services netconf tls client-identity]
hiérarchie. Pour chaque client, vous configurez l’empreinte du certificat et un type de carte. Si l’empreinte d’un certificat client correspond à une empreinte configurée, Junos OS utilise le type de carte correspondant pour dériver le nom d’utilisateur NETCONF. Vous ne pouvez configurer qu’une seule empreinte par client, et chaque empreinte client doit être unique. Par exemple :
netconf { tls { client-identity client1 { fingerprint 04:D2:96:AF:89:AB:33:A4:F9:5C:0F:34:9E:FC:67:2D:98:C6:08:9B:E8:6C:DE:63:60:1C:F6:CD:1A:43:5A:30:AD; map-type specified; username netconf-user; } client-identity client2 { fingerprint 04:95:71:45:4F:56:10:CA:B1:89:A3:8C:5D:89:CC:BD:01:37:03:EC:B5:4A:55:22:AD:49:DA:9B:D8:8B:3A:21:12; map-type san-dirname-cn; } } }
L’empreinte digitale du certificat configuré utilise le format x509c2n:tls-empreinte digitale défini dans la RFC 7407, modèle de données YANG pour la configuration SNMP. Dans ce format, le premier octet est l’identifiant de l’algorithme de hachage, et les octets restants sont le résultat de l’algorithme de hachage. L’identifiant de l’algorithme de hachage, illustré ici pour référence, est défini dans la RFC 5246, Protocole TLS (Transport Layer Security) version 1.2.
-
md5 : 1
-
sha1: 2
-
sha224: 3
-
sha256 : 4
-
sha384 : 5
-
sha512: 6
Vous pouvez également configurer un mappage par défaut pour le nom d’utilisateur NETCONF au niveau de la [edit system services netconf tls default-client-identity]
hiérarchie. Si l’empreinte digitale d’un certificat client ne correspond à aucun client configuré, l’équipement Junos utilise le type de carte par défaut pour dériver le nom d’utilisateur NETCONF.
Les équipements Junos prennent en charge les types de carte suivants :
-
san-dirname-cn
: utilisez le nom commun (CN) défini pour le champDirName:/CN
DirName (SAN) du certificat client comme nom d’utilisateur NETCONF. -
specified
— Utilisez le nom d’utilisateur NETCONF défini dans l’instructionusername
au même niveau hiérarchique.
Une fois que le serveur a vérifié l’identité du client et établi la connexion TLS, il en tire le nom d’utilisateur NETCONF. Il fait d’abord correspondre l’empreinte de chaque client configuré à l’empreinte du certificat présenté. S’il y a une correspondance, il utilise le type de carte correspondant pour dériver le nom d’utilisateur NETCONF. Si aucune des empreintes configurées ne correspond à celle du certificat du client, le type de carte par défaut est utilisé pour dériver le nom d’utilisateur NETCONF.
Une fois que le serveur a déterminé le nom d’utilisateur, il récupère l’autorisation de l’utilisateur localement ou à distance. Le nom d’utilisateur doit avoir un compte d’utilisateur défini localement sur l’équipement, ou il doit être authentifié par un serveur LDAP (Lightweight Directory Access Protocol), qui le mappe ensuite à un compte de modèle d’utilisateur défini localement sur l’équipement Junos. Si le nom d’utilisateur extrait n’est pas un utilisateur local ou distant valide, la connexion TLS est alors terminée.
Flux de travail de connexion NETCONF-over-TLS
L’équipement Junos agit comme le serveur TLS et NETCONF. Le serveur écoute les connexions NETCONF-over-TLS entrantes sur le port TCP 6513. Le client NETCONF, qui est également le client TLS, initie une connexion avec le serveur sur ce port.
Le client et le serveur effectuent les actions suivantes pour établir et utiliser la session NETCONF sur TLS :
-
Le client envoie un message TLS ClientHello pour lancer la négociation TLS.
-
Le serveur envoie un message ServerHello, la chaîne de certificats du serveur et un message CertificateRequest pour demander un certificat au client.
-
Le client vérifie l’identité du serveur et envoie la chaîne de certificats du client.
-
Le serveur vérifie la chaîne de certificats client avec l’autorité de certification racine du client, qui a été préconfigurée sur le serveur.
-
Le serveur tire le nom d’utilisateur NETCONF de ce client.
-
Si le nom d’utilisateur NETCONF est valide, le serveur lance la session NETCONF et le serveur et le client échangent des messages NETCONF
<hello>
. -
Le client effectue des opérations NETCONF à l’aide des droits et privilèges d’accès de l’utilisateur NETCONF.
-
Le client exécute l’opération
<close-session>
pour mettre fin à la session NETCONF, qui ferme ensuite la connexion TLS.
Le serveur ne parvient pas à établir la session NETCONF sur TLS dans les scénarios suivants :
-
Le certificat du serveur ou du client a expiré ou s’autosigné.
-
Le client ne fournit pas de certificat.
-
Le client n’envoie pas ses certificats ca intermédiaires.
-
Le certificat d’autorité de certification racine du client n’est pas configuré sur le serveur.
-
Le serveur ne peut pas mapper le certificat client à un type de carte configuré ou par défaut pour dériver le nom d’utilisateur NETCONF.
-
Le serveur utilise le type de
san-dirname-cn
carte pour dériver le nom d’utilisateur NETCONF du client, mais le certificat du client ne spécifie pas de nom d’utilisateur dans le champ correspondant.
Voir aussi
Comment établir une session NETCONF sur TLS
Un système de gestion du réseau (NMS) est utilisé pour gérer à distance l’équipement Junos. Vous pouvez établir une session NETCONF sur TLS entre un système de gestion du réseau et les équipements Junos pris en charge. Le NMS est le client NETCONF et TLS, et l’équipement Junos est le serveur NETCONF et TLS.
Avant que le client et le serveur puissent établir une session NETCONF sur TLS, vous devez satisfaire aux exigences décrites dans les sections suivantes :
- Installer le logiciel client TLS sur le système de gestion du réseau
- Obtenir des certificats X.509 pour le serveur et le client
- Installer le certificat local du serveur dans la PKI Junos
- Installer les certificats CA dans la PKI Junos
- Activer le service NETCONF sur TLS
- Configurer le mappage des noms d’utilisateur TLS client-NETCONF
- Configurer le mappage des noms d’utilisateur NETCONF par défaut
- Configurer le compte utilisateur pour l’utilisateur NETCONF
- Démarrez la session NETCONF-over-TLS
Installer le logiciel client TLS sur le système de gestion du réseau
Pour établir une session NETCONF à l’aide de TLS, le système de gestion du réseau doit d’abord établir une connexion TLS avec l’équipement Junos. Ainsi, le système de gestion du réseau nécessite un logiciel pour gérer le protocole TLS. Par exemple, vous pouvez installer et utiliser la boîte à outils OpenSSL, qui est une boîte à outils pour les protocoles TLS (Transport Layer Security) et Secure Sockets Layer (SSL). Il est sous licence de type Apache.
Pour plus d’informations sur OpenSSL, voir https://www.openssl.org.
Obtenir des certificats X.509 pour le serveur et le client
Le protocole TLS utilise des certificats de clé publique X.509 pour authentifier l’identité du serveur et du client. Pour établir une session NETCONF sur TLS, le serveur et le client doivent avoir un certificat X.509 et le certificat doit être signé par une autorité de certification (CA) valide. Les certificats auto-signés ne sont pas acceptés pour les sessions NETCONF sur TLS.
Pour utiliser OpenSSL pour obtenir un certificat pour le client NETCONF :
De même, générez le certificat du serveur.
-
Générez une clé privée et spécifiez la longueur de la clé en bits.
user@nms:~$ openssl genrsa -out server.key 2048 Generating RSA private key, 2048 bit long modulus (2 primes) ......................................................+++++ .............+++++ e is 65537 (0x010001)
-
Générez une demande de signature de certificat (CSR).
user@nms:~$ openssl req -new -key server.key -out server.csr -sha256 -subj "/C=US/ST=CA/L=Sunnyvale/O=Juniper/CN=host.example.com"
-
Générez le certificat en effectuant l’une des opérations suivantes :
-
Envoyez le CSR à une autorité de certification pour demander un certificat X.509.
-
Signez le CSR avec une autorité de certification pour générer le certificat du serveur.
user@nms:~$ openssl x509 -req -in server.csr -CA serverIntCA.crt -CAkey serverIntCA.key -CAcreateserial -out server.crt -days 365 Signature ok subject=C = US, ST = CA, L = Sunnyvale, O = Juniper, CN = host.example.com Getting CA Private Key
-
L’infrastructure à clé publique (PKI) Junos OS fournit une infrastructure pour la gestion numérique des certificats. Vous pouvez également utiliser la PKI Junos OS pour générer la paire de clés et le CSR requis pour le certificat local du serveur. Pour plus d’informations sur junos OS PKI et sur les différentes méthodes d’obtention de certificats, consultez la présentation des certificats numériques avec PKI et la documentation associée.
Installer le certificat local du serveur dans la PKI Junos
Le certificat local du serveur est le certificat X.509 pour l’équipement Junos qui agit comme serveur NETCONF et TLS. Vous devez installer le certificat local de l’équipement dans la PKI Junos.
Pour installer le certificat local du serveur dans la PKI Junos :
Installer les certificats CA dans la PKI Junos
Un certificat numérique est un moyen électronique de vérifier votre identité par l’intermédiaire d’un tiers de confiance, connu sous le nom d’autorité de certification (CA). Lors de l’établissement d’une session NETCONF sur TLS, le client et le serveur doivent chacun disposer d’un certificat numérique X.509 pour authentifier leur identité. Vous devez configurer le certificat d’autorité de certification racine requis pour valider le certificat client dans l’infrastructure à clé publique (PKI) Junos. Vous devez également configurer tous les CA requis pour valider le certificat local du serveur dans la PKI Junos. Ainsi, pour chaque autorité de certification, vous configurez un profil d’autorité de certification et chargez la liste de certificats d’autorité de certification (CRL) correspondante. Cette configuration permet à l’équipement Junos de valider un certificat par rapport à l’autorité de certification.
Si la chaîne de certificats de serveur ne comprend pas de CA intermédiaires, vous devez configurer le certificat d’autorité de certification racine. Sinon, il vous suffit de configurer les CA intermédiaires.
Pour configurer manuellement un profil d’autorité de certification et charger le certificat d’autorité de certification et la CRL correspondants :
Activer le service NETCONF sur TLS
Pour activer NETCONF sur TLS :
Configurer le mappage des noms d’utilisateur TLS client-NETCONF
Vous pouvez définir le mappage entre le certificat client et le nom d’utilisateur NETCONF pour des clients spécifiques. Si vous ne définissez pas de mappage pour un client spécifique, vous devez définir un mappage par défaut pour qu’il établisse une session NETCONF sur TLS.
Pour définir le mappage pour dériver le nom d’utilisateur NETCONF d’un client donné :
Configurer le mappage des noms d’utilisateur NETCONF par défaut
Vous pouvez définir un mappage par défaut utilisé pour dériver le nom d’utilisateur NETCONF lorsqu’un client ne correspond pas à un client configuré au niveau hiérarchique [edit system services netconf tls client-identity]
.
Pour définir le mappage par défaut du nom d’utilisateur NETCONF :
Configurer le compte utilisateur pour l’utilisateur NETCONF
Lors de l’établissement d’une session NETCONF sur TLS, le serveur mappe le certificat client à l’utilisateur NETCONF qui effectue les opérations sur l’équipement pour cette session. Junos OS prend en charge les utilisateurs locaux et les utilisateurs distants LDAP pour les sessions NETCONF-over-TLS. L’utilisateur NETCONF doit soit avoir un compte d’utilisateur défini localement sur l’équipement, soit il doit être authentifié par un serveur LDAP, qui le mappe ensuite à un compte de modèle d’utilisateur local défini localement sur l’équipement. Les instructions suivantes expliquent comment créer un compte utilisateur sur les équipements Junos.
Pour créer un compte d’utilisateur NETCONF sur un équipement Junos :
Voir aussi
Démarrez la session NETCONF-over-TLS
Le système de gestion du réseau agit comme le client NETCONF et TLS. Vous pouvez utiliser n’importe quel logiciel pour gérer le protocole TLS pour lancer la session NETCONF-over-TLS avec l’équipement Junos.
Pour commencer la session NETCONF-over-TLS :