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