NETCONFセッションのSSH接続を確立する
SSHを介したNETCONFセッションについて
SSHプロトコルを使用して、 CMS(構成管理サーバー )とJunosデバイス間の接続を確立できます。構成管理サーバーを使用して、Junos デバイスをリモートで管理します。
次のオプションを使用して、構成管理サーバーと Junos デバイス間の SSH 接続を確立できます。
-
SSH—構成管理サーバーが、JunosデバイスとのSSHセッションを開始します。
-
アウトバウンドSSH—Junosデバイスは、事前定義された設定管理サーバーのセットとのSSH接続を開始、確立、維持します。このオプションは、ネットワークの制限 (ファイアウォールなど) のために構成管理サーバーが SSH 接続を開始できない場合に使用します。
Junos OS には、デバイス管理用にカスタマイズされた OpenSSH の実装が含まれています。セキュリティ修正は、OpenSSH のバージョン番号とは無関係に、必要に応じてバックポートされます。CLI出力に表示されるバージョン(例: show version)は、適用されたすべてのパッチを反映していない場合があります。脆弱性の影響評価については、必ずジュニパーセキュリティアドバイザリ(JSA)を参照してください。
SSHまたはアウトバウンドSSHを介したNETCONFセッションの一般的な前提条件
SSHまたはアウトバウンドSSHを使用するNETCONFセッションの場合、設定管理サーバーにSSHソフトウェアをインストールし、JunosデバイスでNETCONFサービスを有効にする必要があります。詳細な手順については、以下のセクションを参照してください。
構成管理サーバーへのSSHソフトウェアのインストール
SSH接続の場合、構成管理サーバー(CMS)がJunosデバイスとのSSH接続を処理します。アウトバウンドSSH接続の場合、Junosデバイスは構成管理サーバーへのSSH接続を確立し、構成管理サーバーがSSHセッションを制御します。
デバイスとの SSH 接続またはアウトバウンド SSH 接続を確立するには、構成管理サーバーに SSH ソフトウェアがローカルにインストールされている必要があります。SSH ソフトウェアの入手とインストールについては、以下を参照してください。
SSH経由のNETCONFサービスを有効にする
JunosデバイスでNETCONFセッションを確立するには、NETCONFサービスを有効にする必要があります。以下のポートでNETCONFセッションを受け入れるようにNETCONFサーバーを設定できます。
-
デフォルトのNETCONFポート(830)またはユーザー定義ポート
-
デフォルトのSSHポート(22)
デバイスがNETCONFトラフィックをより効果的に識別およびフィルタリングできるようにするため、デフォルトのNETCONFポートを使用することを推奨します。または、デフォルトのNETCONFポートではなく、選択したポート番号でNETCONFセッションを受け入れるようにデバイスを設定することもできます。定義されたポートは、NETCONF-over-SSHセッションのみを受け入れ、通常のSSHセッション要求を拒否します。
NETCONF を有効にし、デバイス上で SSH サービスも有効にすると、デバイスはデフォルトの SSH ポートと設定された NETCONF ポート(デフォルトまたはユーザー定義ポート)の両方で NETCONF セッションを受け入れます。セキュリティを強化するため、 UI_LOGIN_EVENT 情報を利用するイベントポリシーを設定して、SSHポートがNETCONFセッションを受け入れるのを効果的に無効にしたり、ポートでのNETCONFサーバーのアクセスをさらに制限したりできます。
JunosデバイスでSSH経由のNETCONFサービスを有効にするには:
-
デフォルトのNETCONFポート(830)またはユーザー定義ポートのいずれかでNETCONFサービスを有効にします。
-
デフォルトの NETCONF ポート(830)を使用するには、
[edit system services]階層レベルでnetconf sshステートメントを含めます。[edit system services] user@host# set netconf ssh
-
特定のポートを使用するには、
[edit system services netconf ssh]階層レベルでポート番号を使用してportステートメントを設定します。[edit system services] user@host# set netconf ssh port port-number
port-numberの範囲は 1 から 65535 までです。設定されたポートは、NETCONF-over-SSHセッションのみを受け入れ、通常のSSHセッション要求を拒否します。手記:1 から 65535 までの任意のポートで NETCONF を設定できますが、通常は別のサービスに割り当てられるポートでアクセスを設定しないでください。この方法により、潜在的なリソースの競合が回避されます。FTP などの別のサービスに割り当てられたポートを設定し、そのサービスが有効になっている場合、
commit checkはリソースの競合を明らかにしず、警告メッセージも発行しません。
-
-
(オプション)デフォルトのSSHポート(22)を使用してNETCONF SSHサブシステムへのアクセスも有効にするには、
[edit system services]階層レベルにsshステートメントを含めます。[edit system services] user@host# set ssh
この構成により、すべてのユーザーとアプリケーションに対して、デバイスへのSSHアクセスが可能になります。
手記:デフォルト動作がルートユーザーによるSSHサービスの使用を制限するリリースでは、ルートユーザーがSSH経由でNETCONFセッションを開くことができるように、
[edit system services ssh]階層レベルでroot-login allowステートメントを設定する必要があります。 (オプション)応答しないNETCONFクライアントを切断するようにデバイスを設定します。
クライアントからデータを受信しなかった場合に sshd プロセスが応答を要求するまでのタイムアウト間隔 (秒単位) を指定します。さらに、切断をトリガーするクライアントアライブ応答の欠落のしきい値を指定します。
[edit system services] user@host# set netconf ssh client-alive-interval 10 user@host# set netconf ssh client-alive-count-max 10
手記:[edit system services netconf ssh]階層レベルで設定されたステートメントは、デフォルトポート(830)または同じ階層レベルで設定されたユーザー定義ポートを介して接続するNETCONFセッションにのみ適用されます。-
設定をコミットします。
[edit] user@host# commit
-
クライアント アプリケーションが NETCONF セッションを確立する各 Junos デバイスで、上記の手順を繰り返します。
NETCONFセッションでSSH接続を確立するための前提条件
構成管理サーバーが Junos デバイスとの SSH 接続を確立するには、で説明されている一般的な要件を満たす必要があります。
また、次のセクションで説明する要件も満たしている必要があります。
- Junosデバイス上のクライアントアプリケーションのユーザーアカウントを設定する
- Junos OS ユーザー アカウントの公開キーと秘密キーのペアまたはパスワードを設定します。
- クライアントアプリケーションでキーまたはパスワードにアクセスする
Junosデバイス上のクライアントアプリケーションのユーザーアカウントを設定する
設定管理サーバーは、Junos デバイスにログインして NETCONF セッションを確立する必要があります。そのため、設定管理サーバには、NETCONF セッションを確立する各デバイスにユーザアカウントが必要です。以下の手順では、Junosデバイスでローカルユーザーアカウントを作成する方法について説明します。または、このセクションをスキップして、RADIUSまたはTACACS+による認証を有効にすることもできます。
ローカル・ユーザー・アカウントを作成するには、以下の手順に従います。
Junos OS ユーザー アカウントの公開キーと秘密キーのペアまたはパスワードを設定します。
設定管理サーバーは、NETCONF サーバーとの認証に、SSH 公開/秘密キーペア、テキストベースのパスワード、またはその両方が必要です。アカウントがSSH経由でNETCONFサーバーに接続するためだけに使用される場合は、キーペアで十分です。アカウントが他の方法(コンソールでのログインなど)でデバイスにアクセスするためにも使用される場合は、テキストベースのパスワードが必要です。パスワードは、キーベース認証が設定されているが失敗した場合にも使用されます(SSHサーバーはパスワードの入力を求めます)。
RADIUSまたはTACACS+による認証を有効にすることを選択した場合は、このセクションをスキップできます。
テキストベースのパスワードを作成するには:
SSH 公開鍵と秘密鍵のペアを作成するには、以下の手順を実行します。
クライアント・アプリケーションが稼働している構成管理サーバーで、標準コマンド・シェルで
ssh-keygenコマンドを発行し、適切な引数を指定します。user@cms:~$ ssh-keygen options
例えば:
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 ...
ssh-keygenオプションの詳細については、ssh-keygenコマンドのマニュアルページを参照してください。公開鍵を Junos OS ログイン アカウントに関連付けます。
[edit system login user username authentication] user@host# set load-key-file URL
Junos OS は、指定されたファイルの内容をデバイスにコピーします。 URL は、1 つ以上の公開キーを含むファイルへのパスです。デフォルトでは、
ssh-keygenコマンドは、各公開鍵をユーザーのホームディレクトリの .ssh サブディレクトリ内のファイルに保存します。ファイル名は、エンコーディングと SSH のバージョンによって異なります。URLの指定については、 CLIユーザーガイドを参照してください。手記:または、
[edit system login user account-name authentication]階層レベルでssh-rsaステートメントを含めることもできます。ただし、load-key-fileステートメントを使用すると、コマンドラインで公開キーを入力したり、カットアンドペーストしたりする必要がなくなるため、使用することをお勧めします。設定をコミットします。
[edit] user@host# commit
クライアントアプリケーションがNETCONFセッションを確立する各Junosデバイスで、ステップ 2 とステップ 3 を繰り返します。
クライアントアプリケーションでキーまたはパスワードにアクセスする
クライアントアプリケーションは、設定されたキーペアまたはパスワードにアクセスし、NETCONFサーバーから要求されたときに提供できる必要があります。
アプリケーションがキーまたはパスワードにアクセスできるようにするには、いくつかの方法があります。
-
公開鍵/秘密鍵が使用されている場合、ssh-agent プログラムはクライアントアプリケーションが実行されているデバイスで実行され、秘密鍵を処理します。
-
ユーザーがアプリケーションを起動すると、アプリケーションはユーザーにパスワードの入力を求め、安全な方法で一時的に保存します。
-
パスワードは、暗号化された形式で、安全なローカルディスクの場所またはセキュリティで保護されたデータベースに保存されます。
NETCONF セッションのアウトバウンド SSH 接続を確立するための前提条件
設定管理サーバーがNETCONFサーバーへのアウトバウンドSSH接続を確立できるようにするには、で説明されている一般的な要件を満たす必要があります。
また、次のセクションで説明する要件も満たしている必要があります。
アウトバウンド SSH 用の Junos デバイスの設定
Junos デバイスをアウトバウンド SSH 用に設定するには、次の手順に従います。
クライアントでのアウトバウンドSSH開始シーケンスの受信と管理
Junos デバイスをアウトバウンド SSH 用に構成すると、デバイスは構成管理サーバーとの常時接続を維持しようとします。アウトバウンド SSH セッションが確立されないたびに、デバイスは、デバイスの構成管理サーバーリストにリストされている構成管理サーバーにアウトバウンド SSH 開始シーケンスを送信します。デバイスとの接続を確立する前に、各構成管理サーバーは、この開始シーケンスを受信し、デバイスとの TCP 接続を確立し、デバイス ID をデバイスに送信するように設定する必要があります。
開始シーケンスは、Junos OSサーバーの公開キーの処理方法に応じて、2つの形式のいずれかを取ります。
公開鍵が構成管理サーバーに手動でインストールされる場合、開始シーケンスは次の形式になります。
MSG-ID: DEVICE-CONN-INFO\r\n MSG-VER: V1\r\n DEVICE-ID: <device-id>\r\n
初期化シーケンス中にデバイスが公開キーを構成管理サーバーに転送する場合、シーケンスは次の形式になります。
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
変更履歴
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。特定の機能がお使いのプラットフォームでサポートされているかどうかを確認するには、 Feature Explorer を使用します。