$Date: 2023/07/06 20:22:18 $
ルーターにログインするユーザーを、RADIUSサーバーと連携して管理することができます。従来ルーターのコマンドで指定していた以下の情報をRADIUSサーバーに登録します。
ルーターは、設定に応じてユーザーの認証時にRADIUSサーバーへ問い合わせを行います。
本ドキュメントでは、従来の機能との差分を中心に説明します。各機能の詳細については参考情報に掲載されているそれぞれのドキュメントを参照してください。
以下の機種およびファームウェアリビジョンで、ログインユーザーの管理にRADIUSを使用することができます。
機種 | ファームウェア |
---|---|
vRX VMware ESXi版 | すべてのリビジョン |
vRX Amazon EC2版 | |
RTX3510 | |
RTX1300 | |
RTX1220 | |
RTX830 | |
NVR510 | Rev.15.01.03 以降 |
NVR700W | すべてのリビジョン |
RTX1210 | |
RTX5000 | |
RTX3500 | |
FWX120 | |
RTX810 | Rev.11.01.06 以降 |
NVR500 | Rev.11.00.36 以降 |
RTX1200 | Rev.10.01.36 以降 |
以下のRADIUSサーバーで動作確認を行っています。
当機能を使用するには、事前に以下のコマンドを設定する必要があります。なお、各コマンドの詳細についてはコマンドリファレンスを参照してください。
以降の説明では、上記のコマンドがいずれも正しく設定されているものとします。
コンソールへログインする際の接続方法としてはシリアル、TELNET、SSH、リモートセットアップがあります。
ログイン時の認証動作は以下の通りです。
シリアル、TELNET、リモートセットアップによる接続で、最初にパスワード入力のプロンプト (Password:) が表示された時は、何も入力せずにEnterキーを押下してください。login userコマンドが設定されている場合、もしくはlogin radius useコマンドがonに設定されている場合は、続けてユーザー名入力のプロンプト (Username:) が表示されます。
administratorコマンドで管理ユーザーへ移行する際の認証動作は以下の通りです。
RADIUSサーバーへの問い合わせを行なう際のユーザー名は*administratorとなります。この名前を変更することはできません。
ローカル認証でログインしたユーザーがRADIUS認証で管理ユーザーへ移行する、またはRADIUS認証でログインしたユーザーがローカル認証で管理ユーザーへ移行することも可能です。
ログイン時の認証動作において、RADIUSサーバーに問い合わせを行う条件はコンソールの場合と同様です。
RADIUS認証でログインしたユーザーの権限が一般権限と管理権限のどちらになるかは、サーバーから送信されるAccess-Acceptに含まれるService-Type属性の値によって決定されます。Service-Type属性の値がLoginの場合は一般権限、Administrativeの場合は管理権限となります。
login userコマンドで登録されているユーザーがRADIUSサーバーに登録されている管理パスワード (ユーザー名*administratorとして登録されているパスワード) でログインする、もしくはRADIUSサーバーに登録されているユーザーがadministrator passwordコマンドで設定された管理パスワードでログインすることはできません。
通常のGUIにおいて、RADIUS認証で管理権限としてログインしたユーザーは、一般向けページと管理者向けページのどちらにもアクセスすることができます。一般権限としてログインしたユーザーは一般向けページのみアクセスすることができます。なお、かんたん設定ページにログインするには管理権限が必要となります。RADIUSサーバーにユーザーを登録する場合、Service-Type属性の値をAdministrativeに設定してください。
カスタムGUIにおいて、RADIUS認証で管理権限としてログインしたユーザーは、ユーザーの個別ページへのアクセス、および管理権限を必要とするコマンドを含むすべてのコマンドの実行が可能です。一般権限としてログインしたユーザーは、管理権限を必要とするコマンドを実行できません。
httpd custom-gui userコマンドで設定していたユーザーごとのディレクトリおよびインデックスを、RADIUSサーバーに登録することができます。使用する属性はVendor-Specificとなります。詳細はRADIUSの属性についてをご覧ください。
TFTPでファイルの読み出し/書き込みをする際、管理パスワードの認証にRADIUSを使用することができます。対応する項目は以下の通りです。
RADIUSサーバーへの問い合わせを行なう際のユーザー名は*administratorとなります。パスワードはローカル認証の場合と同様、パスの後のスラッシュ (/) に続けて入力します。
RADIUSサーバーに問い合わせを行う条件は、コンソールにおいてadministratorコマンドで管理ユーザーに移行する場合と同様です。
RTFS領域のファイルまたは外部メモリ内のファイルに対して読み出し/書き込みをする際、パスワードにスラッシュ ('/') が含まれていると、ルーターからAccess-Requestを複数回送信することになるため注意が必要です。これは、次のような理由によるものです。
ファイルのパスと管理パスワードはスラッシュ ('/') で区切りますが、RTFS領域のファイルまたは外部メモリ内のファイルは、ファイルのパスにスラッシュ ('/') が含まれることがあるため、管理パスワードがどこから始まるのか正確に識別することができません。このためルーターは、最後のスラッシュ ('/') 以降の文字列をパスワードとしてRADIUS認証し、失敗したらその前にあるスラッシュ ('/') 以降の文字列を管理パスワードとして再度認証するという動作を、認証に成功するまで繰り返します。
例として、RADIUSサーバーに登録している管理パスワードがabc/defである場合の動作を説明します。ここでは、ルーターの/test/remote.txtに対してlocal.txtというファイルを書き込むものとします。
Windowsのコマンドプロンプトから、以下のコマンドを実行します。
C:\>tftp 192.168.100.1 put local.txt /test/remote.txt/abc/def
通信手順は以下の通りです。
上記の通り、パスワードにスラッシュ ('/') が含まれていると、ユーザーが正しいパスワードを入力しても、RADIUS認証の処理で認証エラーが必ず発生します。このため、例えばRADIUSサーバーで認証エラーの回数を記録している場合などは、パスワードにスラッシュ ('/') を使用しないでください。
Access-Requestには以下の属性が含まれます。
パスワードの認証方式はPAPです。
ルーターがRADIUSサーバーに送信するユーザー名、パスワードには以下の制限があります。
名称 | 文字列の長さ | 使用可能な文字の種類 |
---|---|---|
ユーザー名 | 1文字以上32文字以下 | 半角英数字、ハイフン (-)、アンダーバー (_) |
パスワード | 0文字以上32文字以下 | 半角英数字および記号 (7bit ASCII Codeで表示可能なもの) |
管理パスワードを認証する際、User-Name属性の値は*administratorとなります。
コンソール/TFTPでの認証時、Access-Acceptに含まなければならない属性はありません。
HTTP/SFTPでの認証時、Access-AcceptにはService-Type属性が必須です。また、値はLoginまたはAdministrativeのいずれかでなければなりません。Service-Type属性が含まれない、または含まれていても値が前記のいずれでもない場合は認証エラーになります。
カスタムGUIでの認証時、ユーザーごとのディレクトリとインデックスの指定はVendor-Specific属性で行ないます。
ベンダIDは以下の通りです。
名称 | 番号 |
---|---|
YAMAHA Corporation | 1182 |
ベンダ属性番号には以下のものがあります。
名称 | 属性番号 | 値の型 | 長さ (オクテット) | 説明 |
---|---|---|---|---|
Yamaha-Custom-GUI-User-Directory | 1 | STRING | 1..247 | 基点となるディレクトリの絶対パスまたは相対パス。 |
Yamaha-Custom-GUI-User-Index | 2 | STRING | 1..247 | スラッシュ (/) 止めのURLでアクセスした場合に出力するファイル名。 |
Yamaha-Custom-GUI-User-Directory属性の値に相対パスを指定した場合、環境変数PWDを基点としたパスと解釈されます。
Yamaha-Custom-GUI-User-Index属性の値にスラッシュ (/) を含む文字列を指定することはできません。含んでいる場合は認証エラーになります。
Access-AcceptにYamaha-Custom-GUI-User-Directory属性が含まれるユーザーはカスタムGUIを使用するユーザー、含まれないユーザーは通常のGUIを使用するユーザーとなります。ただし、httpd custom-gui useコマンドの設定がoffの場合は、Yamaha-Custom-GUI-User-Directory属性が含まれるユーザーも通常のGUIを使用するユーザーとなります。
Yamaha-Custom-GUI-User-Index属性は省略可能です。省略した場合はindex.htmlがインデックスのファイル名となります。
FreeRADIUS用の辞書ファイルを以下からダウンロードできます。使用方法については設定例を参照してください。
Access-Acceptにルーターで使用しない属性が含まれている場合、その属性は無視されます。
RADIUS認証でログインするユーザーの属性を設定するには、user attributeコマンドのユーザー名に*radiusを指定します。なお、これはRADIUS認証でログインするすべてのユーザーに適用される設定で、ユーザーごとに個別の設定を行なうことはできません。
HTTP/SFTP接続での認証時、Service-Type属性の値がAdministrativeであっても、user attributeコマンドのadministrator属性の値がoffに設定されている場合は認証エラーになります。
ルーターにログインしているユーザーはshow status userコマンドで確認することができます。RADIUS認証でログインしたユーザーは、ユーザー名の前にアットマーク (@) が表示されます。
設定値 | 説明 |
---|---|
on | 使用する |
off | 使用しない |
設定値 | 説明 |
---|---|
on | ローカル認証とRADIUS認証を併用する |
only | RADIUS認証のみ使用する |
off | 使用しない |
設定値 | 説明 |
---|---|
ユーザー名 | 登録されているユーザー名 |
*radius | RADIUS認証でログインするすべてのユーザー |
* | すべてのユーザー |
RTX3510、RTX1300
設定値 | 説明 |
---|---|
2 | administratorコマンドのパスワード入力無しで管理ユーザーに昇格することができる。またGUIの管理者ページへ接続することができる。管理者パスワードを用いてSFTP接続を行うことができる。 |
1 | administratorコマンドにより管理ユーザーに昇格することができる。またGUIの管理者ページへ接続することができない。管理者パスワードを用いてSFTP接続を行うことができる。 |
off | administratorコマンドにより管理ユーザーに昇格することができない。またGUIの管理者ページへ接続することができない。管理者パスワードを用いてSFTP接続を行うことができない。 |
上記以外の機種
設定値 | 説明 |
---|---|
on | administratorコマンドにより管理ユーザーに昇格することができる。またGUIの管理者ページへ接続することができる。管理者パスワードを用いてSFTP接続を行うことができる。 |
off | administratorコマンドにより管理ユーザーに昇格することができない。またGUIの管理者ページへ接続することができない。管理者パスワードを用いてSFTP接続を行うことができない。 |
設定値 | 説明 |
---|---|
off | すべての接続を禁止する。 |
all | すべての接続を許可する。 |
serial | シリアルコンソールからの接続を許可する。 |
telnet | TELNETによる接続を許可する。 |
ssh | SSHによる接続を許可する。 |
sftp | SFTPによる接続を許可する。 |
remote | リモートセットアップによる接続を許可する。 |
http | GUI設定画面への接続を許可する。 |
設定値 | 説明 |
---|---|
IPアドレス | 指定したホストからの接続を許可する。 |
any | すべてのホストからの接続を許可する。 |
インタフェース名 | 指定したインタフェースからの接続を許可する。 |
設定値 | 説明 |
---|---|
on | 同一ユーザー名によるTELNET、SSH、HTTPでの複数接続を許可する。 |
off | 同一ユーザー名によるTELNET、SSH、HTTPでの複数接続を禁止する。 |
設定値 | 説明 |
---|---|
120..21474836 | キー入力がない場合に自動的にログアウトするまでの秒数。 |
clear | ログインタイマーを設定しない。 |
記号 | 状態 |
---|---|
アスタリスク (*) | 自分自身のユーザー情報 |
プラス (+) | 管理者モードになっている |
アットマーク (@) | RADIUS認証でログインした |
> show status user (*: 自分自身のユーザー情報, +: 管理者モード, @: RADIUSでの認証) ユーザー名 接続種別 ログイン アイドル IPアドレス ------------------------------------------------------------------------------- user-local serial 09/16 10:21 0:00:17 @user-radius2 remote 09/16 10:22 0:00:36 *+@user-radius1 telnet1 09/16 10:22 0:00:00 192.168.0.100
> show status user (*: current user, +: administrator mode, @: authenticated via RADIUS) username connection login time idle IP address ------------------------------------------------------------------------------- user-local serial 09/16 10:21 0:02:08 @user-radius2 remote 09/16 10:22 0:02:27 *+@user-radius1 telnet1 09/16 10:22 0:00:00 192.168.0.100
当機能の使用方法について、ルーターおよびRADIUSサーバーの設定例を紹介します。RADIUSサーバーにはFreeRADIUSを使用します。
紹介する設定例において、ネットワーク構成は次の通りです。
以降の説明において、各設定ファイルへのパスは環境により異なる場合があります。
設定ファイルを更新した場合は、変更内容を反映させるために以下のコマンドでデーモンを再起動してください。
# /etc/rc.d/radiusd restart
RADIUSクライアントのIPアドレスとRADIUSシークレットを登録します。RADIUSクライアントのIPアドレスはルーターのLAN1のIPアドレスになります。/etc/clients.confに以下を追加してください。
client 192.168.100.1 { secret = yamaha shortname = yamaha-router }
なお、shortnameの値は任意です。
カスタムGUIでVendor-Specific属性を使用するために、辞書ファイルを設定します。dictionary.yamahaをダウンロードし、/usr/share/freeradius以下に保存してください。次に、/usr/share/freeradius/dictionaryに以下を追加してください。
$INCLUDE dictionary.yamaha
以下の通り、ルーターにコンソールからログインするユーザーを登録します。
ユーザー名 | パスワード | 登録先 |
---|---|---|
user-local | ul | ルーター |
user-radius1 | ur1 | RADIUSサーバー |
user-radius2 | ur2 | RADIUSサーバー |
管理ユーザーへの移行時、RADIUS認証のみを行なうものとします。管理パスワードはadminです。
login user user-local ul login radius use on administrator radius auth only ip lan1 address 192.168.100.1/24 radius auth on radius auth server 192.168.100.10 radius auth port 1812 radius secret yamaha
各コマンドの意味は以下の通りです。
/etc/raddb/usersに以下を追加します。
"user-radius1" Auth-Type := Local, User-Password=="ur1" "user-radius2" Auth-Type := Local, User-Password=="ur2" "*administrator" Auth-Type := Local, User-Password=="admin"
HTTPでのみアクセスできるユーザーをRADIUSサーバーに登録します。
ユーザー名 | パスワード | 権限 | 使用するGUI | ディレクトリ | インデックス |
---|---|---|---|---|---|
user-general | ug | 管理権限 | 通常のGUI | - | - |
user-custom1 | uc1 | 管理権限 | カスタムGUI | /gui/user-custom1 | index.html |
user-custom2 | uc2 | 一般権限 | カスタムGUI | /gui/user-custom2 | default.html |
user attribute *radius connection=http login radius use on ip lan1 address 192.168.100.1/24 radius auth on radius auth server 192.168.100.10 radius auth port 1812 radius secret yamaha httpd custom-gui use on
各コマンドの意味は以下の通りです。
/etc/raddb/usersに以下を追加します。
"user-general" Auth-Type := Local, User-Password=="ug" Service-Type = Administrative-User "user-custom1" Auth-Type := Local, User-Password=="uc1" Service-Type = Administrative-User, Yamaha-Custom-GUI-User-Directory = "/gui/user-custom1" "user-custom2" Auth-Type := Local, User-Password=="uc2" Service-Type = Login-User, Yamaha-Custom-GUI-User-Directory = "/gui/user-custom2", Yamaha-Custom-GUI-User-Index = "default.html"
RADIUS認証でユーザーがルーターにログインした場合、INFOレベルで以下のSYSLOGが出力されます。
出力メッセージ | 意味 |
---|---|
Login succeeded for Serial via RADIUS: name | シリアル接続で、ユーザーnameがRADIUS認証によりログインした。 |
Login succeeded for Remote via RADIUS: name | リモートセットアップ接続で、ユーザーnameがRADIUS認証によりログインした。 |
Login succeeded for TELNET via RADIUS: ip name | TELNET接続で、ユーザーname (IPアドレスはip) がRADIUS認証によりログインした。 |
Login succeeded for SSH via RADIUS: ip name | SSH接続で、ユーザーname (IPアドレスはip) がRADIUS認証によりログインした。 |
Login succeeded for HTTP via RADIUS: ip name as login user | HTTP接続で、ユーザーname (IPアドレスはip) がRADIUS認証により一般権限でログインした。 |
[SFTPD] Login succeeded via RADIUS: ip name as login user | SFTP接続で、ユーザーname (IPアドレスはip) がRADIUS認証により一般権限でログインした。 |
'administrator' succeeded for Serial user via RADIUS | シリアル接続で、無名ユーザーがRADIUS認証により管理ユーザーへ移行した。 |
'administrator' succeeded for Serial user via RADIUS: name | シリアル接続で、ユーザーnameがRADIUS認証により管理ユーザーへ移行した。 |
'administrator' succeeded for Remote user via RADIUS | リモートセットアップ接続で、無名ユーザーがRADIUS認証により管理ユーザーへ移行した。 |
'administrator' succeeded for Remote user via RADIUS: name | リモートセットアップ接続で、ユーザーnameがRADIUS認証により管理ユーザーへ移行した。 |
'administrator' succeeded for TELNET via RADIUS: ip | TELNET接続で、無名ユーザー (IPアドレスはip) がRADIUS認証により管理ユーザーへ移行した。 |
'administrator' succeeded for TELNET via RADIUS: ip name | TELNET接続で、ユーザーname (IPアドレスはip) がRADIUS認証により管理ユーザーへ移行した。 |
'administrator' succeeded for SSH via RADIUS: ip | SSH接続で、無名ユーザー (IPアドレスはip) がRADIUS認証により管理ユーザーへ移行した。 |
'administrator' succeeded for SSH via RADIUS: ip name | SSH接続で、ユーザーname (IPアドレスはip) がRADIUS認証により管理ユーザーへ移行した。 |
Login succeeded for HTTP via RADIUS: ip name as administrator | HTTP接続で、ユーザーname (IPアドレスはip) がRADIUS認証により管理権限でログインした。 |
[SFTPD] Login succeeded via RADIUS: ip name as administrator | SFTP接続で、ユーザーname (IPアドレスはip) がRADIUS認証により管理権限でログインした。 |