Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Sessions NETCONF et Shell sur HTTPS sortant amélioré

RÉSUMÉ Les applications clientes peuvent établir des sessions NETCONF (Network Configuration Protocol) et des sessions shell à l’aide d’un HTTPS sortant amélioré sur les équipements Junos pris en charge.

Comprendre les sessions NETCONF et Shell sur https sortant amélioré

Avantages des sessions NETCONF et Shell par rapport au HTTPS sortant

  • Activez NETCONF ou les applications clientes shell 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 et Shell sur HTTPS sortant

Vous pouvez établir des sessions NETCONF et shell sur https sortant entre les équipements Junos pris en charge et un système de gestion du réseau. Une session NETCONF ou shell sur HTTPS sortant vous permet de gérer à distance des équipements qui peuvent 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, l’image du logiciel Junos comprend une application Juniper Extension Toolkit (JET) qui prend en charge l’établissement d’une session NETCONF ou shell à 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 et shell sur HTTPS NETCONF and Shell Sessions over Outbound HTTPS sortant

Dans ce scénario, le serveur gRPC agit comme le client NETCONF/shell, et l’application JET est le client gRPC et le serveur NETCONF/shell. 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 ou shell demandée est établie sur cette connexion. Les opérations NETCONF et les commandes shell 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 ou shell sur https sortant sur les équipements Junos pris en charge, le serveur gRPC doit disposer d’un certificat X.509 valide.

Le protocole HTTPS sortant amélioré prend en charge :

  • Connexion à plusieurs clients HTTPS sortants

  • Configuration de plusieurs serveurs gRPC de sauvegarde pour chaque client HTTPS sortant

  • Mise en place de sessions NETCONF et shell multiples et simultanées avec un client donné

  • Authentification du client HTTPS sortant à l’aide de certificats numériques X.509 auto-signés ou signés par l’CA

  • Authentification de l’équipement Junos à l’aide d’un secret partagé

Flux de travail de connexion pour les sessions sur HTTPS sortant amélioré

Dans une session NETCONF ou shell sur HTTPS sortant, le serveur gRPC s’exécutant sur le système de gestion du réseau agit comme le client NETCONF/shell, et l’application JET sur l’équipement Junos est le client gRPC et le serveur NETCONF/shell. Vous pouvez configurer plusieurs clients HTTPS sortants et configurer un ou plusieurs serveurs gRPC de secours pour chaque client. L’application JET se connecte à un seul serveur gRPC de la liste de serveurs du client à tout moment.

Le client et le serveur gRPC effectuent les actions suivantes pour établir une session NETCONF ou shell 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. Si vous configurez un client HTTPS sortant avec un ou plusieurs serveurs gRPC de secours, le client gRPC tente de se connecter à chaque serveur de la liste jusqu’à ce qu’il établisse une connexion.

  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. Le client gRPC envoie l’ID de l’équipement et le secret partagé configurés pour ce client HTTPS sortant au serveur gRPC.

  7. Le client HTTPS sortant demande une session NETCONF ou shell, et le serveur gRPC utilise l’ID de l’équipement et le secret partagé pour authentifier l’équipement Junos. Si l’authentification est réussie, la session est établie.

  8. Si une session NETCONF est demandée, le serveur et le client échangent des messages NETCONF <hello> .

  9. L’application cliente NETCONF ou shell effectue des opérations selon les besoins.

Le client gRPC initie une autre connexion TCP/IP avec le même serveur gRPC, et le client et le serveur gRPC répètent le processus, ce qui permet au client HTTPS sortant d’établir plusieurs sessions NETCONF et shell avec l’équipement réseau.

Comment établir des sessions NETCONF et Shell sur https sortant amélioré

Vous pouvez utiliser l’application JET incluse dans l’image du logiciel Junos pour établir des sessions NETCONF et shell sur https sortant entre les systèmes de gestion de 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 ou shell s’exécute sur cette connexion HTTPS. Dans ce scénario, le serveur gRPC est le client NETCONF/shell, et l’application JET est le client gRPC et le serveur NETCONF/shell.

Les matériels et logiciels suivants sont nécessaires pour établir des sessions sur https sortant amélioré :

  • Système de gestion du réseau exécutant Python 3.5 ou version ultérieure

  • Équipement exécutant Junos OS Evolved ou équipement exécutant Junos OS avec mise à niveau de FreeBSD version 20.3 ou ultérieure qui prend également en charge l’exécution des applications JET

    Note:

    Pour les équipements pris en charge, consultez l’Explorateur de fonctionnalités.

La figure 2 illustre la configuration référencée dans les tâches suivantes. Le nom de l’interface de gestion sur l’équipement Junos varie en fonction de la plate-forme et du système d’exploitation.

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

Avant que le client et le serveur puissent établir une session NETCONF ou shell 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 peut être auto-signé ou signé par une autorité de certification (CA).

  • 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. La longueur de la clé ne doit pas dépasser 4 096 bits.

  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 de l’entité et des informations sur son identité.
  4. 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 et fournissez le fichier de configuration pour inclure toute extension supplémentaire.

    • Signez le CSR avec une autorité de certification pour générer le certificat client, et incluez l’option -extfile si vous devez référencer votre fichier de configuration et vos extensions.

    • 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.

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.
    Note:

    Si vous rencontrez des erreurs d’installation pour le grpcio ou grpcio les packages, essayez d’installer la dernière version.

  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.

    Libération

    Répertoire

    Junos OS Version 20.3R1 ou ultérieure

    20.3

    Junos OS Evolved version 22.4R1 ou ultérieure

    junos-evolved/22.4

  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 ou des commandes shell selon le cas.

Configurer le compte utilisateur pour l’utilisateur NETCONF ou Shell

Pour établir une session NETCONF ou shell 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 ou shell 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 ou shell sur HTTPS sortant.

Configurer les clients HTTPS sortants

Le protocole HTTPS sortant amélioré vous permet de configurer plusieurs clients HTTPS sortants au niveau de la [edit system services outbound-https] hiérarchie et de configurer plusieurs serveurs gRPC de sauvegarde pour chaque client. L’application JET se connecte à un seul serveur gRPC de la liste de serveurs du client à tout moment.

Avant de configurer l’équipement, vous aurez besoin des informations suivantes :

  • 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, s’il est autosigné, ou le contenu des certificats de l’AUTORITÉ de certification, si le certificat du serveur est authentifié à l’aide d’une chaîne de certificats.

Pour configurer un client HTTPS sortant :

  1. Accédez à la hiérarchie des clients HTTPS sortants et définissez un identifiant qui identifie de manière unique le client HTTPS sortant.
  2. Définissez l’identifiant de l’équipement, c’est-à-dire une chaîne définie par l’utilisateur que le serveur gRPC utilise pour identifier et authentifier l’équipement Junos pendant l’établissement des sessions.
  3. Définissez une chaîne secrète partagée, c’est-à-dire une chaîne définie par l’utilisateur que le serveur gRPC utilise pour authentifier l’équipement Junos pendant l’établissement des sessions.

    L’équipement stocke la chaîne secrète partagée sous forme de valeur chiffrée dans la base de données de configuration.

  4. (Facultatif) Définissez la méthode utilisée pour rétablir une connexion HTTPS sortante déconnectée en tant que sticky ou in-order.
  5. (Facultatif) Définissez en secondes le temps d’attente du client gRPC entre les tentatives de connexion à la liste de serveurs du client HTTPS sortant.
  6. Configurez le nom d’hôte ou l’adresse IPv4 pour un ou plusieurs serveurs gRPC et le port sur lequel le serveur écoute les demandes de connexion HTTPS sortantes.

    Le nom d'hôte ou l'adresse IP doivent correspondre à la valeur du champ Nom commun (CN) ou du champ SubjectAltName IP Address, respectivement, dans le certificat du serveur gRPC en question.

  7. Pour chaque serveur gRPC, configurez l’instruction trusted_cert avec les informations de certificat requises pour authentifier le serveur.
    • Si le certificat du serveur est auto-signé, configurez le contenu du certificat du serveur gRPC, server.crt, en omettant toute nouvelle ligne.

    • Si le certificat du serveur est authentifié à l’aide d’une chaîne de certificats, concaténer les certificats d’autorité de certification intermédiaires et d’autorité de certification racine dans cet ordre, supprimez toutes les nouvelles lignes et configurez la chaîne unique résultante.

    Note:

    Pour générer facilement la valeur de l’instruction trusted_cert , vous pouvez concaténer les certificats appropriés dans l’ordre requis et supprimer toute nouvelle ligne, par exemple, à l’aide d’une commande similaire à la suivante :

  8. Répétez les étapes précédentes pour chaque client HTTPS sortant qui gérera l’équipement Junos.
  9. Validez la configuration.
Note:

Si le service d’extension HTTPS sortant est déjà en cours d’exécution et que vous ajoutez, supprimez ou modifiez un client HTTPS sortant et validez la configuration, vous n’avez pas besoin de redémarrer le service pour que les modifications prennent effet. Ils sont ramassés automatiquement.

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

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

Tableau 1 : Fichiers JET pour sessions sur HTTPS sortant amélioré

Fichier

Description

nc_grpc_app.pyc

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_app_lib.pyc

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. Configurez les notifications de service d’extension pour l’adresse de bouclage.
  5. Accédez à la hiérarchie de l’application de service d’extension.
  6. Configurez l’application pour qu’elle s’exécute en arrière-plan comme un processus démonisé.
  7. Configurez l’application pour qu’elle soit respawn sur une sortie normale.
  8. Configurez le nom d’usage sous les privilèges duquel l’application s’exécute et les opérations NETCONF et les commandes shell sont exécutées.
  9. Validez la configuration.

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

  10. 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. Dans Junos OS Evolved, émettez des show trace application cscript commandes et show log messages .

Démarrer la session NETCONF ou Shell

Le serveur gRPC s’exécutant sur le système de gestion du réseau agit comme le client NETCONF/shell, tandis que l’application JET sur l’équipement Junos agit comme le client gRPC et le serveur NETCONF/shell. 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, vous pouvez demander une ou plusieurs sessions NETCONF ou shell.

Avant de commencer, vous aurez besoin des informations suivantes :

  • Identifiant de l’équipement et chaîne secrète partagée configurée pour le client HTTPS sortant

Pour établir une session NETCONF ou shell sur https sortant amélioré :

  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.
  2. Pour établir une ou plusieurs sessions avec un équipement Junos, exécutez le script request_session.py. Spécifiez le type de session ainsi que l’ID de l’équipement et le secret partagé que vous avez configurés pour ce client HTTPS sortant sur l’équipement Junos. Par exemple :
    • Pour demander une session csh, qui est la session par défaut, vous n’avez pas besoin de spécifier un type de session.

    • Pour demander une session NETCONF, incluez l’option -s netconf .

    Si le serveur authentifie l’équipement Junos avec succès, la session demandée démarre.

  3. Vérifiez que la session est établie en examinant le résultat.
    • Les sessions Shell doivent afficher le csh session is started résultat, par exemple :

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

  4. Effectuez des opérations NETCONF ou shell si nécessaire.
  5. Lorsque vous avez terminé la session, saisissez Ctrl+C.
  6. 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.