Herstellen einer SSH-Verbindung für eine NETCONF-Sitzung
Grundlegendes zu NETCONF-Sitzungen über SSH
Sie können das SSH-Protokoll verwenden, um Verbindungen zwischen einem Configuration Management Server (CMS) und einem Junos-Gerät herzustellen. Sie verwenden einen Configuration Management-Server, um das Junos-Gerät remote zu verwalten.
Sie können die folgenden Optionen verwenden, um eine SSH-Verbindung zwischen dem Configuration Management-Server und dem Junos-Gerät herzustellen.
-
SSH: Der Configuration Management Server initiiert eine SSH-Sitzung mit dem Junos-Gerät.
-
Ausgehendes SSH: Das Junos-Gerät initiiert, baut eine SSH-Verbindung mit einem vordefinierten Satz von Konfigurationsmanagement-Servern auf, baut sie auf und unterhält sie. Verwenden Sie diese Option, wenn der Konfigurationsverwaltungsserver aufgrund von Netzwerkeinschränkungen (z. B. einer Firewall) keine SSH-Verbindung initiieren kann.
Junos OS enthält eine angepasste Implementierung von OpenSSH für die Geräteverwaltung. Sicherheitskorrekturen werden bei Bedarf zurückportiert, unabhängig von den OpenSSH-Versionsnummern. Die in der CLI-Ausgabe angezeigte Version (z. B. show version) spiegelt möglicherweise nicht alle angewendeten Patches wider. Für Folgenabschätzungen zu Schwachstellen sollten Sie sich stets an die Juniper Security Advisories (JSAs) halten.
Allgemeine Voraussetzungen für NETCONF-Sitzungen über SSH oder ausgehendes SSH
Für NETCONF-Sitzungen, die entweder SSH oder ausgehendes SSH verwenden, müssen Sie SSH-Software auf dem Konfigurationsmanagement-Server installieren und den NETCONF-Dienst auf dem Junos-Gerät aktivieren. In den folgenden Abschnitten finden Sie detaillierte Anweisungen:
- Installieren der SSH-Software auf dem Configuration Management Server
- NETCONF-Dienst über SSH aktivieren
Installieren der SSH-Software auf dem Configuration Management Server
Bei SSH-Verbindungen verwaltet der Configuration Management Server (CMS) die SSH-Verbindung mit dem Junos-Gerät. Bei ausgehenden SSH-Verbindungen stellt das Junos-Gerät die SSH-Verbindung zum Konfigurationsmanagement-Server her, woraufhin der Konfigurationsmanagement-Server die Kontrolle über die SSH-Sitzung übernimmt.
Um eine SSH- oder ausgehende SSH-Verbindung mit einem Gerät herzustellen, muss auf dem Konfigurationsmanagementserver die SSH-Software lokal installiert sein. Informationen zum Abrufen und Installieren von SSH-Software finden Sie unter:
NETCONF-Dienst über SSH aktivieren
Um NETCONF-Sitzungen auf einem Junos-Gerät einzurichten, müssen Sie den NETCONF-Service aktivieren. Sie können den NETCONF-Server so konfigurieren, dass er NETCONF-Sitzungen auf den folgenden Ports akzeptiert:
-
Standard-NETCONF-Port (830) oder ein benutzerdefinierter Port
-
Standard-SSH-Port (22)
Es wird empfohlen, den Standard-NETCONF-Port zu verwenden, da das Gerät so den NETCONF-Datenverkehr effektiver identifizieren und filtern kann. Alternativ können Sie das Gerät so konfigurieren, dass es NETCONF-Sitzungen auf einer Portnummer Ihrer Wahl anstelle des Standard-NETCONF-Ports akzeptiert. Der definierte Port akzeptiert nur NETCONF-over-SSH-Sitzungen und lehnt reguläre SSH-Sitzungsanforderungen ab.
Wenn Sie NETCONF und auch SSH-Dienste auf dem Gerät aktivieren, akzeptiert das Gerät NETCONF-Sitzungen sowohl auf dem Standard-SSH-Port als auch auf dem konfigurierten NETCONF-Port (Standard- oder benutzerdefinierter Port). Für zusätzliche Sicherheit können Sie Ereignisrichtlinien konfigurieren, die Informationen verwenden UI_LOGIN_EVENT , um die Annahme von NETCONF-Sitzungen durch den SSH-Port effektiv zu deaktivieren oder den NETCONF-Serverzugriff auf einen Port weiter einzuschränken.
So aktivieren Sie den NETCONF-Dienst über SSH auf einem Junos-Gerät:
-
Aktivieren Sie den NETCONF-Dienst entweder auf dem Standard-NETCONF-Port (830) oder einem benutzerdefinierten Port:
-
Um den Standardport NETCONF (830) zu verwenden, fügen Sie die
netconf sshAnweisung auf der[edit system services]Hierarchieebene ein:[edit system services] user@host# set netconf ssh
-
Um einen bestimmten Port zu verwenden, konfigurieren Sie die
portAnweisung mit der Portnummer auf der[edit system services netconf ssh]Hierarchieebene.[edit system services] user@host# set netconf ssh port port-number
Der
port-numberDosenbereich reicht von 1 bis 65535. Der konfigurierte Port akzeptiert nur NETCONF-over-SSH-Sitzungen und lehnt reguläre SSH-Sitzungsanforderungen ab.Anmerkung:Obwohl Sie NETCONF auf jedem Port von 1 bis 65535 konfigurieren können, sollten Sie den Zugriff nicht auf einen Port konfigurieren, der normalerweise einem anderen Dienst zugewiesen ist. Auf diese Weise werden potenzielle Ressourcenkonflikte vermieden. Wenn Sie einen Port konfigurieren, der einem anderen Dienst zugewiesen ist, z. B. FTP, und dieser Dienst aktiviert ist, wird kein
commit checkRessourcenkonflikt angezeigt und keine Warnmeldung ausgegeben.
-
-
(Optional) Um auch den Zugriff auf das SSH-Subsystem NETCONF über den Standard-SSH-Port (22) zu ermöglichen, fügen Sie die
sshAnweisung auf der[edit system services]Hierarchieebene ein.[edit system services] user@host# set ssh
Diese Konfiguration ermöglicht den SSH-Zugriff auf das Gerät für alle Benutzer und Anwendungen.
Anmerkung:In Versionen, in denen das Standardverhalten darin besteht, die Verwendung des SSH-Diensts durch den Root-Benutzer einzuschränken, müssen Sie die
root-login allowAnweisung auf Hierarchieebene[edit system services ssh]konfigurieren, damit der Root-Benutzer NETCONF-Sitzungen über SSH öffnen kann. (Optional) Konfigurieren Sie das Gerät so, dass nicht reagierende NETCONF-Clients getrennt werden.
Geben Sie das Zeitüberschreitungsintervall (in Sekunden) an, nach dem der sshd-Prozess eine Antwort anfordert, wenn keine Daten vom Client empfangen wurden. Geben Sie außerdem den Schwellenwert für verpasste Client-Alive-Antworten an, der eine Trennung auslöst.
[edit system services] user@host# set netconf ssh client-alive-interval 10 user@host# set netconf ssh client-alive-count-max 10
Anmerkung:Anweisungen, die auf der
[edit system services netconf ssh]Hierarchieebene konfiguriert sind, gelten nur für NETCONF-Sitzungen, die eine Verbindung über den Standardport (830) oder über den benutzerdefinierten Port herstellen, der auf derselben Hierarchieebene konfiguriert ist.-
Bestätigen Sie die Konfiguration:
[edit] user@host# commit
-
Wiederholen Sie die vorherigen Schritte auf jedem Junos-Gerät, auf dem die Client-Anwendung NETCONF-Sitzungen einrichtet.
Voraussetzungen für den Aufbau einer SSH-Verbindung für NETCONF-Sitzungen
Bevor der Configuration Management Server eine SSH-Verbindung mit einem Junos-Gerät herstellen kann, müssen Sie die allgemeinen Anforderungen erfüllen, die unter erläutert werden:
Sie müssen auch die Anforderungen erfüllen, die in den folgenden Abschnitten erläutert werden:
- Konfigurieren eines Benutzerkontos für die Client-Anwendung auf Junos-Geräten
- Konfigurieren eines öffentlichen/privaten Schlüsselpaars oder Kennworts für das Junos OS-Benutzerkonto
- Zugriff auf die Schlüssel oder das Kennwort mit der Clientanwendung
Konfigurieren eines Benutzerkontos für die Client-Anwendung auf Junos-Geräten
Der Konfigurationsmanagement-Server muss sich beim Junos-Gerät anmelden, um eine NETCONF-Sitzung einzurichten. Daher benötigt der Konfigurationsmanagement-Server ein Benutzerkonto auf jedem Gerät, auf dem er eine NETCONF-Sitzung einrichtet. In den folgenden Anweisungen wird erläutert, wie Sie ein lokales Benutzerkonto auf Junos-Geräten erstellen. Alternativ können Sie diesen Abschnitt überspringen und die Authentifizierung über RADIUS oder TACACS+ aktivieren.
So erstellen Sie ein lokales Benutzerkonto:
Konfigurieren eines öffentlichen/privaten Schlüsselpaars oder Kennworts für das Junos OS-Benutzerkonto
Der Konfigurationsverwaltungsserver benötigt ein öffentliches/privates SSH-Schlüsselpaar, ein textbasiertes Kennwort oder beides, um sich beim NETCONF-Server zu authentifizieren. Ein Schlüsselpaar ist ausreichend, wenn das Konto nur für die Verbindung mit dem NETCONF-Server über SSH verwendet wird. Wenn das Konto auch verwendet wird, um auf andere Weise auf das Gerät zuzugreifen (z. B. für die Anmeldung an der Konsole), muss es über ein textbasiertes Passwort verfügen. Das Kennwort wird auch verwendet (der SSH-Server fordert zur Eingabe auf), wenn die schlüsselbasierte Authentifizierung konfiguriert ist, aber fehlschlägt.
Sie können diesen Abschnitt überspringen, wenn Sie die Authentifizierung über RADIUS oder TACACS+ aktiviert haben.
So erstellen Sie ein textbasiertes Passwort:
Führen Sie die folgenden Schritte aus, um ein öffentliches/privates SSH-Schlüsselpaar zu erstellen:
Geben Sie auf dem Konfigurationsverwaltungsserver, auf dem die Clientanwendung ausgeführt wird, den
ssh-keygenBefehl in der Standardbefehlsshell ein, und geben Sie die entsprechenden Argumente an.user@cms:~$ ssh-keygen options
Zum Beispiel:
netconf-user@cms:~$ ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/home/netconf-user/.ssh/id_rsa): Created directory '/home/netconf-user/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/netconf-user/.ssh/id_rsa Your public key has been saved in /home/netconf-user/.ssh/id_rsa.pub ...
Weitere Informationen zu
ssh-keygenden Optionen finden Sie auf der Manpage desssh-keygenBefehls.Verknüpfen Sie den öffentlichen Schlüssel mit dem Junos OS-Anmeldekonto.
[edit system login user username authentication] user@host# set load-key-file URL
Junos OS kopiert den Inhalt der angegebenen Datei auf das Gerät. URL ist der Pfad zu der Datei, die einen oder mehrere öffentliche Schlüssel enthält. Der
ssh-keygenBefehl speichert standardmäßig jeden öffentlichen Schlüssel in einer Datei im Unterverzeichnis .ssh des Home-Verzeichnisses des Benutzers; der Dateiname hängt von der Kodierung und der SSH-Version ab. Weitere Informationen zum Angeben von URLs finden Sie im CLI-Benutzerhandbuch.Anmerkung:Alternativ können Sie die
ssh-rsaAnweisung auch auf Hierarchieebene[edit system login user account-name authentication]einschließen. Es wird jedoch empfohlen, dieload-key-fileAnweisung zu verwenden, da dadurch das Eingeben oder Ausschneiden und Einfügen des öffentlichen Schlüssels in der Befehlszeile entfällt.Bestätigen Sie die Konfiguration.
[edit] user@host# commit
Wiederholen Sie Schritt 2 und Schritt 3 auf jedem Junos-Gerät, auf dem die Client-Anwendung NETCONF-Sitzungen einrichtet.
Zugriff auf die Schlüssel oder das Kennwort mit der Clientanwendung
Die Clientanwendung muss in der Lage sein, auf das konfigurierte Schlüsselpaar oder Kennwort zuzugreifen und es bereitzustellen, wenn der NETCONF-Server dazu auffordert.
Es gibt mehrere Methoden, um der Anwendung den Zugriff auf den Schlüssel oder das Kennwort zu ermöglichen:
-
Wenn öffentliche/private Schlüssel verwendet werden, wird das Programm ssh-agent auf dem Gerät ausgeführt, auf dem die Client-Anwendung ausgeführt wird, und verarbeitet den privaten Schlüssel.
-
Wenn ein Benutzer die Anwendung startet, fordert die Anwendung den Benutzer zur Eingabe des Kennworts auf und speichert es vorübergehend auf sichere Weise.
-
Das Kennwort wird in verschlüsselter Form an einem sicheren Speicherort auf dem lokalen Datenträger oder in einer gesicherten Datenbank gespeichert.
Voraussetzungen für den Aufbau einer ausgehenden SSH-Verbindung für NETCONF-Sitzungen
Damit ein Konfigurationsverwaltungsserver eine ausgehende SSH-Verbindung mit dem NETCONF-Server herstellen kann, müssen Sie die allgemeinen Anforderungen erfüllen, die in den folgenden Abschnitten erläutert werden:
Sie müssen auch die Anforderungen erfüllen, die in den folgenden Abschnitten erläutert werden:
- Konfigurieren des Junos-Geräts für ausgehende SSH
- Empfangen und Verwalten der ausgehenden SSH-Initiierungssequenz auf dem Client
Konfigurieren des Junos-Geräts für ausgehende SSH
So konfigurieren Sie das Junos-Gerät für ausgehendes SSH:
Empfangen und Verwalten der ausgehenden SSH-Initiierungssequenz auf dem Client
Wenn Sie ein Junos-Gerät für ausgehendes SSH konfigurieren, versucht das Gerät, eine konstante Verbindung mit einem Konfigurationsmanagement-Server aufrechtzuerhalten. Wenn keine ausgehende SSH-Sitzung eingerichtet wird, sendet das Gerät eine ausgehende SSH-Initiierungssequenz an einen Konfigurationsverwaltungsserver, der in der Liste des Konfigurationsverwaltungsservers des Geräts aufgeführt ist. Bevor eine Verbindung mit dem Gerät hergestellt wird, muss jeder Konfigurationsmanagementserver so eingerichtet werden, dass er diese Initiierungssequenz empfängt, eine TCP-Verbindung mit dem Gerät herstellt und die Geräteidentität zurück an das Gerät überträgt.
Die Initiierungssequenz nimmt eine von zwei Formen an, je nachdem, wie Sie mit dem öffentlichen Schlüssel des Junos OS-Servers umgehen.
Wenn der öffentliche Schlüssel manuell auf dem Konfigurationsmanagement-Server installiert wird, sieht die Initiierungssequenz wie folgt aus:
MSG-ID: DEVICE-CONN-INFO\r\n MSG-VER: V1\r\n DEVICE-ID: <device-id>\r\n
Wenn das Gerät den öffentlichen Schlüssel während der Initialisierungssequenz an den Konfigurationsmanagementserver weiterleitet, nimmt die Sequenz die folgende Form an:
MSG-ID: DEVICE-CONN-INFO\r\n MSG-VER: V1\r\n DEVICE-ID: : <device-id>\r\n HOST-KEY: <pub-host-key>\r\n HMAC: <HMAC(pub-SSH-host-key,<secret>)>\r\n
Tabellarischer Änderungsverlauf
Die Unterstützung der Funktion hängt von der Plattform und der Version ab, die Sie benutzen. Verwenden Sie Funktionen entdecken , um festzustellen, ob eine Funktion auf Ihrer Plattform unterstützt wird.