前回、「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 コマンドは現在の権限レベルよりも降格しか出来ない(昇格は出来ない)為、以下のようなエラーになります。
Router# enable 0
Router> disable
New privilege level must be less than current privilege level
尚、現在の権限レベルは show privilege コマンドで確認することが出来ます。
Router# show privilege
Current privilege level is 15
Router# disable
Router> show privilege
Current privilege level is 1
Radius サーバ側の設定
今回は Radius サーバに FreeRADIUS を使っています。FreeRADIUS のユーザ定義ファイルである /etc/freeradius/users へ、以下のようなユーザ定義を追記します。「ADMIN は "shell:priv-lvl=15"」、「USER は "shell:priv-lvl=1"」という部分がポイントです。
ADMIN Cleartext-Password := "PASSWORD"
Service-Type = NAS-Prompt-User,
Cisco-AVPair = "shell:priv-lvl=15"
USER Cleartext-Password := "PASSWORD"
Service-Type = NAS-Prompt-User,
Cisco-AVPair = "shell:priv-lvl=1"
設定が完了したら FreeRADIUS を再起動しておきます。
sudo service freeradius restart
Cisco ルータの設定
Cisco ルータには Radius サーバと疎通する際に必要となる IP アドレスやルーティング設定の他、以下を設定しておきます。aaa authorization exec default group radius if-authenticated が設定されていないと Radius 認証は許可されても、Cisco-AVPair を処理出来ず、権限レベルが反映されないので要注意です。
aaa new-model
!
aaa authentication login default group radius
aaa authorization exec default group radius if-authenticated
!
radius server RADIUS-SERVER
address ipv4 10.0.0.201 auth-port 1812 acct-port 1813
key SECRET
!
end
Radius ログインのテスト
実際に Cisco ルータへテストしてテストを行います。まず、ADMIN でログインしてみます。下記の通り、ログイン直後から「#」プロンプトになっており、show privilege コマンドで現在の権限レベルを確認すると「15」であることが分かります。
$ telnet 10.0.0.1
Trying 10.0.0.1
Connected to 10.0.0.1
Escape character is '^]'.
User Access Verification
Username: ADMIN
Password:
Router# show privilege
Current privilege level is 15
次は USER でログインしてみます。下記の通り、ログイン直後のプロンプトは「>」になっており、現在の権限レベルも「1」であることが分かります。
$ telnet 10.0.0.1
Trying 10.0.0.1
Connected to 10.0.0.1
Escape character is '^]'.
User Access Verification
Username: USER
Password:
Router> show privilege
Current privilege level is 1
コメント