Cisco IOS ルータへの Radius ログイン時、自動的に特権モードにするには
前回、「FreeRADIUS で RADIUS Proxy を設定するには」という記事を書きましたが、今回も Radius 関連の記事です。今回は以下を実装してみます。
- 管理者ユーザでログインすると、ログイン直後から特権モード
- 一般ユーザでログインすると、ログイン直後はユーザモード
環境¶
今回は以下の環境で検証しました。
- Radius クライアント- Cisco IOS Version 15.4(1)T
 
- Radius サーバ- Ubuntu 14.04.2 LTS
- FreeRADIUS 2.1.12+dfsg-1.2ubuntu8
 
Cisco IOS ルータにおける権限レベルのおさらい¶
Cisco IOS ルータは権限の強さ=権限レベルを 0 〜 15 までの数字で表現します。数字が大きい程、強い権限が与えられます。

一般的には以下の権限(「1」と「15」)がよく利用されます。
| 権限レベル | プロンプト表示 | 一般的な名称 | 
|---|---|---|
| 1 | > | ユーザ権限 | 
| 15 | # | 管理者権限 | 
普段よく利用している「enable」や「disable」コマンドは「管理者モードに移行するコマンド」「ユーザモードに移行するコマンド」ですが、どちらも「権限レベルを変更するコマンド」と言えます。但し、各々以下のような違いがあります。
- enable コマンド- 引数で移行したい権限レベルを指定出来る
- 引数を省略した場合は「enable 15」とみなされ、権限レベル 15 へ移行しようとする
- 現在の権限レベルから昇格することも降格することも出来る
 
- disable コマンド- 引数で移行したい権限レベルを指定出来る
- 引数を省略した場合は「enable 1」とみなされ、権限レベル 1 へ移行しようとする
- 現在の権限レベルから降格することは出来るが、昇格することは出来ない
 
下図は enable や disable コマンドの動作イメージです。

この図では「レベル 1 から enable コマンドでレベル 15」に昇格していますが、レベル 1 以外からでも引数無しの enable コマンドでレベル 15 へ昇格しようとします。また、実践的ではありませんがレベル 0 から引数無しの disable コマンドを実行しようとするレベル 1 へ昇格しようとしますが、disable コマンドは現在の権限レベルよりも降格しか出来ない(昇格は出来ない)為、以下のようなエラーになります。
| 1 2 3 |  | 
尚、現在の権限レベルは show privilege コマンドで確認することが出来ます。
| 1 2 3 4 5 |  | 
Radius サーバ側の設定¶
今回は Radius サーバに FreeRADIUS を使っています。FreeRADIUS のユーザ定義ファイルである /etc/freeradius/users へ、以下のようなユーザ定義を追記します。「ADMIN は "shell:priv-lvl=15"」、「USER は "shell:priv-lvl=1"」という部分がポイントです。
| 1 2 3 4 5 6 7 |  | 
設定が完了したら FreeRADIUS を再起動しておきます。
| 1 |  | 
Cisco ルータの設定¶
Cisco ルータには Radius サーバと疎通する際に必要となる IP アドレスやルーティング設定の他、以下を設定しておきます。aaa authorization exec default group radius if-authenticated が設定されていないと Radius 認証は許可されても、Cisco-AVPair を処理出来ず、権限レベルが反映されないので要注意です。
| 1 2 3 4 5 6 7 8 9 10 |  | 
Radius ログインのテスト¶
実際に Cisco ルータへテストしてテストを行います。まず、ADMIN でログインしてみます。下記の通り、ログイン直後から「#」プロンプトになっており、show privilege コマンドで現在の権限レベルを確認すると「15」であることが分かります。
| 1 2 3 4 5 6 7 8 9 10 11 12 |  | 
次は USER でログインしてみます。下記の通り、ログイン直後のプロンプトは「>」になっており、現在の権限レベルも「1」であることが分かります。
| 1 2 3 4 5 6 7 8 9 10 11 12 |  |