RADIUSを使用したログインユーザーの管理

$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サーバー

以下のRADIUSサーバーで動作確認を行っています。


詳細

事前に設定が必要なコマンド

当機能を使用するには、事前に以下のコマンドを設定する必要があります。なお、各コマンドの詳細についてはコマンドリファレンスを参照してください。

radius auth on
RADIUS認証を使用する設定にします。
radius auth server SERVER
RADIUS認証サーバーを設定します。
radius auth port PORT
RADIUS認証サーバーのUDPポート番号を設定します。
radius secret SECRET
RADIUSシークレットを設定します。

以降の説明では、上記のコマンドがいずれも正しく設定されているものとします。

認証動作

コンソール

コンソールへログインする際の接続方法としてはシリアル、TELNET、SSH、リモートセットアップがあります。

ログイン時の認証動作は以下の通りです。

ログイン時の認証動作

シリアル、TELNET、リモートセットアップによる接続で、最初にパスワード入力のプロンプト (Password:) が表示された時は、何も入力せずにEnterキーを押下してください。login userコマンドが設定されている場合、もしくはlogin radius useコマンドがonに設定されている場合は、続けてユーザー名入力のプロンプト (Username:) が表示されます。

administratorコマンドで管理ユーザーへ移行する際の認証動作は以下の通りです。

管理ユーザーへ移行する際の認証動作

RADIUSサーバーへの問い合わせを行なう際のユーザー名は*administratorとなります。この名前を変更することはできません。

ローカル認証でログインしたユーザーがRADIUS認証で管理ユーザーへ移行する、またはRADIUS認証でログインしたユーザーがローカル認証で管理ユーザーへ移行することも可能です。

SFTP/HTTP

ログイン時の認証動作において、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

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

通信手順は以下の通りです。

通信手順

  1. ルーターは、RADIUSサーバーにAccess-Requestを送信します。ユーザー名は*administrator、パスワードはdefです。
  2. パスワードが一致しないため、RADIUSサーバーはルーターにAccess-Rejectを送信します。
  3. 認証に失敗したため、ルーターはパスワードを変更してRADIUSサーバーにAccess-Requestを送信します。ユーザー名は*administrator、パスワードはabc/defです。
  4. パスワードが一致したため、RADIUSサーバーはルーターにAccess-Acceptを送信します。

上記の通り、パスワードにスラッシュ ('/') が含まれていると、ユーザーが正しいパスワードを入力しても、RADIUS認証の処理で認証エラーが必ず発生します。このため、例えばRADIUSサーバーで認証エラーの回数を記録している場合などは、パスワードにスラッシュ ('/') を使用しないでください。

RADIUSの属性について

ルーターからRADIUSサーバーへ送信する属性

Access-Requestには以下の属性が含まれます。

パスワードの認証方式はPAPです。

ルーターがRADIUSサーバーに送信するユーザー名、パスワードには以下の制限があります。

名称 文字列の長さ 使用可能な文字の種類
ユーザー名 1文字以上32文字以下 半角英数字、ハイフン (-)、アンダーバー (_)
パスワード 0文字以上32文字以下 半角英数字および記号 (7bit ASCII Codeで表示可能なもの)

管理パスワードを認証する際、User-Name属性の値は*administratorとなります。

RADIUSサーバーからルーターへ送信する属性

コンソール/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用の辞書ファイルを以下からダウンロードできます。使用方法については設定例を参照してください。

dictionary.yamaha

Access-Acceptにルーターで使用しない属性が含まれている場合、その属性は無視されます。

ユーザー属性の設定

RADIUS認証でログインするユーザーの属性を設定するには、user attributeコマンドのユーザー名に*radiusを指定します。なお、これはRADIUS認証でログインするすべてのユーザーに適用される設定で、ユーザーごとに個別の設定を行なうことはできません。

HTTP/SFTP接続での認証時、Service-Type属性の値がAdministrativeであっても、user attributeコマンドのadministrator属性の値がoffに設定されている場合は認証エラーになります。

ルーターにログインしているユーザーはshow status userコマンドで確認することができます。RADIUS認証でログインしたユーザーは、ユーザー名の前にアットマーク (@) が表示されます。


コマンド

ログイン時のパスワード認証にRADIUSを使用するか否かの設定

[書式]
login radius use USE
no login radius use
[設定値及び初期値]
[説明]
ログイン時のパスワード認証にRADIUSを使用するか否かを設定する。
[ノート]
RADIUS認証サーバーに関する以下のコマンドが正しく設定されている必要がある。

管理ユーザーへの移行時のパスワード認証にRADIUSを使用するか否かの設定

[書式]
administrator radius auth USE
no administrator radius auth
[設定値及び初期値]
[説明]
administratorコマンドで管理ユーザーへ移行する際のパスワード認証にRADIUSを使用するか否かを設定する。
onの場合、最初にadministrator passwordコマンドで設定された管理パスワードとの比較を行い、一致しなかった場合にRADIUSサーバーへの問い合わせを行なう。onlyの場合、RADIUSサーバーへの問い合わせのみを行なう。
[ノート]
RADIUS認証サーバーに関する以下のコマンドが正しく設定されている必要がある。

ユーザーの属性を設定 (仕様拡張)

[書式]
user attribute [USER] ATTRIBUTE=VALUE [ATTRIBUTE=VALUE...]
no user attribute [USER]
[設定値及び初期値]
[説明]
ユーザーの属性を設定する。
USERを省略した場合は、無名ユーザーの属性を設定する。
USERに*radiusを指定した場合は、RADIUS認証でログインするすべてのユーザーの属性を設定する。
USERにアスタリスク (*) を指定した場合は、すべてのユーザーに対して設定を有効にする。ただし、ユーザー名を指定した設定がされている場合は、その設定が優先される。
すでに管理ユーザーに昇格しているユーザーに対して、このコマンドでadministrator属性をoffに変更しても、そのユーザーはexitコマンドにより一般ユーザーに降格するか、あるいはログアウトするまでは管理ユーザーで居続けることができる。
connection属性では、off、all以外の値はコンマ (,) でつないで複数指定することができる。
すでに接続しているユーザーに対して、このコマンドでconnection属性またはhost属性により接続を禁止しても、そのユーザーは切断するまでは接続を維持し続けることができる。
host属性では、TELNET、SSH、SFTP及びHTTPで接続できるホストを設定する。指定できるIPアドレスは、1個のIPアドレスまたは間にハイフン (-) をはさんだIPアドレス (範囲指定)、およびこれらをコンマ (,) でつないだものである。
multi-session属性では、TELNET、SSH、HTTPでの複数接続の可否を設定する。この属性をoffに変更しても、シリアルとTELNETやリモートセットアップとSSHなど、接続方法が異なる場合は同じユーザー名で接続することができる。
すでに複数の接続があるユーザーに対して、このコマンドでmulti-session属性をoffに変更しても、そのユーザーは切断するまでは接続を維持し続けることができる。
無名ユーザーに対してはSSH、SFTPによる接続を許可することができない。
無名ユーザーに対してはTELNETでの複数接続はできない。
TELNET、SSH、SFTP、HTTPで接続した場合、login-timer属性の値がclearに設定されていても、タイマ値は300秒として扱う。
login timerコマンドの設定値よりも、本コマンドのlogin-timer属性の設定値が優先される。
[ノート]
RTX3510、RTX1300では無名ユーザーは登録できないため、USERは省略することはできない。
RTX3510、RTX1300は、administrator属性が2のユーザーを1つ以上設定する必要がある。
GUIの管理者ページへ接続するとき、RTX1300はユーザーパスワードを用い、他の機種は管理者パスワードを用いて接続する。
本コマンドにより、すべてのユーザーの接続を禁止する、またはすべてのユーザーが管理ユーザーに昇格できないといった設定を行った場合、ルーターの設定変更や状態確認などができなくなるので注意する必要がある。

ログインしているユーザー情報の表示 (仕様拡張)

[書式]
show status user
[説明]
ルーターにログインしているユーザーの情報を表示する。以下の項目が表示される。
また、ユーザーの状態に応じてユーザー名の前に以下の記号が表示される。
記号 状態
アスタリスク (*) 自分自身のユーザー情報
プラス (+) 管理者モードになっている
アットマーク (@) 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を使用します。

ネットワーク構成について

紹介する設定例において、ネットワーク構成は次の通りです。

ネットワーク構成

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の値は任意です。

Vendor-Specific属性の登録

カスタムGUIでVendor-Specific属性を使用するために、辞書ファイルを設定します。dictionary.yamahaをダウンロードし、/usr/share/freeradius以下に保存してください。次に、/usr/share/freeradius/dictionaryに以下を追加してください。

$INCLUDE dictionary.yamaha

設定例1

以下の通り、ルーターにコンソールからログインするユーザーを登録します。

ユーザー名 パスワード 登録先
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

各コマンドの意味は以下の通りです。

login user user-local ul
user-localという名前のユーザーを登録します。パスワードはulです。
login radius use on
ログイン時のパスワード認証にRADIUSを使用します。
administrator radius auth only
管理ユーザーへの移行する際のパスワード認証にRADIUSのみを使用します。
ip lan1 address 192.168.100.1/24
LAN1のIPアドレスを192.168.100.1/24に設定します。RADIUSサーバーの/etc/clients.confに記述するクライアントのIPアドレスと一致させる必要があります。
radius auth on
RADIUSによる認証を使用します。
radius auth server 192.168.100.10
RADIUS認証サーバーのIPアドレスは192.168.100.10です。
radius auth port 1812
RADIUS認証サーバーのポート番号は1812 (UDP) です。
radius secret yamaha
RADIUSシークレットをyamahaに設定します。RADIUSサーバーの/etc/clients.confに記述するRADIUSシークレットと一致させる必要があります。

RADIUSサーバーの設定

/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"

設定例2

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

各コマンドの意味は以下の通りです。

user attribute *radius connection=http
RADIUS認証でログインするユーザーはHTTPでのみルーターにアクセスすることができます。
login radius use on
ログイン時のパスワード認証にRADIUSを使用します。
ip lan1 address 192.168.100.1/24
LAN1のIPアドレスを192.168.100.1/24に設定します。RADIUSサーバーの/etc/clients.confに記述するクライアントのIPアドレスと一致させる必要があります。
radius auth on
RADIUSによる認証を使用します。
radius auth server 192.168.100.10
RADIUS認証サーバーのIPアドレスは192.168.100.10です。
radius auth port 1812
RADIUS認証サーバーのポート番号は1812 (UDP) です。
radius secret yamaha
RADIUSシークレットをyamahaに設定します。RADIUSサーバーの/etc/clients.confに記述するRADIUSシークレットと一致させる必要があります。
httpd custom-gui use on
カスタムGUIを使用します。

RADIUSサーバーの設定

/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"

SYSLOGメッセージ一覧

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認証により管理権限でログインした。

参考情報