らくがきちょう

なんとなく

Cisco IOS ルータへの Radius ログイン時、自動的に特権モードにするには

前回、「FreeRADIUS で RADIUS Proxy を設定するには」という記事を書きましたが、今回も Radius 関連の記事です。今回は以下を実装してみます。

  • 管理者ユーザでログインすると、ログイン直後から特権モード
  • 一般ユーザでログインすると、ログイン直後はユーザモード

環境

今回は以下の環境で検証しました。

Cisco IOS ルータにおける権限レベルのおさらい

Cisco IOS ルータは権限の強さ=権限レベルを 0 〜 15 までの数字で表現します。数字が大きい程、強い権限が与えられます。

f:id:sig9:20150307142325p:plain

一般的には以下の権限(「1」と「15」)がよく利用されます。

権限レベル プロンプト表示 一般的な名称
1 > ユーザ権限
15 # 管理者権限

普段よく利用している「enable」や「disable」コマンドは「管理者モードに移行するコマンド」「ユーザモードに移行するコマンド」ですが、どちらも「権限レベルを変更するコマンド」と言えます。但し、各々以下のような違いがあります。

  • enable コマンド
    • 引数で移行したい権限レベルを指定出来る
    • 引数を省略した場合は「enable 15」とみなされ、権限レベル 15 へ移行しようとする
    • 現在の権限レベルから昇格することも降格することも出来る
  • disable コマンド
    • 引数で移行したい権限レベルを指定出来る
    • 引数を省略した場合は「enable 1」とみなされ、権限レベル 1 へ移行しようとする
    • 現在の権限レベルから降格することは出来るが、昇格することは出来ない

下図は enabledisable コマンドの動作イメージです。

f:id:sig9:20150307143244p:plain

この図では「レベル 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