RADIUS 認証
Junos OS Evolved は、ネットワークデバイス上のユーザーを一元的に認証するためのRADIUSをサポートしています。デバイス上で RADIUS 認証を使用するには、ネットワーク管理者が、ネットワーク上の 1 台以上の RADIUS サーバーの情報を構成する必要があります。また、デバイス上でRADIUSアカウンティングを構成して、LANにログインまたはログアウトするユーザーの統計データを収集して、RADIUSアカウンティングサーバーにデータを送信することもできます。
RADIUS サーバー認証を構成する
RADIUS 認証は、ネットワーク デバイスへのアクセスを試みるユーザーを認証する方法です。以下のセクションでは、RADIUS を使用する理由とその構成方法について説明します。
RADIUS を使用する理由
ネットワーク管理者は、RADIUS や TACACS+ など、ネットワーク デバイス上のユーザーの一元的認証に異なるプロトコルを使用できます。RADIUS はマルチベンダー IETF 標準であり、TACACS+ や他の独自システムよりもその機能が広く受け入れられているため、当社は RADIUS を推奨しています。また、当社はセキュリティ強化のためにワンタイムパスワード システムの利用を推奨していますが、これらのシステムのベンダーすべてが RADIUS をサポートしています。
相互運用性とパフォーマンスが優先事項である場合は、RADIUS を使用してください。
-
相互運用性 - RADIUS は TACACS+ よりも高い相互運用性を備えていますが、これは主に TACACS+ が独自仕様であるためです。TACACS+ はより多くのプロトコルをサポートしていますが、RADIUS は普遍的にサポートされています。
-
パフォーマンス - RADIUS は、ルーターやスイッチの負荷を大幅に軽減します。このため、ネットワーク エンジニアは一般的に TACACS+ よりも RADIUS を好みます。
RADIUSサーバーの詳細を設定する
デバイスで RADIUS 認証を使用するには、各 RADIUS サーバーの [edit system]
階層レベルに 1 つの radius-server
ステートメントを記述し、ネットワーク上の 1 つ以上の RADIUS サーバーの情報を構成します。デバイスは、構成された順番で RADIUS サーバーに対してクエリーを実行します。プライマリサーバー(最初に設定されたサーバー)が利用できない場合、デバイスは応答を受け取るまでリスト内の各サーバーへのコンタクトを試みます。
ネットワーク デバイスにより、RADIUS 認証されたユーザーをローカルで定義されたユーザー アカウントまたはユーザー テンプレート アカウントにマッピングでき、これにより認証が決定されます。デフォルトでは、次の場合、 Junos OS Evolved はRADIUS 認証されたユーザーをユーザー テンプレート アカウント remote
割り当てます(構成されている場合)。
-
認証されたユーザーの場合、ローカルデバイスにユーザーアカウントは設定されていません。
-
RADIUS サーバーは、ローカル ユーザー テンプレートにユーザーを割り当てません。また、サーバーが割り当てるテンプレートは、ローカル デバイスでは構成されません。
RADIUS サーバーは、認証済みユーザーを別のユーザー テンプレートに割り当てて、そのユーザーに異なる管理権限を付与できます。ユーザーはCLIに同じログイン名を持つことになりますが、割り当てられたテンプレートからログインクラス、アクセス権限、有効なユーザーIDを継承します。RADIUS 認証されたユーザーがローカルで定義されたユーザー アカウントまたはユーザー テンプレートにマッピングされておらず、 remote
テンプレートが設定されていない場合、認証は失敗します。
remote
ユーザー名はJunos OS Evolvedの特別なケースで、常に小文字でなければなりません。これは、リモートサーバーによって認証されていますが、デバイスにローカルで設定されたユーザーアカウントを持っていないユーザーのテンプレートとして機能します。Junos OS Evolvedは、ローカルで定義されたアカウントがない認証済みユーザーに、remote
テンプレートの権限を適用します。remote
テンプレートにマッピングされたすべてのユーザーは、同じログインクラスにいます。
リモート認証は複数のデバイスで構成するため、通常は構成グループ内部で構成します。ここで示す手順は、 global
という設定グループにあります。設定グループを使用するのはオプションです。
RADIUS サーバーによる認証を構成するには:
管理インスタンスを使用するために RADIUS を構成する
デフォルトでは、 Junos OS Evolved は、デフォルトのルーティングインスタンスを介して、RADIUSの認証、許可、アカウンティングパケットをルーティングします。また、デフォルト以外の VRF インスタンスの管理インターフェイス経由で RADIUS パケットをルーティングすることもできます。
mgmt_junos
管理インスタンスを介してRADIUSパケットをルーティングするには:
-
mgmt_junos
管理インスタンスを有効にします。[edit system] user@host# set management-instance
-
RADIUS 認証サーバーと RADIUS アカウンティング サーバーが構成されている場合は、その
routing-instance mgmt_junos
ステートメントを構成します。[edit system] user@host# set radius-server server-address routing-instance mgmt_junos user@host# set accounting destination radius server server-address routing-instance mgmt_junos
例:システム認証用の RADIUS サーバーの設定
この例では、RADIUS サーバーを介したシステム認証を設定します。
必要条件
始める前に:
-
デバイスの初期設定を行います。お使いのデバイスの『スタートアップガイド』をご覧ください。
-
ネットワーク上に少なくとも 1 つの RADIUS サーバーを設定します。
概要
この例では、IP アドレスが 172.16.98.1 である新しい RADIUS サーバーを追加しています。RADIUS サーバーの共有秘密パスワードを Radiussecret1 として指定します。デバイスはこの秘密を暗号化した値にして設定データベースに保存します。最後に、デバイスが RADIUS サーバーの要求で使用する送信元アドレスを指定します。ほとんどの場合、デバイスのループバックアドレス(この例では10.0.0.1)を使用することができます。
ネットワークデバイスでは、ローカルパスワード認証、RADIUS、TACACS+ など、複数のユーザー認証方法のサポートを設定できます。複数の認証方法を設定する場合、デバイスが異なる方法を試す順序に優先順位を付けることができます。この例では、まず RADIUS 認証サービスを使用し、それが失敗した場合はローカルパスワード認証を試みるようにデバイスを設定します。
RADIUS で認証されたユーザーは、ネットワークデバイス上のローカルユーザーアカウントまたはローカルユーザーテンプレートアカウントにマッピングする必要があり、これにより認可が決定されます。デフォルトでは、RADIUS 認証されたユーザーがローカルユーザーアカウントまたは特定のユーザーテンプレートにマッピングされない場合、設定されていれば、ユーザーは remote
ユーザーテンプレートに割り当てられます。この例では、 remote
ユーザー テンプレートを設定します。
構成
プロシージャ
CLIクイック構成
この例を迅速に設定するには、以下のコマンドをコピーして、テキスト ファイルに貼り付け、改行を削除し、ネットワーク設定に一致させる必要がある詳細情報を変更し、コマンドを [edit]
階層レベルで CLI にコピー アンド ペーストして、設定モードから commit
を入力します。
set system radius-server 172.16.98.1 set system radius-server 172.16.98.1 secret Radiussecret1 set system radius-server 172.16.98.1 source-address 10.0.0.1 set system authentication-order [radius password] set system login user remote class operator
手順
システム認証用に RADIUS サーバーを設定するには:
-
RADIUS サーバーを新規に追加し、その IP アドレスを設定します。
[edit system] user@host# set radius-server 172.16.98.1
-
RADIUS サーバーの共有シークレット(パスワード)を指定します。
[edit system] user@host# set radius-server 172.16.98.1 secret Radiussecret1
-
送信元アドレスとして、デバイスのループバックアドレスを指定します。
[edit system] user@host# set radius-server 172.16.98.1 source-address 10.0.0.1
-
デバイスの認証順序を指定し、
radius
オプションを含めます。[edit system] user@host# set authentication-order [radius password]
remote
ユーザーテンプレートとそのログインクラスを設定します。[edit system] user@host# set login user remote class operator
業績
設定モードで、 show system
コマンドを入力して設定を確認します。出力結果に意図した設定内容が表示されない場合は、この例の設定手順を繰り返して設定を修正します。
以下の出力には、この例に関連する設定階層の部分のみが含まれています。
[edit] user@host# show system login { user remote { class operator; } } authentication-order [ radius password ]; radius-server { 172.16.98.1 { secret "$9$ABC123"; ## SECRET-DATA source-address 10.0.0.1; } }
デバイスの設定後、コンフィギュレーションモードで commit
を入力します。
ジュニパーネットワークスのベンダー固有RADIUS 属性
Junos OS Evolvedは、RADIUSサーバー上のジュニパーネットワークスのVSA(RADIUSベンダー固有属性)の設定に対応します。このVSAは、RADIUSベンダー固有属性にカプセル化されており、ベンダーIDがジュニパーネットワークスのID番号2636に設定されています。
表1 は、設定可能なジュニパーネットワークスVSAの一覧です。
一部の属性では、POSIX 1003.2 で定義された拡張正規表現を利用できます。正規表現にスペース、オペレーターまたはワイルドカード文字が含まれる場合は引用符で囲みます。詳細については、次を参照してください。
名前 |
形容 |
種類 |
長さ |
糸 |
---|---|---|---|---|
Juniper-Local-User-Name |
デバイスにユーザーがログインする際にこのユーザーに割り当てられるユーザーテンプレート名を示します。この属性は、Access-Acceptパケットのみで使用されます。 |
1 |
≥3 |
印刷可能なASCII文字を含む、1つまたは複数のオクテット。 |
ジュニパーの許可コマンド |
ユーザーのログインクラスのパーミッションビットで承認されたコマンドに加え、ユーザーがコマンドを実行できるようにする拡張正規表現を含みます。この属性は、Access-Acceptパケットのみで使用されます。 |
2 |
≥3 |
拡張正規表現の形式で印刷可能なASCII文字を含む、1つまたは複数のオクテット。 |
Juniper-Deny-Tコマンド |
ユーザーのログインクラスのパーミッションビットで承認されたコマンドを実行するユーザーパーミッションを拒否する拡張正規表現を含みます。この属性は、Access-Acceptパケットのみで使用されます。 |
3 |
≥3 |
拡張正規表現の形式で印刷可能なASCII文字を含む、1つまたは複数のオクテット。 |
Juniper-Allow-Configuration |
ユーザーのログインクラスのパーミッションビットで承認されたステートメントに加えて、ユーザーによる設定ステートメントの表示および変更を可能にする拡張正規表現を含みます。この属性は、Access-Acceptパケットのみで使用されます。 |
4 |
≥3 |
拡張正規表現の形式で印刷可能なASCII文字を含む、1つまたは複数のオクテット。 |
Juniper-Deny-configuration |
ユーザーのログインクラスのパーミッションビットで承認された設定ステートメントを表示または変更するユーザーパーミッションを拒否する拡張正規表現を含みます。この属性は、Access-Acceptパケットのみで使用されます。 |
5 |
≥3 |
拡張正規表現の形式で印刷可能なASCII文字を含む、1つまたは複数のオクテット。 |
Juniper-Interactive-Command |
ユーザーが入力した対話型コマンドを示します。この属性は、Accounting-Requestパケットのみで使用されます。 |
8 |
≥3 |
印刷可能なASCII文字を含む、1つまたは複数のオクテット。 |
ジュニパーの構成変更 |
設定(データベース)の変更につながる対話型コマンドを示しています。この属性は、Accounting-Requestパケットのみで使用されます。 |
9 |
≥3 |
印刷可能なASCII文字を含む、1つまたは複数のオクテット。 |
ジュニパーのユーザー権限 |
ユーザーパーミッションを指定するのにサーバーが使用する情報を含みます。この属性は、Access-Acceptパケットのみで使用されます。
手記:
RADIUSサーバーが |
10 |
≥3 |
印刷可能なASCII文字を含む、1つまたは複数のオクテット。 文字列は、スペースで区切られたパーミッションフラグのリストです。全体で、各フラグの名前を正確に指定する必要があります。 「アクセス権限レベルの概要」を参照してください。 |
ジュニパー認証タイプ |
ユーザーの認証に使用される認証方法(ローカルデータベースまたはRADIUSサーバー)を示します。ローカルデータベースを使用してユーザーが認証される場合、属性の値には「local」が表示されます。RADIUSまたはLDAPサーバーを使用してユーザーを認証する場合、属性の値には「remote」が表示されます。 |
11 |
≥5 |
印刷可能なASCII文字を含む、1つまたは複数のオクテット。 |
ジュニパーセッションポート |
確立されたセッションの送信元ポート番号を示します。 |
12 |
整数のサイズ |
整数 |
Juniper-Allow-Configuration-Regexps |
ユーザーのログインクラスのパーミッションビットで承認されたステートメントに加えて、ユーザーによる設定ステートメントの表示および変更を可能にする拡張正規表現を含みます。この属性は、Access-Acceptパケットのみで使用されます。 |
13 |
≥3 |
拡張正規表現の形式で印刷可能なASCII文字を含む、1つまたは複数のオクテット。 |
Juniper-Deny-Configuration-Regexps |
ユーザーのログインクラスのパーミッションビットで承認された設定ステートメントを表示または変更するユーザーパーミッションを拒否する拡張正規表現を含みます。この属性は、Access-Acceptパケットのみで使用されます。 |
14 |
≥3 |
拡張正規表現の形式で印刷可能なASCII文字を含む、1つまたは複数のオクテット。 |
VSAの詳細については、RFC 2138、 RADIUS(リモート認証ダイヤルインユーザーサービス)をご覧ください。
RADIUSまたはTACACS+サーバーで正規表現を使用して、コマンドを許可または拒否する
Junos OS Evolved では、RADIUS-およびTACACS+認証ユーザーを、ローカルで定義したユーザーアカウントまたはユーザーテンプレートアカウントにマッピングできます。これは、ユーザーのアクセス権限を定義します。また、ジュニパーネットワークスのRADIUSおよびTACACS+ベンダー固有属性(VSA)をそれぞれの認証サーバーで定義することで、ユーザーのアクセス権限を構成することもできます。
ユーザーのログインクラスは、ユーザーが許可されている操作モードおよび構成モードコマンドと、ユーザーが構成のどのエリアを表示および変更できるかを決定するパーミッションのセットを定義します。また、ログインクラスは、パーミッションフラグの許可に加えて、ユーザー特定のコマンドを実行したり、構成の特定エリアを表示および変更する機能をユーザーに許可または拒否する正規表現を定義することもできます。ログインクラスは、以下のステートメントを含めることで、ユーザー許可を定義します。
-
permissions
-
allow-commands
-
allow-commands-regexps
-
allow-configuration
-
allow-configuration-regexps
-
deny-commands
-
deny-commands-regexps
-
deny-configuration
-
deny-configuration-regexps
同様に、RADIUSまたはTACACS+サーバー構成では、 ジュニパーネットワークスVSAを使用して、ユーザーのアクセス権限を決定する特定のパーミッションまたは正規表現を定義します。対応しているRADIUSおよびTACACS+ VSAのリストについては、以下を参照してください。
RADIUSまたはTACACS+サーバーでユーザーパーミッションを、スペース区切りの値のリストとして定義できます。
-
RADIUSサーバーは、以下の属性と構文を使用します。
Juniper-User-Permissions += "flag1 flag2 flag3",
例えば:
Juniper-User-Permissions += "interface interface-control configure",
-
TACACS+サーバーは、以下の属性と構文を使用します。
user-permissions = "flag1 flag2 flag3"
例えば:
user-permissions = "interface interface-control configure"
RADIUSまたはTACACS+サーバーはまた、単一の拡張正規表現(POSIX 1003.2で定義)を使用するジュニパーネットワークスVSAを定義して、ユーザーに特定のコマンドを実行したり、設定エリアを表示・変更する機能を許可または拒否することもできます。複数のコマンドまたは構成階層を括弧で囲み、パイプ記号を使用して区切ります。正規表現にスペース、オペレーターまたはワイルドカード文字が含まれる場合は引用符で囲みます。ローカルとリモートの両方で認証パラメータを設定する場合、デバイスは、TACACS+RADIUS認証時に受け取った正規表現と、ローカルデバイスで定義された正規表現をマージします。
-
RADIUSサーバーは、以下の属性と構文を使用します。
Juniper-Allow-Commands += "(cmd1)|(cmd2)|(cmdn)", Juniper-Deny-Commands += "(cmd1)|(cmd2)|(cmdn)", Juniper-Allow-Configuration += "(config1)|(config2)|(confign)", Juniper-Deny-Configuration += "(config1)|(config2)|(confign)",
例えば:
Juniper-Allow-Commands += "(test)|(ping)|(quit)", Juniper-Deny-Commands += "(request)|(restart)", Juniper-Allow-Configuration += "(groups re0)|(system radius-server)", Juniper-Deny-Configuration += "(system radius-options)|(system accounting)",
-
TACACS+ サーバーは、以下の属性と構文を使用します。
allow-commands = "(cmd1)|(cmd2)|(cmdn)" deny-commands = "(cmd1)|(cmd2)|(cmdn)" allow-configuration = "(config1)|(config2)|(confign)" deny-configuration = "(config1)|(config2)|(confign)"
例えば:
allow-commands = "(test)|(ping)|(quit)" deny-commands = "(request)|(restart)" allow-configuration = "(groups re0)|(system tacplus-server)" deny-configuration = "(system tacplus-options)|(system accounting)"
RADIUSおよびTACACS+サーバーは、ローカルデバイスで構成できる同じ *-regexps
ステートメントに対応する属性の設定もサポートしています。 *-regexps
TACACS+属性と *-Regexps
RADIUS属性は、以前の属性と同じ正規表現構文を使用しますが、変数で正規表現を構成することができます。
-
RADIUSサーバーは、以下の属性と構文を使用します。
Juniper-Allow-Configuration-Regexps += "(config1)|(config2)|(confign)", Juniper-Deny-Configuration-Regexps += "(config1)|(config2)|(confign)",
-
TACACS+ サーバーは、以下の属性と構文を使用します。
allow-commands-regexps = "(cmd1)|(cmd2)|(cmdn)" deny-commands-regexps = "(cmd1)|(cmd2)|(cmdn)" allow-configuration-regexps = "(config1)|(config2)|(confign)" deny-configuration-regexps = "(config1)|(config2)|(confign)"
例えば、TACACS+サーバー構成は、以下の属性を定義する場合があります。
allow-commands-regexps = "(show cli .*)|(ping 10.1.1..*)" deny-commands-regexps = "(configure .*)|(edit)|(commit)|(rollback .*)"
RADIUSまたはTACACS+サーバーでは、個々の表現を別の行で指定する簡略化された構文で属性を定義できます。
RADIUSサーバーでは、以下の構文を使用して個別の正規表現を指定します。
Juniper-User-Permissions += "permission-flag1", Juniper-User-Permissions += "permission-flag2", Juniper-User-Permissions += "permission-flagn", Juniper-Allow-Commands += "cmd1", Juniper-Allow-Commands += "cmd2", Juniper-Allow-Commands += "cmdn", Juniper-Deny-Commands += "cmd1", Juniper-Deny-Commands += "cmd2", Juniper-Deny-Commands += "cmdn", Juniper-Allow-Configuration += "config1", Juniper-Allow-Configuration += "config2", Juniper-Allow-Configuration += "confign", Juniper-Deny-Configuration += "config1", Juniper-Deny-Configuration += "config2", Juniper-Deny-Configuration += "confign",
TACACS+ サーバーでは、以下の構文を使用して個別の正規表現を指定します。
user-permissions1 = "permission-flag1" user-permissions2 = "permission-flag2" user-permissionsn = "permission-flagn" allow-commands1 = "cmd1" allow-commands2 = "cmd2" allow-commandsn = "cmdn" deny-commands1 = "cmd1" deny-commands2 = "cmd2" deny-commandsn = "cmdn" allow-configuration1 = "config1" allow-configuration2 = "config2" allow-configurationn = "confign" deny-configuration1 = "config1" deny-configuration2 = "config2" deny-configurationn = "confign"
-
TACACS+ サーバー構文では、数値 1 から n は一意である必要がありますが、連続している必要はありません。例えば、以下の構文が有効です。
allow-commands1="cmd1" allow-commands3="cmd3" allow-commands2="cmd2" deny-commands3="cmd3" deny-commands2="cmd2" deny-commands1="cmd1"
-
RADIUSまたはTACACS+サーバーは、個別の正規表現ラインの数に制限を付けます。
-
show cli authorization
コマンドを発行すると、コマンドの出力では、個別の行で個別表現を指定した場合でも、正規表現が 1 行で表示されます。
ユーザーは、 show cli authorization
operational mode コマンドを発行することで、クラス、パーミッション、コマンドおよび構成認証を確認できます。
user@host> show cli authorization
認証パラメーターをネットワークデバイス上でローカルに設定し、RADIUSまたはTACACS+サーバー上でもリモートで設定すると、デバイスは、TACACS+RADIUS認証時に受け取った正規表現とローカルで構成された正規表現をマージします。最終表現に構文エラーが含まれる場合、全体的な結果は無効な正規表現となります。
RADIUSアカウンティングについて
ネットワークデバイスは、IETF RFC2866 、 RADIUSアカウンティングをサポートします。デバイスにRADIUSアカウンティングを設定し、LANにログインまたはログアウトするユーザーの統計データを収集して、RADIUSアカウンティングサーバーにデータを送信することができます。統計データは、一般的なネットワーク監視、使用パターンの分析および追跡、またはセッションの期間やアクセスしたサービスの種類に基づくユーザーへの課金に使用することができます。
RADIUSアカウンティングを設定するには、以下を指定します。
-
デバイスから統計データを受信するための1つ以上のRADIUSアカウンティングサーバー
-
収集するアカウンティング・データのタイプ
RADIUSアカウンティングと認証の両方に同じサーバーを使用することも、別なサーバーを使用することも可能です。RADIUSアカウンティングサーバーのリストを指定できます。デバイスは、設定された順序でサーバーにを検索をします。プライマリサーバー(最初に設定されたサーバー)が利用できない場合、デバイスは応答を受け取るまでリスト内の各サーバーへのコンタクトを試みます。
デバイスとRADIUSサーバー間のRADIUSアカウンティングのプロセスは、次のように機能します。
-
RADIUSアカウンティングサーバーは、特定のポートでユーザーデータグラムプロトコル(UDP)パケットをリッスンします。RADIUSアカウンティングのデフォルトポート番号は1813です。
-
デバイスは、イベントレコードを含む Accounting-Request パケットをアカウンティングサーバーに転送します。このサプリカントに関連するイベントレコードは、その値がこのサプリカントのユーザーサービスの開始を示す Acct-Status-Type 属性を含みます。サプリカントのセッションが終了すると、アカウンティング要求は、ユーザーサービスの終了を示す Acct-Status-Type 属性値を含みます。RADIUSアカウンティングサーバーは、セッション情報とセッションの長さを含むstop-accountingレコードとしてこれを記録します。
-
RADIUSアカウンティングサーバーは、これらのイベントをstart-accountingまたはstop-accountingレコードとしてファイルに記録します。FreeRADIUSでは、ファイル名は192.0.2.0のようなサーバーのアドレスです。
-
アカウンティングサーバーは、アカウンティング要求を受信したことを確認する Accounting-Response パケットをデバイスに送信します。
-
デバイスがサーバーからのAccounting-Responseパケットを受信できない場合、デバイスはサーバーが応答を返すまでアカウンティング要求を送信し続けます。
このプロセスで収集された統計情報は、RADIUSサーバーで確認できます。統計データを確認するには、それらを受信するように設定されたログファイルにアクセスします。
RADIUSシステムアカウンティングの設定
RADIUSアカウンティングを有効にすると、RADIUSクライアントとして動作するJuniper Networksデバイスは、ソフトウェアログイン、設定変更、対話型コマンドなどのユーザーアクティビティについてRADIUSサーバーに通知することができます。RADIUSアカウンティングの枠組みは、RFC2866、 RADIUS アカウンティング」 に記載されています。
RADIUSサーバー上のユーザーイベントの監査を設定する
RADIUSアカウンティングを設定するには:
次の例では、RADIUSアカウンティング用に3つのサーバー(10.5.5.5、10.6.6.6、10.7.7.7)を構成しています。
system { accounting { events [ login change-log interactive-commands ]; destination { radius { server { 10.5.5.5 { accounting-port 3333; secret $ABC123; source-address 10.1.1.1; retry 3; timeout 3; } 10.6.6.6 secret $ABC123; 10.7.7.7 secret $ABC123; } } } } }