NETCONF-Sitzungen über TLS (Transport Layer Security)
ZUSAMMENFASSUNG NETCONF-Clients (Network Configuration Protocol) können das TLS-Protokoll (Transport Layer Security) mit gegenseitiger X.509-zertifikatsbasierter Authentifizierung verwenden, um eine NETCONF-Sitzung mit unterstützten Junos-Geräten einzurichten.
Grundlegendes zu NETCONF-over-TLS-Verbindungen
- Vorteile von NETCONF über TLS
- NETCONF over TLS – Überblick
- Verständnis der Benutzernamenzuordnung des TLS-Clients zu NETCONF
- NETCONF-over-TLS-Verbindungs-Workflow
Vorteile von NETCONF über TLS
-
Ermöglicht die Remote-Verwaltung von Geräten mithilfe von gegenseitiger zertifikatsbasierter Authentifizierung
-
Ermöglicht die einfachere Verwaltung von Netzwerken in größerem Umfang als bei der Verwendung von NETCONF über SSH
-
Nutzt Public-Key-Infrastruktur zur Bereitstellung gegenseitiger TLS-zertifikatsbasierter Authentifizierung sowohl für Den Client als auch für den Server
-
Sichert die Verbindung und den Austausch von NETCONF-Nachrichten
-
Sorgt für Datenintegrität bei ausgetauschten Nachrichten
NETCONF over TLS – Überblick
Sie können eine Network Configuration Protocol (NETCONF)-Sitzung über Transport Layer Security (TLS) auf bestimmten Junos-Geräten einrichten, als Alternative zum Einrichten einer NETCONF-Sitzung über SSH. TLS ist ein kryptografisches Protokoll, das auf gegenseitigem Zertifikat basierende Authentifizierung verwendet und eine sichere und zuverlässige Verbindung zwischen zwei Geräten bereitstellt. Es ist ein Nachfolger des Secure Sockets Layer (SSL)-Protokolls. Wenn Sie eine NETCONF-Sitzung über TLS einrichten, fungiert der NETCONF-Server als TLS-Server, und der NETCONF-Client ist der TLS-Client.
NETCONF-Sitzungen über TLS bieten einige Vorteile gegenüber Sitzungen, die SSH verwenden. Während SSH einen Client mithilfe von Anmeldeinformationen (Benutzername und Kennwort) oder Schlüsseln authentifiziert, verwendet TLS Zertifikate zur gegenseitigen Authentifizierung von Client und Server. Zertifikate können zusätzliche Informationen über einen Client bereitstellen und sie können zur sicheren Authentifizierung eines Geräts bei einem anderen verwendet werden. Während NETCONF-Sitzungen über SSH gut für die manuelle Verwaltung einzelner Geräte geeignet sind, ermöglichen NETCONF-Sitzungen, die TLS verwenden, eine sichere Geräte-zu-Gerät-Kommunikation, um Geräte in großen Netzwerken besser zu verwalten und zu automatisieren.
NETCONF-over-TLS-Sitzungen mit Junos-Geräten haben die folgenden Anforderungen:
-
NETCONF-Client, der TLS-Version 1.2 unterstützt
-
Server und Client müssen über X.509-Zertifikate mit öffentlichem Schlüssel verfügen, die von einer Zertifizierungsstelle signiert sind
-
Die Junos Public Key Infrastructure (PKI) muss über die entsprechenden lokalen und CA-Zertifikate verfügen
-
Das Junos-Gerät ist für NETCONF über TLS konfiguriert und definiert eine Standard- oder spezifische Zertifikatszuordnung zu NETCONF-Benutzername für einen Client
-
Der NETCONF-Benutzername entspricht einem gültigen Junos OS-Benutzerkonto
TLS verwendet digitale X.509-Zertifikate für die Server- und Client-Authentifizierung. Ein digitales Zertifikat ist ein elektronisches Mittel, um Ihre Identität durch einen vertrauenswürdigen Dritten zu überprüfen, der als Zertifizierungsstelle oder Zertifizierungsstelle (CA) bekannt ist. Eine Zertifizierungsstelle stellt digitale Zertifikate aus, die verwendet werden können, um eine sichere Verbindung zwischen zwei Endgeräten durch Zertifikatsprüfung herzustellen. Der X.509-Standard definiert das Format für die Zertifikate. Zum Einrichten einer NETCONF-Sitzung über TLS auf unterstützten Junos-Geräten müssen sowohl der Server als auch der Client über ein gültiges X.509-Zertifikat verfügen, und die Zertifikate müssen von einer Zertifizierungsstelle signiert sein. Selbstsignierte Zertifikate können nicht zum Einrichten von NETCONF-Sitzungen über TLS verwendet werden.
Die Junos OS PKI stellt eine Infrastruktur für die digitale Zertifikatsverwaltung bereit. Zum Herstellen einer TLS-Verbindung müssen Sie Folgendes in der Junos OS PKI installieren:
-
Lokales Zertifikat des NETCONF-Servers und seine zwischengeschalteten CA-Zertifikate
Hinweis:Wenn die Serverzertifikatskette keine zwischengeschalteten CAs enthält, müssen Sie das Stammzertifizierungsstelle-Zertifikat konfigurieren.
-
DAS STAMM-CA-Zertifikat des NETCONF-Clients zur Validierung des NETCONF-Clientzertifikats oder der Zertifikatskette erforderlich
Nachdem der Server die Identität des Clients überprüft und die TLS-Verbindung hergestellt hat, muss er den NETCONF-Benutzernamen für diesen Client ableiten, bevor er die NETCONF-Sitzung einrichten kann. Der NETCONF-Benutzername ist das Junos-Benutzerkonto, unter dessen Zugriffsrechte und Berechtigungen die NETCONF-Vorgänge ausgeführt werden. Sie können eine Liste von Client-Zertifikaten zu NETCONF-Benutzernamenzuordnungen konfigurieren und sie können auch eine Standardmäßige NETCONF-Benutzernamenzuordnung konfigurieren. Junos OS verwendet die Standardzuordnung, wenn ein Clientzertifikat keinem der konfigurierten Clients entspricht. Wenn der Server einen gültigen NETCONF-Benutzernamen extrahiert, wird die NETCONF-Sitzung festgelegt. Weitere Informationen zur Ableitung des NETCONF-Benutzernamens finden Sie unter Understanding the TLS Client to NETCONF Username Mapping.
Der Junos Process tls-proxyd verarbeitet die TLS-Verbindung. Es führt den TLS-Handshake aus, verschlüsselt und entschlüsselt den Datenverkehr, bestimmt den NETCONF-Benutzernamen und ruft die Autorisierungsparameter für den NETCONF-Benutzer ab. Der tls-proxyd-Prozess arbeitet zusammen mit dem Verwaltungsprozess (mgd), um die NETCONF-Sitzung zu erstellen und zu verwalten. Der Workflow der NETCONF-over-TLS-Sitzung ist im NETCONF-over-TLS-Verbindungs-Workflow beschrieben.
Weitere Informationen zu NETCONF über TLS finden Sie unter RFC 7589, Verwenden des NETCONF Protocol over Transport Layer Security (TLS) mit gegenseitiger X.509-Authentifizierung.
Weitere Informationen zum Transport Layer Security-Protokoll finden Sie unter RFC 5246, TLS-Protokollversion 1.2.
Verständnis der Benutzernamenzuordnung des TLS-Clients zu NETCONF
Die authentifizierte Identität des NETCONF-over-TLS-Clients ist der NETCONF-Benutzername. Junos-Geräte führen die NETCONF-Operationen unter den Kontoberechtigungen dieses Benutzers aus. Sie können die Methode konfigurieren, die verwendet wird, um den NETCONF-Benutzernamen für einzelne Clients abzuleiten, und Sie können auch eine Standardmethode definieren, um den NETCONF-Benutzernamen für die Clients abzuleiten, die nicht mit einem konfigurierten Client übereinstimmen.
Sie können die Zuordnung von Clientzertifikaten zu NETCONF-Benutzernamen auf [edit system services netconf tls client-identity]
Hierarchieebene konfigurieren. Für jeden Client konfigurieren Sie den Zertifikats-Fingerabdruck und einen Zuordnungstyp. Wenn der Fingerabdruck eines Clientzertifikats mit einem konfigurierten Fingerabdruck übereinstimmt, verwendet Junos OS den entsprechenden Kartentyp, um den NETCONF-Benutzernamen abzuleiten. Sie können nur einen Fingerabdruck pro Client konfigurieren, und jeder Client-Fingerabdruck muss eindeutig sein. Zum Beispiel:
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; } } }
Der konfigurierte Zertifikats-Fingerabdruck verwendet das Format x509c2n:tls-fingerprint, wie in RFC 7407, einem YANG-Datenmodell für die SNMP-Konfiguration definiert. In diesem Format ist das erste Oktett der Hashing-Algorithmusbezeichner, und die restlichen Oktette sind das Ergebnis des Hashing-Algorithmus. Der Hashing-Algorithmusbezeichner, der hier zur Referenz angezeigt wird, ist in RFC 5246, TLS-Protokollversion 1.2 definiert.
-
md5: 1
-
sha1: 2
-
sha224: 3
-
sha256: 4
-
sha384: 5
-
sha512: 6
Sie können auch eine Standardzuordnung für den NETCONF-Benutzernamen auf [edit system services netconf tls default-client-identity]
Hierarchieebene konfigurieren. Wenn der Fingerabdruck eines Clientzertifikats keinen konfigurierten Clients entspricht, verwendet das Junos-Gerät den Standardzuordnungstyp, um den NETCONF-Benutzernamen abzuleiten.
Junos-Geräte unterstützen die folgenden Kartentypen:
-
san-dirname-cn
– Verwenden Sie den common name (CN), der für das DirName-Feld (SAN) von SubjectAltName (DirName:/CN
) im Clientzertifikat definiert ist, als NETCONF-Benutzername. -
specified
— Verwenden Sie den NETCONF-Benutzernamen, der in derusername
Anweisung auf derselben Hierarchieebene definiert ist.
Nachdem der Server die Identität des Clients überprüft und die TLS-Verbindung herstellt, leitet er den NETCONF-Benutzernamen ab. Zuerst wird der Fingerabdruck für jeden konfigurierten Client mit dem Fingerabdruck des angezeigten Zertifikats abgesenkt. Wenn es eine Übereinstimmung gibt, verwendet er den entsprechenden Kartentyp, um den NETCONF-Benutzernamen abzuleiten. Wenn keiner der konfigurierten Fingerabdrücke mit dem des Client-Zertifikats übereinstimmt, wird der Standardzuordnungstyp verwendet, um den NETCONF-Benutzernamen abzuleiten.
Nachdem der Server den Benutzernamen bestimmt hat, ruft er die Autorisierung für den Benutzer lokal oder per Fernzugriff ab. Der Benutzername muss entweder über ein lokal auf dem Gerät definiertes Benutzerkonto verfügen, oder es muss von einem LDAP-Server (Lightweight Directory Access Protocol) authentifiziert werden, der es dann einem Benutzervorlagenkonto zuordnet, das lokal auf dem Junos-Gerät definiert ist. Wenn der extrahierte Benutzername kein gültiger lokaler oder Remotebenutzer ist, wird die TLS-Verbindung beendet.
NETCONF-over-TLS-Verbindungs-Workflow
Das Junos-Gerät fungiert als TLS- und NETCONF-Server. Der Server überwacht auf eingehende NETCONF-over-TLS-Verbindungen am TCP-Port 6513. Der NETCONF-Client, der gleichzeitig der TLS-Client ist, initiiert eine Verbindung mit dem Server an diesem Port.
Der Client und der Server führen die folgenden Aktionen aus, um die NETCONF-Sitzung über TLS einzurichten und zu verwenden:
-
Der Client sendet eine TLS-ClientHello-Nachricht, um den TLS-Handshake zu initiieren.
-
Der Server sendet eine ServerHello-Nachricht, die Server-Zertifikatskette und eine CertificateRequest-Nachricht, um ein Zertifikat vom Client anzufordern.
-
Der Client überprüft die Identität des Servers und sendet die Client-Zertifikatskette.
-
Der Server überprüft die Client-Zertifikatskette mit der Stammzertifizierungsstelle des Clients, die auf dem Server vorkonfiguriert wurde.
-
Der Server leitet den NETCONF-Benutzernamen für diesen Client ab.
-
Wenn der NETCONF-Benutzername gültig ist, startet der Server die NETCONF-Sitzung und die Server- und Clientaustausch-NETCONF-Nachrichten
<hello>
. -
Der Client führt NETCONF-Operationen unter Verwendung der Zugriffsrechte und Berechtigungen des NETCONF-Benutzers aus.
-
Der Client führt den
<close-session>
Vorgang aus, um die NETCONF-Sitzung zu beenden, die anschließend die TLS-Verbindung schließt.
In den folgenden Szenarien kann der Server die NETCONF-Sitzung über TLS nicht einrichten:
-
Das Server- oder Client-Zertifikat ist abgelaufen oder selbstsigniert.
-
Der Client stellt kein Zertifikat bereit.
-
Der Client sendet seine zwischengeschalteten CA-Zertifikate nicht.
-
Das Stammzertifizierungszertifikat des Clients ist auf dem Server nicht konfiguriert.
-
Der Server kann das Clientzertifikat nicht einem konfigurierten oder Standardzuordnungstyp zuordnen, um den NETCONF-Benutzernamen abzuleiten.
-
Der Server verwendet den
san-dirname-cn
Zuordnungstyp, um den NETCONF-Benutzernamen für den Client abzuleiten, aber das Clientzertifikat gibt keinen Benutzernamen im entsprechenden Feld an.
Siehe auch
Einrichtung einer NETCONF-Sitzung über TLS
Ein Netzwerkmanagementsystem (NMS) wird verwendet, um das Junos-Gerät per Fernzugriff zu verwalten. Sie können eine NETCONF-Sitzung über TLS zwischen einem Netzwerkmanagementsystem und den unterstützten Junos-Geräten einrichten. Der NMS ist der NETCONF- und TLS-Client, und das Junos-Gerät ist der NETCONF- und TLS-Server.
Bevor Client und Server eine NETCONF-Sitzung über TLS einrichten können, müssen Sie die in den folgenden Abschnitten beschriebenen Anforderungen erfüllen:
- Installieren der TLS-Client-Software im Netzwerkmanagementsystem
- Holen Sie sich X.509-Zertifikate für Server und Client
- Installieren Sie das lokale Zertifikat des Servers in der Junos PKI
- Installieren sie die CA-Zertifikate in der Junos PKI
- Aktivieren sie den NETCONF-Service über TLS
- Konfigurieren der TLS-Client-zu-NETCONF-Benutzernamenzuordnung
- Konfigurieren der Standardmäßigen NETCONF-Benutzernamenzuordnung
- Konfigurieren des Benutzerkontos für den NETCONF-Benutzer
- Starten der NETCONF-over-TLS-Sitzung
Installieren der TLS-Client-Software im Netzwerkmanagementsystem
Um eine NETCONF-Sitzung mit TLS einzurichten, muss das Netzwerkmanagementsystem zunächst eine TLS-Verbindung mit dem Junos-Gerät herstellen. Daher erfordert das Netzwerkmanagementsystem Software für die Verwaltung des TLS-Protokolls. Sie können beispielsweise das OpenSSL-Toolkit installieren und verwenden, das ein Toolkit für die Protokolle TLS (Transport Layer Security) und Secure Sockets Layer (SSL) ist. Es ist unter einer Lizenz im Apache-Stil lizenziert.
Weitere Informationen zu OpenSSL finden Sie unter https://www.openssl.org.
Holen Sie sich X.509-Zertifikate für Server und Client
Das TLS-Protokoll verwendet X.509-Zertifikate für öffentlichen Schlüssel, um die Identität des Servers und des Clients zu authentifizieren. Um eine NETCONF-Sitzung über TLS einzurichten, müssen sowohl der Server als auch der Client über ein X.509-Zertifikat verfügen, und das Zertifikat muss von einer gültigen Zertifizierungsstelle (CA) signiert sein. Selbstsignierte Zertifikate werden für NETCONF-Sitzungen über TLS nicht akzeptiert.
So verwenden Sie OpenSSL, um ein Zertifikat für den NETCONF-Client zu erhalten:
Generieren Sie auch das Serverzertifikat.
-
Generieren Sie einen privaten Schlüssel und geben Sie die Schlüssellänge in Bits an.
user@nms:~$ openssl genrsa -out server.key 2048 Generating RSA private key, 2048 bit long modulus (2 primes) ......................................................+++++ .............+++++ e is 65537 (0x010001)
-
Generieren Sie eine Certificate Signing Request (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"
-
Erstellen Sie das Zertifikat mit einem der folgenden Schritte:
-
Senden Sie die CSR an eine Zertifizierungsstelle, um ein X.509-Zertifikat anzufordern.
-
Signieren Sie die CSR mit einer Zertifizierungsstelle, um das Serverzertifikat zu generieren.
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
-
Die Junos OS Public Key Infrastructure (PKI) bietet eine Infrastruktur für die digitale Zertifikatsverwaltung. Sie können auch die Junos OS PKI verwenden, um das erforderliche Schlüsselpaar und csr für das lokale Zertifikat des Servers zu generieren. Informationen zum Junos OS PKI und zu den verschiedenen Methoden zum Erwerb von Zertifikaten finden Sie unter Übersicht über digitale Zertifikate mit PKI und entsprechende Dokumentation.
Installieren Sie das lokale Zertifikat des Servers in der Junos PKI
Das lokale Zertifikat des Servers ist das X.509-Zertifikat für das Junos-Gerät, das als NETCONF- und TLS-Server fungiert. Sie müssen das lokale Zertifikat für das Gerät in der Junos PKI installieren.
So installieren Sie das lokale Serverzertifikat in der Junos PKI:
Installieren sie die CA-Zertifikate in der Junos PKI
Ein digitales Zertifikat ist ein elektronisches Mittel zur Überprüfung Ihrer Identität durch einen vertrauenswürdigen Dritten, die als Zertifizierungsstelle (Ca) bekannt ist. Beim Einrichten einer NETCONF-Sitzung über TLS müssen Client und Server jeweils über ein digitales X.509-Zertifikat verfügen, um ihre Identität zu authentifizieren. Sie müssen das Ca-Stammzertifikat konfigurieren, das zur Validierung des Clientzertifikats in der Junos Public Key Infrastructure (PKI) erforderlich ist. Sie müssen auch alle CAs konfigurieren, die zur Validierung des lokalen Serverzertifikats in der Junos PKI erforderlich sind. Daher konfigurieren Sie für jede Zertifizierungsstelle ein Zertifizierungsstellenprofil und laden die entsprechenden CA-Zertifikate und Zertifikatssperrliste (Certificate Revocation List, CRL). Mit dieser Konfiguration kann das Junos-Gerät ein Zertifikat gegen die Zertifizierungsstelle validieren.
Wenn die Serverzertifikatskette keine zwischengeschalteten CAs enthält, müssen Sie das Stammzertifizierungsstelle-Zertifikat konfigurieren. Andernfalls müssen Sie nur die Zwischen-CAs konfigurieren.
So konfigurieren Sie manuell ein CA-Profil und laden das entsprechende CA-Zertifikat und die CRL:
Aktivieren sie den NETCONF-Service über TLS
So aktivieren Sie NETCONF über TLS:
Konfigurieren der TLS-Client-zu-NETCONF-Benutzernamenzuordnung
Sie können die Zuordnung zwischen dem Clientzertifikat und dem NETCONF-Benutzernamen für bestimmte Clients definieren. Wenn Sie keine Zuordnung für einen bestimmten Client definieren, müssen Sie eine Standardzuordnung definieren, damit der Client eine NETCONF-Sitzung über TLS einrichten kann.
So definieren Sie die Zuordnung zum Ableiten des NETCONF-Benutzernamens für einen bestimmten Client:
Konfigurieren der Standardmäßigen NETCONF-Benutzernamenzuordnung
Sie können eine Standardzuordnung definieren, die verwendet wird, um den NETCONF-Benutzernamen abzuleiten, wenn ein Client nicht mit einem auf Hierarchieebene konfigurierten [edit system services netconf tls client-identity]
Client übereinstimmt.
So definieren Sie die Standardzuordnung zum Ableiten des NETCONF-Benutzernamens:
Konfigurieren des Benutzerkontos für den NETCONF-Benutzer
Beim Einrichten einer NETCONF-Sitzung über TLS ordnet der Server das Clientzertifikat dem NETCONF-Benutzer zu, der die Vorgänge auf dem Gerät für diese Sitzung ausführt. Junos OS unterstützt lokale Benutzer und LDAP-Remotebenutzer für NETCONF-over-TLS-Sitzungen. Der NETCONF-Benutzer muss entweder über ein lokal auf dem Gerät definiertes Benutzerkonto verfügen, oder es muss von einem LDAP-Server authentifiziert werden, der es dann einem lokalen Benutzervorlagenkonto zuordnet, das lokal auf dem Gerät definiert ist. In den folgenden Anweisungen wird erläutert, wie Sie ein Benutzerkonto auf Junos-Geräten erstellen.
So erstellen Sie ein Benutzerkonto für den NETCONF-Benutzer auf einem Junos-Gerät:
Siehe auch
Starten der NETCONF-over-TLS-Sitzung
Das Netzwerkmanagementsystem fungiert als NETCONF- und TLS-Client. Sie können jede beliebige Software für die Verwaltung des TLS-Protokolls verwenden, um die NETCONF-over-TLS-Sitzung mit dem Junos-Gerät zu initiieren.
So starten Sie die NETCONF-over-TLS-Sitzung: