はじめての「ヤマハ vRX さくらのクラウド版」(9)SSHでリモート管理する設定

この連載では、ヤマハ 仮想ルーター vRXをさくらのクラウドで検証する環境を構築いたします。「ヤマハ vRX さくらのクラウド版」がどのように動作するのかや検証費用について説明していきます。皆さんも検証環境を作って、いろいろ試してみてください。
第6回から第8回の記事では、パケットの通過/破棄を制御するため機能を検証しながら、守りのためのセキュリティーフィルターを構築してきました。
今回は、これまでに構築したセキュリティーフィルターに対して、SSHによるリモート接続を通過させる(穴を開ける)設定を追加していきます。
目次
セキュリティーフィルターの現状確認
SSHサーバーの設定をする前に、第8回で設定したセキュリティーフィルターの設定を確認します。このとき設定したセキュリティーフィルターは、NATディスクリプターを通過して、IPv4フィルターでパケットを破棄するように設定していました。
- NATディスクリプターを通過する設定は、nat descriptor masquerade incomingコマンドとnat descriptor masquerade staticコマンドで指定しています。
- IPv4フィルターによるパケットの破棄は、静的フィルターの298番で指定しています。
... <<<IPマスカレードを設定する>>>
[NATディスクリプタの定義]
# nat descriptor type 1 masquerade {変換タイプをIPマスカレードに設定する}
# nat descriptor address outer 1 primary {LAN1アドレスをNATの外側IPアドレスに設定する}
# nat descriptor masquerade incoming 1 forward ≪サーバに割り当てられたグローバルアドレス≫
# nat descriptor masquerade static 1 1 ≪サーバに割り当てられたグローバルアドレス≫ icmp
[NATディスクリプターのLAN1インターフェースへの適用]
# ip lan1 nat descriptor 1 {LAN1インターフェースへNATディスクリプタを適用}
... <<<セキュリティーフィルターを設定する>>>
# syslog notice on
[静的フィルターの定義]
# ip filter 298 reject-log * * * * * {IN/外部→内部は、破棄してログを記録する}
# ip filter 299 pass-log * * * * * {OUT/内部→外部は、通してログを記録する}
[動的フィルターの定義]
# ip filter dynamic 280 * * domain
# ip filter dynamic 281 * * ping {OUT/内部→外部のpingを通す}
# ip filter dynamic 298 * * tcp
# ip filter dynamic 299 * * udp
[接続先フィルターの入力(IN)と出力(OUT)の適用]
# ip lan1 secure filter in 298
# ip lan1 secure filter out 299 dynamic 280 281 298 299
セキュリティーフィルターの動作を図にしたものを以下に示します。
設定手順の概要
今回の設定手順の概要を紹介します。
- ユーザーアカウントの新規作成
初期管理ユーザー(admin)に代えて、管理者権限を有するユーザーアカウントを新規に作成します。管理者への昇格権限の設定は、管理パスワードを求められる権限を設定することで行います。 - 初期管理ユーザー(admin)の削除
adminというユーザー名は、システムの管理者権限を有するユーザー名として一般的に初期設定されているので、悪意あるスキャンの対象になりやすいです。そこでadminを削除して攻撃リスクを下げます。 - ユーザーアカウントの動作確認
新しく作成したユーザーアカウントでログインし、管理ユーザーへの昇格を試します。 - SSHサーバーのポート開放
現在のセキュリティーフィルターはIPv4パケットフィルターで破棄と通過を制御しているので、IPv4パケットフィルターに対してSSH(TCP/22番ポート)へのアクセスを許可する設定を追加します。 - SSHサーバーの有効化
新規管理ユーザーの作成とSSHサーバーのポート開放ができたので、SSHサーバーを有効にします。なお、SSHによるログイン認証方法としてはパスワード認証を選択します。 - SSHの接続テスト
Windowsで動作するTera Termを利用して、vRXにSSHでログインします。 - カスタマイズ
SSH接続に関連した設定の細かい調整を行います。
なおNATディスクリプターについては設定変更はありません。
上記の設定を図にしたものを以下に示します。
SSHクライアント
SSHは、機器を安全に遠隔操作するための通信手段です。本記事では、vRXに接続するためのSSHクライアントとして、Windowsで動作するTera Termを利用します。
項目 | 概要 |
---|---|
SSH | Secure Shell(セキュアシェル) |
認証方式 | パスワード、公開鍵、ワンタイムパスワードなど多様 |
利用可能な端末 | Linux, FreeBSD, Windows, Mac, android, iOSなど多様 |
SSHサーバーの待ち受けポート | TCPの22番ポート |
SSHのプロトコル | 最新はSSH2 (RFC4253などを参照) |
本記事で取り扱うSSHクライアント | Tera Term 5.3 (SSH1.5およびSSH2に対応) |
TeraTerm 情報 |
---|
Tera Term Open Source Project (日本語) |
Tera Term Open Source Project (英語) |
「Tera Term」定番のターミナルエミュレーター - 窓の杜 → 「Tera Term (v5系統)」など |
Tera Termはコンソールの操作性が優れています。マクロ、ログ保存など、快適な設定や管理が可能です。次回以降の記事では内部LANの構築や物理ルーターとの接続検証に話題が移りますが、ここでもTera Termを使って作業する場面が多数登場します。
ユーザーアカウントを新規登録する
adminの代わりに使用するユーザーアカウントとして、管理ユーザーに昇格できる「u5er-adm1n」と管理ユーザーに昇格できない「u5er-log1n」を新規作成します。
ユーザー名 | ユーザー権限 | administrator コマンド動作 | 補足 |
---|---|---|---|
admin | 2 | 管理パスワード不要 | 初期管理ユーザー、あとで削除 |
u5er-adm1n | 2 | 管理パスワード不要 | 新しい管理ユーザー |
u5er-log1n | off | 昇格不可 | 新しいログインユーザー |
- ユーザー名は"user-admin"や"user-login"というイメージで、判別しにくさを少し加えるため、英字小文字の"s"や"i"を数字の"5"や"1"に置き換えて、"u5er-adm1n"や"u5er-log1n"としています。
- ユーザー権限は、管理ユーザーへの昇格可否や管理パスワード入力の有無を設定する項目です。詳しくは後述の「参考:ユーザー権限の設定について」をご覧ください。
- "u5er-adm1n"のユーザー権限は"1"にしたいのですが、必ず一つはユーザー権限が"2"のアカウントを作っておかないといけないので、ここでは"2"としておきます。
- 管理パスワードの初期値は「空」(未登録)なので、administrator passwordコマンドで管理パスワードを登録しておきます。
... <<<新しいユーザーアカウントの登録>>>
[ユーザーアカウントを新規登録]
# login user u5er-adm1n ≪新しい管理ユーザーのパスワード≫
# login user u5er-log1n ≪新しいログインユーザーのパスワード≫
# user attribute u5er-adm1n administrator=2
# user attribute u5er-log1n administrator=off
[管理パスワードの設定]
# administrator password
Old_Passeord: ≪古い管理パスワード≫
New_Password: ≪新しい管理パスワード≫
New_Password(Confirm): ≪新しい管理パスワード≫
[設定内容の確認と保存]
# show config
# show config | grep user
# show config | grep u5er
# show status user
# save
アカウント登録前の確認
login userコマンドとuser attributeコマンドが工場出荷時と初回ログイン時に設定されています。show configを実行して、adminユーザーの設定状態を確認します。下図の画面からlogin userとuser attributeの設定値を抜粋したものを以下に示します。
login user admin *
user attribute admin administrator=2
アカウントの新規登録と管理パスワードの登録
新しいアカウントと管理パスワードを登録します。
- login userコマンドとuser attributeコマンドを使って新しいアカウントを登録します。
- administrator passwordコマンドで管理パスワードを設定します。管理パスワードが未設定の場合は、「古い管理パスワード」のところに空(改行キーのみ)を入力します。
[ユーザーアカウントを新規登録]
# login user u5er-adm1n ≪新しい管理ユーザーのパスワード≫
# login user u5er-log1n ≪新しいログインユーザーのパスワード≫
# user attribute u5er-adm1n administrator=2
# user attribute u5er-log1n administrator=off
[管理パスワードの設定]
# administrator password
Old_Passeord: ≪古い管理パスワード≫
New_Password: ≪新しい管理パスワード≫
New_Password(Confirm): ≪新しい管理パスワード≫
設定内容の確認
登録した新しいアカウントと管理パスワードの設定を確認します。
- show configコマンドとgrepコマンドで設定内容を確認します。
- show status userコマンドで、ログインしているユーザーの情報を表示します。
[設定内容の確認と保存]
# show config
# show config | grep user
# show config | grep u5er
# show status user
# save
参考:ユーザー権限の設定について
ユーザー権限の設定によって、administratorコマンドによる一般ユーザーから管理ユーザーへの昇格可否を制御できます。ユーザー権限の設定値を"2"にすると管理ユーザーへの昇格が可能で、その際に管理パスワードの入力が不要になります。設定値を"1"にしたときも管理ユーザーへの昇格が可能ですが、昇格する際に管理パスワードの入力が必要になります。"off"にすると管理ユーザーへの昇格ができません。詳しくは下図およびキャプションからリンクされているvRXのマニュアルページをご覧ください。
ヤマハの公開情報 |
---|
ヤマハネットワーク製品 技術情報ページ |
→ ヤマハ vRX ユーザーガイド |
→→ ユーザーアカウントを追加する |
→ FAQ |
→→ FAQ:トピックス |
→→→ 初回のログイン方法 |
→ 技術資料 |
→→ TELNET複数セッション機能、SSHサーバー機能 |
→→→ コマンド |
→→→ 設定例 |
→ コマンドリファレンス |
→→ login user |
→→ user attribute |
→→ login password |
→→ administrator password |
→→ show status user |
→→ security class |
→→ show config |
→→ show | grep |
→→ no |
(参考) 総務省によるネットワークの安全性に関する施策 |
---|
総務省:NOTICEプロジェクト |
→ ルーター / ネットワークカメラの安全な管理方法 |
→ ルーターの役割 |
→ FAQ → 「攻撃者に推測されやすいパスワードとは、どのようなものですか?」を参照! |
総務省:安全・信頼性の向上(電気通信事業者、防災関係機関、電気通信機器等) |
→ 端末機器に関する基準認証制度について |
METI/経済産業省:IoT製品に対するセキュリティラベリング制度(JC-STAR)の運用を開始しました |
→ セキュリティ要件適合評価及びラベリング制度(JC-STAR) | 情報セキュリティ | IPA 独立行政法人 情報処理推進機構 |
初期管理ユーザー(admin)の削除
ユーザーアカウントの新規登録と動作確認ができたら、初期管理ユーザー(admin)を削除します。
... <<<初期管理ユーザー(admin)の削除と動作確認>>>
# no login user admin
# no user attribute admin
# show config
# show config | grep user
# show config | grep u5er
# show status user
adminの削除
adminユーザーの削除手順を以下に示します。
- show configコマンドで設定を表示します。
- noコマンドで、login userとuser attributeからadminユーザーの情報を削除します。
- show configコマンドとgrepコマンドで、adminユーザーの情報が削除されていることを確認します。
削除作業後にshow configコマンドで設定内容を確認すると、adminユーザーが消えていることがわかります。
ユーザーアカウントの動作確認
次の順番で、削除したアカウントや新規作成したアカウントにログインを試みて動作確認します。
- admin
- ログインを試みましたがエラーになりました。
- エラーメッセージからは、ユーザー名が間違っているのか、パスワードが間違っているのかは判別できません。これでは攻撃者はエラーメッセージから情報を得ることができません。
- u5er-log1n
- ログインに成功しました。
- administratorコマンドで管理者モードへの昇格を試みましたがエラーになりました。このアカウントはユーザー権限がoffに設定されているので、管理者モードに昇格することはできません。
- u5er-adm1n
- ログインに成功しました。
- このアカウントはユーザー権限が2に設定されているので、administratorコマンドで管理者モードに昇格することができました。
SSHサーバーのポート開放
新しい管理ユーザーの準備ができたので、SSHで接続するための設定を追加していきます。
設定方法(1):通常のセキュリティーフィルターに穴を開ける
NATディスクリプターとIPv4パケットフィルターで守っているので、そこに設定します。
... <<<SSHを公開する設定>>>
[NATディスクリプタの定義]
# nat descriptor masquerade static 1 2 ≪サーバに割り当てられたグローバルアドレス≫ tcp 22
[静的フィルターの定義]
# ip filter 297 pass-log * * tcp * 22 {SSHのINを通す}
[接続先フィルターの入力(IN)の適用]
# ip lan1 secure filter in 297 298
設定方法(2):現状のセキュリティーフィルターに穴を開ける
NATディスクリプターはnat descriptor masquerade incomingコマンドで守っているので、そこで設定します。
... <<<SSHを公開する設定>>>
[NATディスクリプタの定義]
{incomingの設定を forward にしてあるので、追加設定不要}
[静的フィルターの定義]
# ip filter 297 pass-log * * tcp * 22 {SSHのINを通す}
[接続先フィルターの入力(IN)の適用]
# ip lan1 secure filter in 297 298
設定例
設定を始める前に、新しい管理ユーザーでログインして現在の設定を確認します。
セキュリティーフィルターにSSHサーバー用の穴(TCPの22番ポートを待ち受ける)を開けます。
SSHサーバーの有効化
vRXのSSHサーバー機能を有効にします。設定コマンドを以下に示します。
[SSHサーバーを有効にする]
# sshd auth method password
# sshd host key generate
# sshd service on
# save
それぞれのコマンドでやっていることを説明します。
- sshd auth method password
SSHでログインする際の認証方法としてパスワード認証を利用します。ちなみに、公開鍵認証を行うためには、この時点で authorized_keys ファイルをvRXに確実にコピーする手段がありません。公開鍵認証を利用する場合は、いったんパスワード認証でSSH通信路を確保してから公開鍵認証の準備をして移行するのが良いと思います。 - sshd host key generate
SSHサーバーのホスト鍵を生成します。 - sshd service on
SSHサーバー機能を有効にします。 - save
設定を保存します。
設定例
実際に設定を行っている様子を以下に示します。先ほど提示した一連のコマンドを実行してvRXのSSHサーバー機能を有効にした後、show configコマンドで設定内容を確認します。show configの出力の最後(赤枠で囲んだ部分)を見ると、SSHサーバーが起動していることや、投入した設定内容が反映されていることがわかります。
show sshd host keyコマンドを実行すると、生成されたホスト鍵が表示されます。
ヤマハの公開情報 |
---|
ヤマハネットワーク製品 技術情報ページ |
→ ヤマハ vRX ユーザーガイド |
→→ コンソールを使用する |
→→→ アクセス方法 |
→→→→ インターネットに接続したパソコンからSSHでアクセス |
→ 技術資料 |
→→ TELNET複数セッション機能、SSHサーバー機能 |
→→→ コマンド |
→→→ 設定例 |
→ コマンドリファレンス |
→→ sshd service |
→→ sshd host key generate |
→→ sshd auth method |
→→ show sshd host key |
SSHの接続テスト
vRXのSSHサーバーにWindows端末とTera Termを用いてSSHで接続します。
1) Tera Termを開く
Tera Termを実行すると開くダイアログで、ホストのIPアドレス、サービス(SSH)、TCPポート番号(22)、SSHバージョン(SSH2)などを設定して、[OK]をクリックします。
2) Tera Termでサーバー側のホスト鍵を受け入れる
接続先のホスト鍵がknown_hostsの情報と異なる場合は、受け入れるかどうかの確認画面が表示されます。ホスト鍵を新しく設定したり、sshd host key generateコマンドを再実行したりしたときにこの画面が表示されます。
受け入れる場合は、「既存鍵を、新しい鍵で上書きする」にチェックを入れて[続行]をクリックします。
3) パスワード認証を試みる
SSH認証の画面が表示されるので、ユーザー名とパスワード(パスフレーズ)を入力します。
ここでは管理ユーザー(u5er-adm1n)のユーザ名とパスワードを入力し、[OK]をクリックします。
4) ログイン成功
パスワード認証が通るとログインできます。
5) 管理者モードへ昇格
administratorコマンドで管理者モードに昇格します。
6) show configを実行
管理者モードでshow configを実行してみます。
7) ログインしているユーザー情報の表示
show status userコマンドで、ログインしているユーザー情報を表示してみます。下図ではshow status userコマンドを2回実行しています。
- 1回目は、管理ユーザーがSSH経由でログインしている状態で実行したもので、1つのu5er-adm1nユーザーが表示されています。
- 2回目は、それに加えてvRXのコンソールからもu5er-adm1nユーザーでログインした状態で実行したもので、2つのu5er-adm1nユーザーが表示されています。
8) SSHの通信ログを確認する
SSHクライアントとSSHサーバーの通信に関するNATとパケットフィルターのログを確認します。
- 1行目は、一つ前のSSHサーバへの接続を管理するNATテーブルのエントリーが削除されたことを示しています。また、SSHクライアントのポート番号として60542が使われています。2行目以降のログではSSHクライアントのポート番号が+1されて60543になっています。
- 2行目以降は、SSHクライアントとSSHサーバーの通信が記録されています。パケットフィルターのIN方向(297)のログはSSHクライアントからSSHサーバーへのパケットを検出したもので、パケットフィルターのOUT方向(299)はSSHサーバーからSSHクライアントへのパケットを検出したものです。
9) (おまけ)外部アクセスをブロックしている様子を確認
ログをさらに見ていくと、SSH通信の他に、外部端末からのアクセスを破棄している様子も確認できます。
下図の赤枠で囲んだ部分(2箇所)は、外部端末からの接続要求に対して、NATテーブルにエントリーを作成してからパケットを破棄したことを示すログです。また、"[NAT(1):LAN1] Released …"で始まる行は、外部端末からの接続要求で作成されたNATテーブルのエントリーが削除されたことを示すログです。
カスタマイズ
vRXとのSSH接続をカスタマイズする際にポイントになりそうな点をいくつか紹介します。
1) 外部に公開するSSHポート番号を8888に変更する
SSHの待ち受けポート番号を8888に変更し、IPマスカレードを使って8888から22へ変換する設定例を紹介します。
設定コマンドを以下に示します。nat descriptor masquerade staticコマンドを使って、静的IPマスカレードでTCP 8888番ポートをTCP 22番ポートに変換しています。静的IPフィルターはTCP 22番ポートに変換済みなので変更する必要はありません。
[NATディスクリプタの定義]
# nat descriptor masquerade static 1 2 ≪サーバに割り当てられたグローバルアドレス≫ tcp 8888=22
[静的フィルターの定義]
# ip filter 297 pass-log * * tcp * 22 {SSHのINを通す}
[接続先フィルターの入力(IN)と出力(OUT)の適用]
# ip lan1 secure filter in 297 298
2) SSHサーバーのlistenポートを変更する
sshd listenコマンドで待ち受けポートを変更した場合は、静的IPマスカレードと静的フィルターで指定するポート番号を同様に変更します。設定例は、待ち受けポートを8888番ポートに変更しています。
[SSHサーバーのlistenポートを変更する]
# sshd listen 8888
[NATディスクリプタの定義]
# nat descriptor masquerade static 1 2 ≪サーバに割り当てられたグローバルアドレス≫ tcp 8888
[静的フィルターの定義]
# ip filter 297 pass-log * * tcp * 8888 {SSHのINを通す}
[接続先フィルターの入力(IN)と出力(OUT)の適用]
# ip lan1 secure filter in 297 298
3) 静的フィルターのプロトコル定義をTCPからTCPSYNへ絞り込む
TCPの3ウェイハンドシェイクのSYNパケットだけ通して、セッションを確立させることができます。
設定例を以下に示します。静的フィルターの定義で、それまでtcpとなっていたところをtcpsynに変更することにより、SSHクライアントに入ってくる"SYN"パケットだけを通すようになります。SSHサーバーからのSYNに対する返信("SYN+ACK"パケット)で動的フィルターが動作して、このセッションを透過対象に加えます。SSHクライアントからの返信("ACK"パケット)は、動的フィルター機能によって透過します。
... <<<SSHを公開する設定>>>
[NATディスクリプタの定義]
# nat descriptor masquerade static 1 2 ≪サーバに割り当てられたグローバルアドレス≫ tcp 22
[静的フィルターの定義]
# ip filter 297 pass-log * * tcpsyn * 22 {SSHのINのうち"SYN"だけを通す}
[接続先フィルターの入力(IN)と出力(OUT)の適用]
# ip lan1 secure filter in 297 298
4) SSHでの接続を許可するホストを制限する(その1)
IPv4フィルターでSSH接続元のIPアドレスを制限します。
... <<<SSHを公開する設定>>>
[NATディスクリプタの定義]
# nat descriptor masquerade static 1 2 ≪サーバに割り当てられたグローバルアドレス≫ tcp 22
[静的フィルターの定義]
# ip filter 297 pass-log ≪リモートアクセスする設定用パソコンのグローバルアドレス≫ * * tcp * 22 {SSHのINを通す}
[接続先フィルターの入力(IN)と出力(OUT)の適用]
# ip lan1 secure filter in 297 298
5) SSHでの接続を許可するホストを制限する(その2)
sshd hostコマンドでSSH接続元のIPアドレスを制限します。もしかしたら、フィルター定義で毎回検査するよりも、こちらの設定で拒否した方がリソースバランスなどの視点で効率的かもしれません。
... <<<SSHを公開する設定>>>
# sshd host ≪リモートアクセスする設定用パソコンのグローバルアドレス≫
6) より安全な公開鍵認証に切り替える
SSHクライアントの公開鍵をauthorized_keysファイルに追加する必要があります。パスワード認証でログインできるようにしてから公開鍵認証に移行するとよいでしょう。
[公開鍵認証にする]
# sshd auth method publickey
7) ログインタイマー
キー入力がない場合に自動的にログアウトするまでの時間を調整します。通常は300秒に設定されています。
コマンド名 | 対象ユーザー | 初期値 |
---|---|---|
login timerコマンド | すべてのユーザー | 300秒 |
user attributeコマンドのlogin-timerオプション | ユーザーごと | 300秒 |
- login timerコマンドよりも、 user attributeコマンドのlogin-timerオプションの設定値が優先されます。
- ログインタイマーを使用しない場合は、login timerコマンドの設定値としてclearを指定し、自動ログアウト機能を無効にします。この設定にすると、quitコマンドなどでログアウトするまでvRXにログインした状態のままになります。
関連リンク
vRXで利用できるコマンド操作に関連する公式情報です。
検証経費
今回検証したサーバとvRXに関する費用は次の通りです。
項目 | 経費 |
---|---|
vRXを動作させる仮想マシン | 起動からシャットダウンまでの稼働時間に応じた課金が発生します |
vRXのアーカイブ | 今回の動作確認だけなら費用は発生しません |
vRXのライセンス | 今回の動作確認だけなら費用は発生しません |
連載トップへのリンク
連載回数番号 | リンク |
---|---|
第1回 | はじめる前に |
第2回 | インストールとシャットダウン |
第3回 | 初期設定 |
第4回 | 入出力を観測 |
第5回 | インストール状態の確認 |
第6回 | セキュリティーフィルターの適用 |
第7回 | NAT(IPマスカレード、NAPT)の適用 |
第8回 | 新しいセキュリティーポリシーの検討 |
※画面キャプチャーなどは、2025年3月時点のものです。