NETCONF- und Shell-Sitzungen über erweitertes ausgehendes HTTPS
ZUSAMMENFASSUNG Clientanwendungen können NETCONF-Sitzungen (Network Configuration Protocol) und Shell-Sitzungen über erweitertes ausgehendes HTTPS auf unterstützten Junos-Geräten einrichten.
Grundlegendes zu NETCONF- und Shell-Sitzungen über erweitertes ausgehendes HTTPS
- Vorteile von NETCONF- und Shell-Sitzungen gegenüber ausgehendem HTTPS
- Übersicht über NETCONF- und Shell-Sitzungen über ausgehendes HTTPS
- Verbindungs-Workflow für Sitzungen über erweitertes ausgehendes HTTPS
Vorteile von NETCONF- und Shell-Sitzungen gegenüber ausgehendem HTTPS
Aktivieren Sie NETCONF oder Shell-Clientanwendungen, um Geräte zu verwalten, auf die nicht über andere Protokolle zugegriffen werden kann.
Aktivieren Sie die Remoteverwaltung von Geräten mithilfe der zertifikatbasierten Authentifizierung für den ausgehenden HTTPS-Client.
Übersicht über NETCONF- und Shell-Sitzungen über ausgehendes HTTPS
Sie können NETCONF- und Shell-Sitzungen über ausgehendes HTTPS zwischen unterstützten Junos-Geräten und einem Netzwerkmanagementsystem einrichten. Mit einer NETCONF- oder Shell-Sitzung über ausgehendes HTTPS können Sie Geräte remote verwalten, auf die über andere Protokolle wie SSH möglicherweise nicht zugegriffen werden kann. Dies kann z. B. der Fall sein, wenn sich das Gerät hinter einer Firewall befindet und die Firewall oder ein anderes Sicherheitstool diese Protokolle blockiert. HTTPS hingegen verwendet einen Standardport, der in den meisten Umgebungen in der Regel ausgehend zulässig ist.
Auf unterstützten Geräten enthält das Junos-Software-Image eine Juniper Extension Toolkit (JET)-Anwendung, die das Einrichten einer NETCONF- oder Shell-Sitzung über ausgehendes HTTPS unterstützt. Die JET-Anwendung verwendet das gRPC-Framework, um eine Verbindung mit dem ausgehenden HTTPS-Client herzustellen, der aus einem gRPC-Server besteht, der auf dem Netzwerkmanagementsystem ausgeführt wird. gRPC ist ein sprachunabhängiges Open-Source-RPC-Framework (Remote Procedure Call). Abbildung 1 veranschaulicht die Einrichtung des ausgehenden HTTPS in seiner einfachsten Form.

In diesem Szenario fungiert der gRPC-Server als NETCONF/Shell-Client, und die JET-Anwendung ist der gRPC-Client und der NETCONF/Shell-Server. Der gRPC-Server lauscht auf Verbindungsanforderungen am angegebenen Port, der standardmäßig Port 443 ist. Sie konfigurieren die JET-Anwendung als Erweiterungsdienst. Die relevanten Verbindungs- und Authentifizierungsinformationen werden an das Skript übergeben. Während das Skript ausgeführt wird, versucht es automatisch, eine Verbindung mit dem gRPC-Server auf dem konfigurierten Host und Port herzustellen.
Die JET-Anwendung und der gRPC-Server stellen eine persistente HTTPS-Verbindung über eine TLS-verschlüsselte gRPC-Sitzung her. Die JET-Anwendung authentifiziert den gRPC-Server mithilfe eines digitalen X.509-Zertifikats, und wenn die Authentifizierung erfolgreich ist, wird die angeforderte NETCONF- oder Shellsitzung über diese Verbindung eingerichtet. Die NETCONF-Vorgänge und Shellbefehle werden unter den Kontoberechtigungen des Benutzers ausgeführt, der für die Erweiterungsdienstanwendung konfiguriert ist.
Die ausgehende HTTPS-Verbindung verwendet ein digitales X.509-Zertifikat, um den gRPC-Server zu authentifizieren. Ein digitales Zertifikat ist ein elektronisches Mittel zur Überprüfung Ihrer Identität durch einen vertrauenswürdigen Dritten, der als Zertifizierungsstelle oder Zertifizierungsstelle (Certification Authority, CA) bezeichnet wird. Eine Zertifizierungsstelle stellt digitale Zertifikate aus, mit denen durch Zertifikatsvalidierung eine sichere Verbindung zwischen zwei Endpunkten hergestellt werden kann. Der X.509-Standard definiert das Format für das Zertifikat. Zum Einrichten einer NETCONF- oder Shell-Sitzung über ausgehendes HTTPS auf unterstützten Junos-Geräten muss der gRPC-Server über ein gültiges X.509-Zertifikat verfügen.
Erweitertes ausgehendes HTTPS bietet Unterstützung für:
-
Herstellen einer Verbindung mit mehreren ausgehenden HTTPS-Clients
-
Konfigurieren mehrerer gRPC-Sicherungsserver für jeden ausgehenden HTTPS-Client
-
Einrichten mehrerer, gleichzeitiger NETCONF- und Shell-Sitzungen mit einem bestimmten Client
-
Authentifizieren des ausgehenden HTTPS-Clients mit selbstsignierten oder von einer Zertifizierungsstelle signierten digitalen X.509-Zertifikaten
-
Authentifizieren des Junos-Geräts mithilfe eines gemeinsamen geheimen Schlüssels
Verbindungs-Workflow für Sitzungen über erweitertes ausgehendes HTTPS
In einer NETCONF- oder Shell-Sitzung über ausgehendes HTTPS fungiert der gRPC-Server, der auf dem Netzwerkmanagementsystem ausgeführt wird, als NETCONF/Shell-Client, und die JET-Anwendung auf dem Junos-Gerät ist der gRPC-Client und der NETCONF/Shell-Server. Sie können mehrere ausgehende HTTPS-Clients konfigurieren und Sie können einen oder mehrere gRPC-Sicherungsserver für jeden Client konfigurieren. Die JET-Anwendung stellt jeweils nur eine Verbindung mit einem gRPC-Server in der Serverliste des Clients her.
Der gRPC-Client und -Server führen die folgenden Aktionen aus, um eine NETCONF- oder Shellsitzung über ausgehendes HTTPS einzurichten:
-
Der gRPC-Server lauscht auf eingehende Verbindungen am angegebenen Port oder, wenn kein Port angegeben ist, am Standardport 443.
-
Der gRPC-Client initiiert eine TCP/IP-Verbindung mit dem konfigurierten gRPC-Server und -Port. Wenn Sie einen ausgehenden HTTPS-Client mit einem oder mehreren gRPC-Sicherungsservern konfigurieren, versucht der gRPC-Client, eine Verbindung mit jedem Server in der Liste herzustellen, bis er eine Verbindung herstellt.
-
Der gRPC-Client sendet eine TLS-Nachricht, um den TLS-Handshake
ClientHello
zu initiieren. -
Der gRPC-Server sendet eine
ServerHello
Nachricht und das zugehörige Zertifikat. -
Der gRPC-Client überprüft die Identität des gRPC-Servers.
-
Der gRPC-Client sendet die Geräte-ID und den gemeinsamen geheimen Schlüssel, die für diesen ausgehenden HTTPS-Client konfiguriert sind, an den gRPC-Server.
-
Der ausgehende HTTPS-Client fordert eine NETCONF- oder Shell-Sitzung an, und der gRPC-Server verwendet die Geräte-ID und den gemeinsamen geheimen Schlüssel, um das Junos-Gerät zu authentifizieren. Wenn die Authentifizierung erfolgreich ist, wird die Sitzung eingerichtet.
-
Wenn eine NETCONF-Sitzung angefordert wird, tauschen Server und Client NETCONF-Nachrichten
<hello>
aus. -
Die NETCONF- oder Shellclientanwendung führt Vorgänge nach Bedarf aus.
Der gRPC-Client initiiert eine weitere TCP/IP-Verbindung mit demselben gRPC-Server, und der gRPC-Client und -Server wiederholen den Vorgang, wodurch der ausgehende HTTPS-Client mehrere NETCONF- und Shellsitzungen mit dem Netzwerkgerät einrichten kann.
Einrichten von NETCONF- und Shell-Sitzungen über erweitertes ausgehendes HTTPS
Sie können die JET-Anwendung, die im Junos-Software-Image enthalten ist, verwenden, um NETCONF- und Shell-Sitzungen über ausgehendes HTTPS zwischen Netzwerkmanagementsystemen (Network Management Systems, NMS) und unterstützten Junos-Geräten einzurichten. Die JET-Anwendung, die als Erweiterungsdienst konfiguriert ist, initiiert eine Verbindung zu einem gRPC-Server, der auf einem NMS ausgeführt wird, und stellt eine persistente HTTPS-Verbindung über eine TLS-verschlüsselte gRPC-Sitzung her. Die NETCONF- oder Shell-Sitzung läuft über diese HTTPS-Verbindung. In diesem Szenario ist der gRPC-Server der NETCONF/Shell-Client, und die JET-Anwendung ist der gRPC-Client und der NETCONF/Shell-Server.
Die folgende Hard- und Software ist für die Einrichtung von Sitzungen über erweitertes ausgehendes HTTPS erforderlich:
Netzwerkmanagementsystem mit Python 3.5 oder höher
Gerät mit Junos OS Evolved oder Gerät mit Junos OS mit aktualisiertem FreeBSD Release 20.3 oder höher, das auch JET-Anwendungen unterstützt
Hinweis:Informationen zu unterstützten Geräten finden Sie unter Funktions-Explorer.
Abbildung 2 veranschaulicht das Setup, auf das in den folgenden Aufgaben verwiesen wird. Der Name der Verwaltungsschnittstelle auf dem Junos-Gerät variiert je nach Plattform und Betriebssystem.

Bevor Client und Server eine NETCONF- oder Shellsitzung über ausgehendes HTTPS einrichten können, müssen Sie die in den folgenden Abschnitten beschriebenen Anforderungen erfüllen:
- Abrufen eines X.509-Zertifikats für den gRPC-Server
- Einrichten des gRPC-Servers
- Konfigurieren des Benutzerkontos für den NETCONF- oder Shell-Benutzer
- Konfigurieren der ausgehenden HTTPS-Clients
- Konfigurieren des ausgehenden HTTPS-Erweiterungsdiensts auf Junos-Geräten
- Starten Sie die NETCONF- oder Shell-Sitzung
Abrufen eines X.509-Zertifikats für den gRPC-Server
Die ausgehende HTTPS-Verbindung verwendet ein X.509-Zertifikat mit öffentlichem Schlüssel, um die Identität des gRPC-Servers zu authentifizieren, der im Netzwerkmanagementsystem ausgeführt wird. Der gRPC-Stack unterstützt das X.509 v3-Zertifikatformat.
Die Anforderungen für das Zertifikat des gRPC-Servers sind:
-
Das Zertifikat kann selbstsigniert oder von einer Zertifizierungsstelle (Certificate Authority, CA) signiert sein.
-
Das Zertifikat muss entweder den Hostnamen des gRPC-Servers im Feld Allgemeiner Name (CN) oder die IP-Adresse des gRPC-Servers im Feld SubjectAltName (SAN) IP-Adresse definieren. Das Junos-Gerät muss denselben Wert verwenden, um die Verbindung zum Server herzustellen. Wenn das Zertifikat das Feld "IP-Adresse" "SubjectAltName" definiert, ignoriert das Gerät das Feld "Allgemeiner Name" während der Authentifizierung.
-
Das Zertifikat muss PEM-codiert sein und die Erweiterung .crt verwenden.
-
Das Zertifikat und sein Schlüssel müssen server.crt bzw. server.key heißen.
So verwenden Sie OpenSSL, um ein Zertifikat zu erhalten:
Einrichten des gRPC-Servers
Für das Netzwerkmanagementsystem wird folgende Software benötigt:
Python 3.5 oder höher
Das Netzwerkmanagementsystem und die JET-Anwendung auf dem Junos-Gerät verwenden das gRPC-Framework, um eine persistente HTTPS-Verbindung über eine TLS-verschlüsselte gRPC-Sitzung herzustellen. Auf dem Netzwerkmanagementsystem muss der gRPC-Stack installiert sein und ein gRPC-Server ausgeführt werden, der am angegebenen Port auf die Verbindungsanforderung lauscht. Juniper Networks stellt die erforderlichen Protodefinitionsdateien und Beispieldateien für gRPC-Serveranwendungen im Juniper Networks-Repository netconf-https-outbound
auf GitHub bereit.
In diesem Abschnitt wird der gRPC-Server auf einem Netzwerkmanagementsystem unter Ubuntu 18.04 eingerichtet. Wenn Sie ein anderes Betriebssystem verwenden, verwenden Sie die für Ihr Betriebssystem geeigneten Befehle.
So richten Sie den gRPC-Server auf einem Netzwerkmanagementsystem unter Ubuntu 18.04 ein:
Der gRPC-Server lauscht auf unbestimmte Zeit am angegebenen Port auf eingehende Verbindungen. Nachdem Sie das Junos-Gerät für die Verbindung mit dem gRPC-Server konfiguriert haben und eine Verbindung und eine Sitzung hergestellt wurden, können Sie je nach Bedarf NETCONF-Vorgänge oder Shellbefehle ausführen.
Konfigurieren des Benutzerkontos für den NETCONF- oder Shell-Benutzer
Um eine NETCONF- oder Shell-Sitzung über ausgehendes HTTPS einzurichten, müssen Sie lokal auf dem Junos-Gerät ein Benutzerkonto erstellen. Sie verwenden dieses Konto, um die NETCONF- oder Shell-Vorgänge auf dem Gerät für diese Sitzung auszuführen. Die JET-Anwendung wird mit den für dieses Konto konfigurierten Berechtigungen ausgeführt.
So erstellen Sie ein Benutzerkonto auf einem Junos-Gerät:
Konfigurieren der ausgehenden HTTPS-Clients
Erweitertes ausgehendes HTTPS ermöglicht es Ihnen, mehrere ausgehende HTTPS-Clients auf Hierarchieebene [edit system services outbound-https]
zu konfigurieren und mehrere gRPC-Sicherungsserver für jeden Client zu konfigurieren. Die JET-Anwendung stellt jeweils nur eine Verbindung mit einem gRPC-Server in der Serverliste des Clients her.
Bevor Sie das Gerät konfigurieren, benötigen Sie die folgenden Informationen:
-
Der Port, an dem der gRPC-Server auf Verbindungen lauscht.
-
Der Inhalt des Felds "IP-Adresse" "SubjectAltName" oder, falls kein solches Feld vorhanden ist, der Inhalt des Felds "Allgemeiner Name" (CN) im Zertifikat des gRPC-Servers.
-
Der Inhalt des Zertifikats des gRPC-Servers, wenn es selbstsigniert ist, oder der Inhalt der Zertifizierungsstellenzertifikate, wenn das Serverzertifikat mithilfe einer Zertifikatkette authentifiziert wird.
So konfigurieren Sie einen ausgehenden HTTPS-Client:
Wenn der ausgehende HTTPS-Erweiterungsdienst bereits ausgeführt wird und Sie einen ausgehenden HTTPS-Client hinzufügen, löschen oder ändern und die Konfiguration bestätigen, müssen Sie den Dienst nicht neu starten, damit die Änderungen wirksam werden. Sie werden automatisch abgeholt.
Konfigurieren des ausgehenden HTTPS-Erweiterungsdiensts auf Junos-Geräten
Junos-Versionen, die NETCONF- und Shell-Sitzungen über ausgehendes HTTPS unterstützen, enthalten eine JET-Anwendung und unterstützende Dateien im Software-Image. Tabelle 1 beschreibt die Dateien, die sich im Verzeichnis /var/ db/scripts/jet auf dem Gerät befinden.
Datei |
Beschreibung |
---|---|
nc_grpc_app.pyc |
JET-Anwendung, die das gRPC-Framework verwendet, um eine persistente HTTPS-Verbindung mit einem gRPC-Server herzustellen, der auf dem Netzwerkmanagementsystem ausgeführt wird. |
nc_grpc_app_lib.pyc |
Erforderliche Bibliotheken |
So konfigurieren Sie das Junos-Gerät für Sitzungen über ausgehendes HTTPS:
Nachdem die Anwendung erfolgreich gestartet wurde, protokolliert sie Meldungen in der Datei outbound_https.log.
Wenn die Anwendung nicht automatisch gestartet wird, nachdem Sie die Konfiguration bestätigt haben, überprüfen Sie die Protokollmeldungen zu dieser Anwendung, um das Problem zu beheben. Geben Sie den show log jet.log
Befehl unter Junos OS ein. Geben Sie in Junos OS Evolved die show trace application cscript
Befehle und show log messages
ein.
Starten Sie die NETCONF- oder Shell-Sitzung
Der gRPC-Server, der auf dem Netzwerkmanagementsystem ausgeführt wird, fungiert als NETCONF/Shell-Client, und die JET-Anwendung auf dem Junos-Gerät fungiert als gRPC-Client und NETCONF/Shell-Server. Nachdem Sie den gRPC-Server und die JET-Anwendung gestartet haben, versucht die JET-Anwendung, eine Verbindung mit dem gRPC-Server am angegebenen Port herzustellen. Wenn die Verbindung erfolgreich ist, authentifiziert der gRPC-Client den gRPC-Server. Wenn die Serverauthentifizierung erfolgreich ist, können Sie eine oder mehrere NETCONF- oder Shellsitzungen anfordern.
Bevor Sie beginnen, benötigen Sie die folgenden Informationen:
-
Die Geräte-ID und die Zeichenfolge für den gemeinsamen geheimen Schlüssel, die für den ausgehenden HTTPS-Client konfiguriert sind
So richten Sie eine NETCONF- oder Shell-Sitzung über erweitertes ausgehendes HTTPS ein: