運用ガイド

[目次][用語][索引][前へ][次へ]


5.2.6 CLIコマンドを制限する

RADIUSサーバもしくはTACACS+サーバによる認証,またはローカル認証でログインしたユーザに対し,運用コマンドの制限(コマンド承認)を行うことができます。

コマンドの制限は,サーバから取得するコマンドクラスおよびコマンドリスト,またはコンフィグレーションで設定したコマンドクラスおよびコマンドリストに従って制御します。また,制限した運用コマンドは,CLIの補完機能では補完候補として表示しません。なお,パラメータの値や文字列自体がコマンドリストに設定された場合,補完候補表示は抑止しませんが,コマンド実行時には制限されます。

図5-6 RADIUS/TACACS+サーバによるログイン認証,コマンド承認

[図データ]

図5-7 ローカルによるログイン認証,コマンド承認

[図データ]

RADIUS/TACACS+によるコマンド承認を使用するためには,RADIUS/TACACS+サーバおよび本装置を設定します。また,ローカルコマンド承認を使用するためには,本装置だけを設定します。

それぞれの設定手順を次に示します。

<この項の構成>
(1) コマンド制限のポリシーを決める
(2) リモート認証サーバまたはコンフィグレーションの設定をする
(3)  本装置のログイン認証・コマンド承認を設定する
(4) ログインしての確認

(1) コマンド制限のポリシーを決める

各ユーザに対し,運用コマンドの中で,制限・許可するコマンドのポリシーを決めます。ここでは,各ユーザがログインしたときに,あるコマンド群は許可し,それ以外のコマンドは制限するなどを決めます。ポリシーは「(2) リモート認証サーバまたはコンフィグレーションの設定をする」でRADIUS/TACACS+サーバまたは本装置に設定します。

コマンド制限・許可の対象となるのは,運用コマンドです。/usr/local/diag/以下のコマンドなどの保守コマンド等は対象外で,常に制限されます(許可が必要な場合は,次に説明するコマンドクラスで"root"を指定してコマンド無制限クラスとしてください)。なお,logout, exit, quit, disable, end, set terminal, show whoamiコマンドに関しては常に許可されます。また,コマンド承認時,旧シンタックス運用コマンドは常に制限されます。

本装置には,あらかじめ「コマンドクラス」として,以下のポリシーが定義されています。規定のコマンドクラスを選択することで,そのクラスの応じたコマンド制限を行うことができます。

表5-2 コマンドクラス一覧

コマンドクラス 許可コマンド 制限コマンド
root
全コマンド無制限クラス
従来どおりすべてのコマンド
(保守コマンド等含む)
なし
allcommand
運用コマンド無制限クラス
すべての運用コマンド"all" なし(保守コマンド等は不可)
noconfig
コンフィグレーション変更制限クラス
(コンフィグレーションコマンド投入も制限します)
制限以外の運用コマンド "config, copy, erase startup-config, synchronize"
nomanage
ユーザ管理コマンド制限クラス
制限以外の運用コマンド "adduser, rmuser, clear password, password, killuser"
noenable
装置管理者モードコマンド制限クラス
制限以外の運用コマンド "enable"

また,コマンドクラス以外に,許可コマンドリストと制限コマンドリストをそれぞれ指定することもできます。

注※ ただし,コマンドクラスにrootを設定した場合,許可/制限コマンドリストの指定は無効となり,保守コマンド含むすべてのコマンドが投入可能になります。

(a) コマンドリストの指定方法について

コマンドクラス以外に,許可/制限コマンドリストとして,許可コマンドと制限コマンドをそれぞれ指定できます。コマンドを指定する場合は,各コマンドリストに設定対象のコマンド文字列をスペースも意識して指定します。複数指定する場合はコンマ(,)で区切って並べます。ユーザのコマンド投入時に,コマンドリストで指定されたコマンド文字列と前方一致で判定されます。

なお,特別な文字列として,"all"を指定できます。"all"は運用コマンドすべてを意味します。

判定時に,許可コマンドリストと制限コマンドリストの両方に合致した場合は,合致したコマンド文字数が多い方の動作を採用します(ただし,"all"指定は文字数を1とします)。その際,許可コマンドリストと制限コマンドリストに同じコマンド文字列が指定されていた場合は,許可として判定されます。

また,コマンドクラスと許可/制限コマンドリストを同時に指定した場合は,コマンドクラスごとに規定されているコマンドリスト(「表5-2 コマンドクラス一覧」中の""で囲まれているコマンドリストに対応)と許可/制限コマンドリストを合わせて判定を行います。なお,コマンドクラスにrootを指定した場合,許可/制限コマンドクラスの設定は無効となり,保守コマンドを含むすべてのコマンドが投入可能になります。

例1〜7にある各コマンドリストを設定した場合,本装置でどのようなコマンドが許可/制限されるかを示します。

(例1)
許可コマンドリストだけを設定した場合,設定されたコマンドだけが投入を許可されます。

表5-3 コマンドリスト例1

コマンドリスト 投入コマンド 判定
許可コマンドリスト="show ,ping"
制限コマンドリスト 設定なし
show ip route 許可
ping ipv6 ::1 許可
reload 制限

(例2)
許可コマンドリストと制限コマンドリストの両方に合致した場合は,合致したコマンド文字数が多い方の動作とします(ただし,"all"指定は文字数1とします)。

表5-4 コマンドリスト例2

コマンドリスト 投入コマンド 判定
許可コマンドリスト="show ,ping ipv6"
制限コマンドリスト="show ip,ping"
show system 許可
show ipv6 route 制限
ping ipv6 ::1 許可
ping 10.10.10.10 制限

(例3)
許可コマンドリストと制限コマンドリストの両方を設定し,両方に合致しない場合は,許可として判定されます。

表5-5 コマンドリスト例3

コマンドリスト 投入コマンド 判定
許可コマンドリスト="show"
制限コマンドリスト="reload"
ping 10.10.10.10 許可
reload 制限

(例4)
許可コマンドリストと制限コマンドリストに同じコマンド文字列が指定されている場合は,許可として判定されます。

表5-6 コマンドリスト例4

コマンドリスト 投入コマンド 判定
許可コマンドリスト="show"
制限コマンドリスト="show ,ping"
show system 許可
ping ipv6 ::1 制限

(例5)
コマンドリストを全く設定しなかった場合は,logout,exit,quit,disable,end,set terminal,およびshow whoami以外のコマンドがすべて制限されます。

表5-7 コマンドリスト例5

コマンドリスト 投入コマンド 判定
許可コマンドリスト 設定なし
制限コマンドリスト 設定なし
logout, exit, quit, disable, end, set terminal, およびshow whoami以外のコマンドすべて 制限
logout, exit, quit, disable, end, set terminal, show whoami 許可

(例6)
クラスとしてrootを指定した場合は,従来どおりすべてのコマンドが投入可能となります。なお,コマンドクラスにrootを指定した場合,許可/制限コマンドクラスの制限は無効となり,保守コマンドを含むすべてのコマンドが投入可能となります。

表5-8 コマンドリスト例6

コマンドリスト 投入コマンド 判定
コマンドクラス="root" すべて
(保守コマンド等含む)
許可

(例7)
制限コマンドリストだけを設定した場合は,リストに合致しない運用コマンドはすべて許可となります。

表5-9 コマンドリスト例7

コマンドリスト 投入コマンド 判定
許可コマンドリスト 設定なし
制限コマンドリスト="reload"
reload以外の運用コマンドすべて 許可
reload 制限

本マニュアルでは,例として次表のようなポリシーでコマンド制限を行います。

表5-10 コマンド制限のポリシー例

ユーザ名 コマンドクラス 許可コマンド 制限コマンド
staff allcommand 運用コマンドすべて なし
guest なし 制限以外の運用コマンドすべて許可 reload ...
close ...
enable ...
test なし show ip ...
(show ipv6 ...は制限)
許可以外,すべて制限

注※ ...は任意のパラメータを意味します(show ip ...はshow ip routeなど)。


(2) リモート認証サーバまたはコンフィグレーションの設定をする

決定したコマンド制限ポリシーを基に,通常のログイン認証の設定以外に,RADIUSまたはTACACS+のリモート認証サーバでは,以下の属性値を使用したコマンド制限のための設定を行います。ローカルコマンド承認では,コマンドクラスおよびコマンドリストのコンフィグレーションの設定をします。

なお,サーバまたはコンフィグレーションでコマンド承認の設定を行っていない場合,ユーザが認証されログインできてもlogout, exit, quit, disable, end, set terminal, show whoami以外のすべてのコマンドが制限され,コマンドが投入できなくなるので注意してください。その場合は,コンソール端末からログインしてください。また,コマンド承認時,旧シンタックス運用コマンドは常に制限されます。

(a) RADIUSサーバを使用する場合

RADIUSサーバを利用してコマンド制限する場合は,認証時に以下のような属性値を返すようにサーバで設定します。

表5-11 RADIUS 設定 Attribute一覧

Type Attribute 説明
25 Class Class クラス
次のどれかの文字列を一つ指定します。
root, allcommand, noconfig, nomanage, noenable
26 Vendor-Specific
Vendor-Id: 21839
ALAXALA-Allow-Commands
Vendor type: 101
許可コマンドリスト
許可するコマンドの前方一致文字列をコンマ(,)で区切って指定します。空白も区別します。
運用コマンドすべては"all"を指定します。
許可コマンドリストだけ設定した場合は,許可コマンドリスト以外のコマンドはすべて制限となります。
(例:ALAXALA-Allow-Commands ="show ,ping ,telnet ")
ALAXALA-Deny-Commands
Vendor type: 102
制限コマンドリスト
制限するコマンドの前方一致文字列をコンマ(,)で区切って指定します。空白も区別します。
運用コマンドすべては"all"を指定します。
制限コマンドリストだけ設定した場合は,制限コマンドリスト以外はすべて許可となります。
(例:ALAXALA-Deny-Commands="enable,reload,close")

RADIUSサーバでは上記のベンダー固有属性をサポートしていない場合があります。その場合は,サーバに上記のベンダー固有属性を登録(dictionaryファイルなどに設定)してください。

図5-8 RADIUSサーバでのベンダー固有属性のdictionaryファイル登録例

VENDOR         Alaxala                      21839
ATTRIBUTE      Alaxala-Allow-Commands       101      string  Alaxala
ATTRIBUTE      Alaxala-Deny-Commands        102      string  Alaxala

表5-10 コマンド制限のポリシー例」で決定したポリシーを一般的なRADIUSサーバに設定する場合,以下のようなイメージになります。

図5-9 RADIUSサーバ設定例

[図データ]

注意事項
  • 本装置ではClassエントリを複数受信した場合,1個目のClassを認識し2個目以降のClassエントリは無効となります。

    図5-10 複数Classエントリ設定例

    [図データ]

  • 本装置ではClassエントリに複数のクラス名を記述した場合,1個目のクラス名を認識し2個目以降のクラス名は無効となります。例えばclass="nomanage,noenable"と記述した場合,nomanageだけが有効になります。
  • Alaxala-Deny-Commands, Alaxala-Allow-Commandsのそれぞれにおいて,同一属性のエントリを複数受信した場合,一つの属性につきコンマ(,)と空白も含み1024文字までを認識し,1025文字以降は受信しても無効となります。なお,下記の例のように同一属性を複数エントリ記述し,本装置で2個目以降のエントリを受信した場合にはエントリの先頭に自動的にコンマ(,)を設定します。

    図5-11 複数Deny-Commandsエントリ設定例

    [図データ]

(b) TACACS+サーバを使用する場合

TACACS+サーバを使用してコマンド制限する場合は,TACACS+サーバで承認の設定として以下のような属性−値のペアを設定します。

表5-12 TACACS+ 設定Attribute-Value一覧

Service Attribute Value
grlogin class クラス
次のどれかの文字列を指定
root, allcommand, noconfig, nomanage, noenable
allow-commands 許可コマンドリスト
許可するコマンドの前方一致文字列をコンマ(,)で区切って指定します。空白も区別します。
運用コマンドすべては"all"を指定します。
許可コマンドリストだけ設定した場合は,許可コマンドリスト以外のコマンドはすべて制限となります。
(例:allow-commands="show ,ping ,telnet ")
deny-commands 制限コマンドリスト
制限するコマンドの前方一致文字列をコンマ(,)で区切って指定します。空白も区別します。
運用コマンドすべては"all"を指定します。
制限コマンドリストだけ設定した場合は,制限コマンドリスト以外はすべて許可となります。
(例:deny-commands="enable,reload,close")

表5-10 コマンド制限のポリシー例」で決定したポリシーを一般的なTACACS+サーバに設定する場合,以下のような設定ファイルイメージになります。

図5-12 TACACS+サーバ設定例

[図データ]

注意事項
  • 本装置ではclassエントリに複数のクラス名を記述した場合,1個目のクラス名を認識し2個目以降のクラス名は無効となります。例えばclass="nomanage,noenable"と記述した場合,nomanageだけが有効になります。
  • deny-commands, allow-commandsのそれぞれにおいて,一つの属性につきコンマ(,)と空白も含み1024文字までを認識し,1025文字以降は受信しても無効となります。

(c) ローカルコマンド承認を使用する場合

ローカルコマンド承認を使用してコマンド制限する場合は,ログインコンフィグレーション(loginコマンド)でユーザ名を指定して,各パラメータで以下のようなコンフィグレーションを設定します。

表5-13 ローカルコマンド承認使用時のコマンドクラスおよびコマンドリスト設定一覧

パラメータ 説明
class クラス
次のどれかを指定
root,allcommand,noconfig,nomanage,noenable
allow-commands 許可コマンドリスト
許可するコマンドの前方一致文字列をコンマ(,)で区切って指定します。空白も区別します。
運用コマンドすべては"all"を指定します。
許可コマンドリストだけ設定した場合は,許可コマンドリスト以外のコマンドはすべて制限となります。
(例:(config)# login user staff allow-commands "show ,ping ,telnet")
deny-commands 制限コマンドリスト
制限するコマンドの前方一致文字列をコンマ(,)で区切って指定します。空白も区別します。
運用コマンドすべては"all"を指定します。
制限コマンドリストだけ設定した場合は,制限コマンドリスト以外はすべて許可となります。
(例:(config)# login user staff deny-commands "enable,reload,close")

表5-10 コマンド制限のポリシー例」で決定したポリシーをコンフィグレーションに設定する場合,以下のような設定イメージになります。

図5-13 コンフィグレーションの設定例

[図データ]

(3)  本装置のログイン認証・コマンド承認を設定する

RADIUS/TACACS+サーバを使用する場合,サーバ側の設定が終了した後,本装置でRADIUSまたはTACACS+サーバのコンフィグレーション設定を行います。RADIUSサーバまたはTACACS+サーバのアドレス,共有鍵などのサーバ設定とコマンド承認を行うパラメータ(authorization)設定を行ってください。

ローカルコマンド承認を使用する場合,コマンドクラスおよびコマンドリストの設定が終了した後,ログインコンフィグレーション(loginコマンド)でコマンド承認を行うパラメータ(authorization)を設定してください。

なお,サーバまたはコンフィグレーションで「(2) リモート認証サーバまたはコンフィグレーションの設定をする」のコマンド承認の設定がされていない場合は,authorizationを設定した装置にユーザが認証されログインしても,コマンドがすべて制限されるため,コマンドの投入はできません。設定ミス等でコマンド投入できない場合は,コンソール端末からログインして修正してください。

図5-14 RADIUSサーバを使用する場合

(config)# radius 192.168.10.1 key "RaD#001"
(config)# radius authorization
(config)# show radius
 
       radius yes
       radius authorization
       radius 192.168.10.1 key "RaD#001"
 

サーバのIPアドレス(例では192.168.10.1),共有鍵(例ではRaD#001)は,ご利用の環境にあわせて設定してください。

図5-15 TACACS+サーバを使用する場合

(config)# tacacs+ 192.168.10.1 key "TaC#001"
(config)# tacacs+ authorization
(config)# show tacacs+
 
       tacacs+ yes
       tacacs+ authorization
       tacacs+ 192.168.10.1 key "TaC#001"
 

サーバのIPアドレス(例では192.168.10.1),共有鍵(例ではTaC#001)は,ご利用の環境にあわせて設定してください。

図5-16 ローカルコマンド承認を使用する場合

(config)# login authorization
(config)# show login
 
       login authorization                                  ┐
       login user guest deny-commands "reload,close,enable" │※
       login user staff class allcommand                    │
       login user test allow-commands "show ip "            ┘
 

注※ 「表5-10 コマンド制限のポリシー例」で決定したポリシーをローカルコマンド承認で設定した場合,このようなコンフィグレーションとなります。

最後に,RADIUS,TACACS+またはローカルの認証方式の設定を行います。その他,通常のリモートアクセスに必要な設定は,あらかじめ行ってください。

図5-17 RADIUSサーバを使用する場合

       (config)# system login_authentication radius local

図5-18 TACACS+サーバを使用する場合

       (config)# system login_authentication tacacs+ local

図5-19 ローカルコマンド承認を使用する場合

       (config)# system login_authentication local

(4) ログインしての確認

設定が完了した後,RADIUS/TACACS+/ローカル認証を使用したリモート運用端末から本装置へのログインを行います。ログイン後,show whoamiコマンドでコマンドリストが設定されていること,コマンドを投入して制限・許可していることを確認してください。

図5-20 staffがログイン後の確認例

> show whoami
staff            ttyp0    -----  2  Aug  6 14:17:03 (10.10.10.10)
 
Home-directory: /usr/home/staff
Authentication: TACACS+ (Server 192.168.10.1)
Class: allcommand
      Allow: "all"
      Deny : -----
Command-list: -----
>
> show cal
Wed Oct 29 17:21:15  2003
> /bin/date
% Command not authorized.
>

図5-21 guestがログイン後の確認例

>show whoami
guest            ttyp0    -----  2  Aug  6 14:17:03 (10.10.10.20)
 
Home-directory: /usr/home/guest
Authentication: RADIUS (Server 192.168.10.1)
Class: -----
Command-list:
      Allow: -----
      Deny : "reload,close,enable"
>
> show cal
Wed Oct 29 17:21:15  2003
> reload
% Command not authorized.
>

図5-22 testがログイン後の確認例

>show whoami
test             ttyp0    -----  2  Aug  6 14:17:03 (10.10.10.30)
 
Home-directory: /usr/home/test
Authentication: LOCAL
Class: -----
Command-list:
      Allow: "show ip "
      Deny : -----
>
> show ip route
***コマンド実行されます***
> show ipv6 route
% Command not authorized.
>

[目次][前へ][次へ]


[他社商品名称に関する表示]

Copyright (c) 2005, 2011, ALAXALA Networks Corporation. All rights reserved.