運用ガイド
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, noenable26 Vendor-Specific
Vendor-Id: 21839ALAXALA-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, noenableallow-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,noenableallow-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.