Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Sessions NETCONF sur HTTPS sortant

RÉSUMÉ  Les applications clientes peuvent établir des sessions NETCONF (Network Configuration Protocol) à l’aide de HTTPS sortant sur les équipements pris en charge exécutant Junos OS version 20.2.

Cette rubrique explique comment établir des sessions NETCONF à l’aide de HTTPS sortant sur les équipements exécutant Junos OS version 20.2. Pour plus d’informations sur l’établissement de sessions NETCONF et shell à l’aide d’un HTTPS sortant amélioré, consultez les sessions NETCONF et Shell sur HTTPS sortant amélioré.

Comprendre les sessions NETCONF sur https sortant

Avantages des sessions NETCONF par rapport au HTTPS sortant

  • Activez les applications clientes NETCONF pour gérer les équipements qui ne sont pas accessibles via d’autres protocoles.

  • Activez la gestion à distance des équipements à l’aide de l’authentification basée sur des certificats pour le client HTTPS sortant.

Présentation des sessions NETCONF sur HTTPS sortant

Vous pouvez établir des sessions NETCONF sur https sortant entre les équipements Junos pris en charge et un système de gestion du réseau. Une session NETCONF sur HTTPS sortant vous permet de gérer à distance des équipements qui pourraient ne pas être accessibles via d’autres protocoles tels que SSH. Cela peut se produire, par exemple, si l’équipement se trouve derrière un pare-feu et que le pare-feu ou un autre outil de sécurité bloque ces protocoles. Https, d’autre part, utilise un port standard, qui est généralement autorisé en sortie dans la plupart des environnements.

Sur les équipements pris en charge, Junos OS inclut une application Juniper Extension Toolkit (JET) qui prend en charge l’établissement d’une session NETCONF à l’aide de HTTPS sortant. L’application JET utilise l’infrastructure gRPC pour se connecter au client HTTPS sortant, qui se compose d’un serveur gRPC s’exécutant sur le système de gestion du réseau. gRPC est une infrastructure RPC (Remote Procedure Call) indépendante du langage et open source. La figure 1 illustre la configuration HTTPS sortante dans sa forme la plus simple.

Figure 1 : Sessions NETCONF sur HTTPS NETCONF Sessions over Outbound HTTPS sortant

Dans ce scénario, le serveur gRPC agit comme le client NETCONF, et l’application JET est le client gRPC et le serveur NETCONF. Le serveur gRPC écoute les demandes de connexion sur le port spécifié, qui est par défaut le port 443. Vous configurez l’application JET en tant que service d’extension. Les informations de connexion et d’authentification pertinentes sont transmises au script. Pendant l’exécution du script, il tente automatiquement de se connecter au serveur gRPC sur l’hôte et le port configurés.

L’application JET et le serveur gRPC établissent une connexion HTTPS persistante sur une session gRPC chiffrée TLS. L’application JET authentifie le serveur gRPC à l’aide d’un certificat numérique X.509, et si l’authentification est réussie, la session NETCONF demandée est établie sur cette connexion. Les opérations NETCONF s’exécutent sous les privilèges de compte de l’utilisateur configuré pour l’application de service d’extension.

La connexion HTTPS sortante utilise un certificat numérique X.509 pour authentifier le serveur gRPC. 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 du certificat. Pour établir une session NETCONF sur https sortant sur les équipements Junos pris en charge, le serveur gRPC doit disposer d’un certificat X.509 valide.

La fonctionnalité HTTPS sortante de base permet de se connecter à un seul client HTTPS sortant et de configurer un serveur gRPC pour ce client. L’authentification du serveur doit utiliser un certificat X.509 autosigné. Vous pouvez établir une session NETCONF unique sur la connexion.

Flux de travail de connexion pour les sessions sur HTTPS sortant

Dans une session NETCONF sur HTTPS sortant, le serveur gRPC s’exécutant sur le système de gestion du réseau agit comme le client NETCONF, et l’application JET sur l’équipement Junos est le client gRPC et le serveur NETCONF.

Le client et le serveur gRPC effectuent les actions suivantes pour établir une session NETCONF sur https sortant :

  1. Le serveur gRPC écoute les connexions entrantes sur le port spécifié ou, si aucun port n’est spécifié, sur le port 443 par défaut.

  2. Le client gRPC initie une connexion TCP/IP avec le serveur et le port gRPC configurés.

  3. Le client gRPC envoie un message TLS ClientHello pour lancer la négociation TLS.

  4. Le serveur gRPC envoie un ServerHello message et son certificat.

  5. Le client gRPC vérifie l’identité du serveur gRPC.

  6. La session NETCONF est établie.

  7. Le serveur et le client échangent des messages NETCONF <hello> .

  8. L’application cliente NETCONF effectue des opérations selon les besoins.

Comment établir une session NETCONF sur https sortant

Vous pouvez utiliser l’application JET incluse dans l’image du logiciel Junos pour établir une session NETCONF sur https sortant entre un système de gestion du réseau (NMS) et les équipements Junos pris en charge. L’application JET, configurée en tant que service d’extension, lance une connexion à un serveur gRPC s’exécutant sur un NMS et établit une connexion HTTPS persistante sur une session gRPC chiffrée TLS. La session NETCONF s’exécute sur cette connexion HTTPS. Dans ce scénario, le serveur gRPC est le client NETCONF, et l’application JET est le client gRPC et le serveur NETCONF.

Les matériels et logiciels suivants sont nécessaires pour établir une session NETCONF sur https sortant :

La figure 2 illustre la configuration référencée dans les tâches suivantes.

Figure 2 : topologie NETCONF sur HTTPS NETCONF over Outbound HTTPS Topology sortant

Avant que le client et le serveur puissent établir une session NETCONF sur https sortant, vous devez satisfaire aux exigences décrites dans les sections suivantes :

Obtenir un certificat X.509 pour le serveur gRPC

La connexion HTTPS sortante utilise un certificat de clé publique X.509 pour authentifier l’identité du serveur gRPC s’exécutant sur le système de gestion du réseau. La pile gRPC prend en charge le format de certificat X.509 v3.

Les exigences du certificat du serveur gRPC sont les suivants :

  • Le certificat doit être auto-signé.

  • Le certificat doit définir soit le nom d’hôte du serveur gRPC dans le champ Nom commun (CN), soit l’adresse IP du serveur gRPC dans le champ SubjectAltName (SAN) ADRESSE IP. L’équipement Junos doit utiliser la même valeur pour établir la connexion au serveur. Si le certificat définit le champ SubjectAltName IP Address (Adresse IP SubjectAltName), l’équipement ignore le champ Common Name (Nom commun) lors de l’authentification.

  • Le certificat doit être encodé PEM et utiliser une extension .crt .

  • Le certificat et sa clé doivent être nommés serveur.crt et server.key, respectivement.

Pour utiliser OpenSSL pour obtenir un certificat :

  1. Générez une clé privée et spécifiez la longueur de la clé en bits.
    Note:

    Nous vous recommandons d’utiliser 3 072 bits ou plus pour la taille de la clé privée.

  2. Si vous vous connectez à l’adresse IP du serveur gRPC, mettez à jour votre fichier openssl.cnf ou équivalent pour définir l’extension subjectAltName=IP avec l’adresse du serveur gRPC.
  3. Générez une demande de signature de certificat (CSR), qui contient la clé publique du client et des informations sur son identité.
  4. Générez le certificat.

    Signez le CSR avec la clé serveur pour générer un certificat client auto-signé, et ajoutez l’option -extfile si vous devez référencer votre fichier de configuration et vos extensions.

  5. Vérifiez que le champ Nom commun (CN) et les extensions, le cas échéant, sont corrects.
  6. (Facultatif) Copiez le fichier server.crt dans le répertoire /var/db/scripts/jet sur l’équipement exécutant Junos OS pour utiliser le fichier de certificat à des fins d’authentification.
    Note:

    Vous pouvez omettre cette étape si la taille de la clé est inférieure ou égale à 4 096 bits et vous configurez plutôt le contenu du certificat dans l’argument de trusted_certs l’application JET sur l’équipement Junos.

Configurer le serveur gRPC

Le système de gestion du réseau nécessite les logiciels suivants :

  • Python 3.5 ou version ultérieure

Le système de gestion du réseau et l’application JET sur l’équipement Junos utilisent l’infrastructure gRPC pour établir une connexion HTTPS persistante sur une session gRPC chiffrée par TLS. La pile gRPC doit être installée dans le système de gestion du réseau et exécuter un serveur gRPC qui écoute la demande de connexion sur le port spécifié. Juniper Networks fournit les fichiers de définition proto nécessaires et des exemples de fichiers d’application serveur gRPC dans le référentiel Juniper Networks netconf-https-outbound sur GitHub.

Cette section configure le serveur gRPC sur un système de gestion du réseau exécutant Ubuntu 18.04. Si vous exécutez un autre système d’exploitation, utilisez les commandes adaptées à votre système d’exploitation.

Pour configurer le serveur gRPC sur un système de gestion du réseau exécutant Ubuntu 18.04 :

  1. Installer pip pour Python 3.
  2. Installez le grpcio package.
  3. Installez le grpcio-tools package.
  4. Accédez au référentiel Juniper GitHub à https://github.com/Juniper/netconf-https-outbound et sélectionnez le répertoire correspondant à la version exécutée sur l’équipement Junos.
  5. Téléchargez l’application et les fichiers proto du répertoire GitHub vers le répertoire du système de gestion du réseau où réside le certificat du serveur gRPC.
    1. Sélectionnez chaque fichier, cliquez sur le bouton Raw et copiez l’URL du fichier.

    2. Téléchargez le fichier à l’aide de l’URL avec l’outil de téléchargement de votre choix, par exemple, wget ou curl.

  6. Utilisez le compiler de tampon de protocole , protocpour compiler chaque fichier de définition de proto et générer du code Python, qui produit deux fichiers de sortie pour chaque fichier proto.

    Par exemple :

  7. Démarrez le serveur gRPC et spécifiez le port de la connexion s’il est différent du port 443 par défaut.
    Note:

    Vous devrez peut-être exécuter le script avec des autorisations racines pour écouter sur le port 443.

Le serveur gRPC écoute indéfiniment le port spécifié pour les connexions entrantes. Une fois que vous avez configuré l’équipement Junos pour qu’il se connecte au serveur gRPC et qu’une connexion et une session sont établies, vous pouvez effectuer des opérations NETCONF selon le cas.

Configurer le compte utilisateur pour l’utilisateur NETCONF

Pour établir une session NETCONF sur https sortant, vous devez créer un compte utilisateur localement sur l’équipement Junos. Vous utilisez ce compte pour effectuer les opérations NETCONF sur l’équipement pour cette session. L’application JET s’exécute à l’aide des autorisations configurées pour ce compte.

Pour créer un compte utilisateur sur un équipement Junos :

  1. Configurez l’instruction user avec un nom d’utilisateur unique et incluez l’instruction class pour spécifier une classe de connexion qui dispose des autorisations requises pour toutes les actions à effectuer par l’utilisateur. Par exemple :
  2. (Facultatif) Configurez les uid déclarations et full-name pour spécifier un ID utilisateur unique et le nom de l’utilisateur.
  3. Validez la configuration pour activer le compte utilisateur sur l’équipement.
  4. Répétez les étapes précédentes sur chaque équipement Junos où le client doit établir des sessions NETCONF sur HTTPS sortant.

Configurer le client HTTPS sortant

L’application JET ne peut se connecter qu’à un seul client HTTPS sortant. Vous configurez les informations de connexion et d’authentification du client en tant qu’arguments de ligne de commande pour le script JET. Le tableau 1 présente les arguments.

Tableau 1 : arguments nc_grpc_app.py

Argument

Valeur

--device Ou -d

Nom d’hôte ou adresse IPv4 du serveur gRPC auquel l’application JET se connecte. La valeur de l’argument doit correspondre au nom de l’hôte dans le champ Nom commun (CN) ou à l’adresse IP du champ SubjectAltName dans le certificat du serveur gRPC.

--port Ou -p

(Facultatif) Port sur lequel l’application JET tente de se connecter au serveur gRPC. Omettez cet argument pour utiliser le port 443 par défaut.

--trusted_certs Ou -ts

(Facultatif) Le contenu du certificat du serveur gRPC entre les lignes et -----END CERTIFICATE----- les -----BEGIN CERTIFICATE----- lignes, en omettant toute nouvelle ligne.

Vous pouvez omettre cet argument si vous copiez le certificat dans le répertoire /var/db/scripts/jet sur l’équipement. Vous devez copier le certificat sur l’équipement pour les tailles de clé supérieures à 4096 bits.

Avant de commencer, vous aurez besoin des valeurs pour les arguments de script, notamment :

  • Port sur lequel le serveur gRPC écoute les connexions.

  • Le contenu du champ SubjectAltName IP Address ou, s’il n’y a pas de tel champ, le contenu du champ Common Name (CN) dans le certificat du serveur gRPC.

  • Le contenu du certificat du serveur gRPC entre -----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----, en omettant toute nouvelle ligne. Ces informations sont uniquement requises lorsque vous configurez le contenu du certificat en tant qu’argument de script au lieu de copier le certificat sur l’équipement exécutant Junos OS.

Pour configurer le client HTTPS sortant :

  1. Accédez à la hiérarchie de l’application de service d’extension nc_grpc_app.py.
  2. Configurez les arguments qui sont transmis à l’application au démarrage.
  3. Validez la configuration.

Configurer le service d’extension HTTPS sortant sur les équipements Junos

Les versions Junos qui prennent en charge les sessions NETCONF sur https sortant comprennent une application JET et des fichiers de support dans l’image du logiciel. Le tableau 2 présente les fichiers situés dans le répertoire /var/db/scripts/jet sur l’équipement.

Tableau 2 : Fichiers JET pour les sessions sur HTTPS sortant

Fichiers

Description

nc_grpc_app.py

Application JET qui utilise l’infrastructure gRPC pour établir une connexion HTTPS persistante avec un serveur gRPC s’exécutant sur le système de gestion du réseau.

nc_grpc_pb2.py

nc_grpc_pb2_grpc.py

Bibliothèques requises

Pour configurer l’équipement Junos pour les sessions sur HTTPS sortant :

  1. Vérifiez que l’application JET et les fichiers associés sont présents sur l’équipement.
  2. Passez en mode configuration.
  3. Activez l’équipement pour exécuter des applications Python 3 non signées.
  4. Accédez à la hiérarchie de l’application de service d’extension.
  5. Configurez l’application pour qu’elle s’exécute en arrière-plan comme un processus démonisé.
  6. Configurez l’application pour qu’elle soit respawn sur une sortie normale.
  7. Configurez le nom d’usage sous lequel l’application s’exécute et les opérations NETCONF.
  8. Validez la configuration.

    Lorsque vous validez la configuration, l’option daemonize déclenche le démarrage automatique de l’application.

  9. Vérifiez que l’application est en cours d’exécution.

Une fois l’application lancée, elle enregistre les messages dans le fichier outbound_https.log .

Note:

Si l’application ne démarre pas automatiquement après la validation de la configuration, consultez les messages de journal liés à cette application pour résoudre le problème. Dans Junos OS, émettez la show log jet.log commande.

Démarrer la session NETCONF

Le serveur gRPC s’exécutant sur le système de gestion du réseau agit comme le client NETCONF, tandis que l’application JET sur l’équipement Junos agit comme le client gRPC et le serveur NETCONF. Après avoir démarré le serveur gRPC et l’application JET, l’application JET tente de se connecter au serveur gRPC sur le port spécifié. Si la connexion est réussie, le client gRPC authentifie le serveur gRPC. Si l’authentification du serveur est réussie, la session NETCONF démarre automatiquement.

Pour établir une session NETCONF sur https sortant :

  1. Sur le système de gestion du réseau, si vous n’avez pas déjà démarré le serveur gPRC, démarrez le serveur et spécifiez le port pour la connexion.

    La session NETCONF démarre automatiquement.

  2. Vérifiez que la session a bien été établie en examinant le résultat.

    Les sessions NETCONF doivent afficher les fonctionnalités NETCONF comme illustré ici :

  3. Effectuez des opérations NETCONF si nécessaire.
  4. Lorsque vous avez terminé la session, saisissez Ctrl+C.
  5. Lorsque vous avez fini d’utiliser la connexion HTTPS sortante, vous pouvez arrêter l’application de service d’extension sur l’équipement Junos en supprimant ou en désactivant la hiérarchie concernée dans la configuration, puis en commettant la modification.