Cisco ACI 5.x 系で RADIUS 認証の設定をする
Cisco ACI で外部認証を利用する方法、及び関連サーバの構築方法に関して以下のエントリーを記載しました。
- CentOS7 に FreeRadius をインストールする
- Cisco ACI へのログイン時に RADIUS 認証出来るようにする
- Cisco ACI へのログイン時に Active Directory 認証出来るようにする
現在は ACI も 5.x 系までバージョンアップしており、以前に書いたエントリー時点から設定方法も少しだけ変わっています。 今回は改めて 5.x 系での RADIUS 認証設定方法をメモしておきます。
試験環境¶
RADIUS サーバには CentOS7 上の FreeRADIUS を使いました。 インストール手順は CentOS7 に FreeRadius をインストールする に記載してある通りです。 但し、後述しますが /etc/raddb/users に Cisco-avpair を追加設定する必要があります。 検証環境では具体的に以下のバージョンを用いました。
- Cisco ACI 5.1(1h)
- CentOS8
- freeradius-3.0.17-7
CentOS8 に FreeRADIUS をインストールする¶
CentOS8 に FreeRADIUS をインストールします。 現時点では 3.0.17 がインストールされるようです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
|
インストールします。
1 |
|
RADIUS 認証を許可する範囲を設定ファイルである /etc/raddb/clients.conf
追加します。 下記では 10.0.0.0/8 から SECRET
という Radius Secret 文字列での認証要求を受け付けるよう、設定しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
今回は以下のユーザを定義します。
Login ID | Password | Security Domain | Role | UNIX User ID |
---|---|---|---|---|
user1 | password1 | all | admin | 16001 |
user2 | password2 | all | read-all | 16002 |
具体的にはユーザの定義を設定ファイルである /etc/raddb/users
に追記します。
1 2 3 4 5 6 |
|
FreeRADIUS の設定が完了したのでサービスを開始します。
1 2 |
|
サービスが起動したことを確認しておきます。
1 |
|
FreeRADIUS が意図した通りに設定していることを確認するには freeradius-utils
のインストールされた別の Linux から radtest
でテストを行います。 以下のように Received Access-Accept
を受信すれば意図した通りに設定されています。 意図しないレスポンスがあった場合や、応答が無く、タイムアウトしてしまう場合は FreeRADIUS の設定を見直します。
1 2 3 4 5 6 7 8 9 10 |
|
APIC への Web UI によるログイン画面¶
Admin
→ AAA
→ Authentication
→ AAA
→ Policy
→ Login Domains
はデフォルトだと fallback
という設定がひとつだけ、存在します。 この fallback
という設定は削除出来ません。
ACI での RADIUS 設定に関する用語¶
ACI での RADIUS 設定時に登場する用語について整理しておきます。
- Radius Provider
- RADIUS サーバのこと
- Login Domain
- 認証に利用出来るドメインのこと。 デフォルト状態では
fallback
という LOCAL ドメインだけ存在している為、LOCAL 認証が行われる。 RADIUS などの外部認証を行う場合は Login Domain を追加する
- 認証に利用出来るドメインのこと。 デフォルト状態では
- Default Authentication
- ログイン画面で Domain を指定しない場合に用いられる認証ドメインのこと
Cisco ACI に RADIUS 認証の設定を行う¶
ここからは ACI に RADIUS 認証の設定を行っていきます。
Step.1¶
Admin
→ AAA
→ Authentication
→ AAA
→ Policy
の設定画面は初期状態でこのようになっていました。
Step.2¶
Admin
→ Authentication
→ RADIUS
→ Create RADIUS Provider
をクリックします。
Step.3¶
RADIUS サーバの定義を行います。
RADIUS サーバが定義されました。
Step.4¶
Admin
→ AAA
→ Authentication
→ AAA
→ Policy
→ Login Domains
にある +
マークをクリックします。
Step.5¶
RADIUS 用の Login Domain を追加します。 Realm
は RADIUS
を選択します。 Provider
から +
をクリックして次へ進みます。
Step.6¶
先の手順で定義した RADIUS サーバを追加します。 追加が完了したら Submit
をクリックします。
Step.7¶
Admin
→ AAA
→ Authentication
→ AAA
→ Policy
から Default Authentication
を RADIUS
に変更し、先程設定した RADIUS 用の Login Domain を設定します。
これで RADIUS 認証の設定は完了です。
Fallback 動作について¶
「レガシー機器と同じ動作をするはず」と思い込んでいると「実は ACI だと異なる動作をする」という場合があります。 そのひとつに「外部認証利用時の Fallback 動作」が挙げられます。 具体的には「外部認証サーバがダウンしている場合の動作」がレガシー機器と ACI では異なります。
対象 | 外部認証サーバがダウン時の動作 |
---|---|
レガシー機器 | 次の認証方式へ 移行する |
ACI | 次の認証方式へ 移行しない |
Fallback 時の動作は Admin
→ AAA
→ Authentication
→ AAA
→ Policy
→ Fallback Domain Availability
から設定可能です。 ACI バージョン 4 と異なり、バージョン 5 からは下記のように Always Available
または Available only in no providers are reachable via ICMP
を選択出来ます。
これらは以下のように動作します。
設定項目 | 外部サーバアップ時の動作 | 外部サーバダウン時の動作 |
---|---|---|
Always Available |
fallback Domain で認証可能 | fallback Domain で認証可能 |
Available only in no providers are reachable via ICMP |
fallback Domain で認証不可 | fallback Domain で認証可能 |
fallback Domain で認証させる場合、以下のように Username
には apic:fallback\\admin
のように指定します。
( 実際にこういったケースが発生するのか?は分かりませんが…) 例えば Login Domain として「fallback」と「RADIUS」のふたつだけが設定されているとします。 Fallback Domain Availability
が Available only in no providers are reachable via ICMP
だとすると RADIUS ユーザのパスワードが不明な場合、fallback 認証を利用出来なくなってしまう為、ログイン出来ません。 こういったケースに対応するには下記いずれかを設定しておけば回避可能と思われます。
Always Available
を設定しておく (この設定であれば外部サーバの死活に関わらず、apic:fallback\\admin
でログイン可能)Login Domains
に LOCAL 認証を追加しておく