コンフィグレーションガイド Vol.1

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


10.2.4 RADIUS/TACACS+/ローカルを使用したコマンド承認

RADIUS/TACACS+/ローカル(コンフィグレーション)を使用したコマンド承認方法について説明します。

<この項の構成>
(1) コマンド承認の概要
(2) RADIUS/TACACS+/ローカルコマンド承認設定手順
(3) コマンド制限のポリシー決定
(4) コマンドリストの指定方法について
(5) RADIUS/TACACS+/ローカルコマンド承認の設定

(1) コマンド承認の概要

RADIUSサーバ,TACACS+サーバ,またはローカルパスワードによる認証の上ログインしたユーザに対し,使用できる運用コマンドの種類を制限することができます。これをコマンド承認と呼びます。使用できる運用コマンドは,RADIUSサーバまたはTACACS+サーバから取得する,コマンドクラスおよびコマンドリスト,またはコンフィグレーションで設定したコマンドクラスおよびコマンドリストに従い制御を行います。また,制限した運用コマンドは,CLIの補完機能で補完候補として表示しません。なお,<option>や<Host Name>などの,<>で囲まれたパラメータ部分の値や文字列を含んだ運用コマンドを,許可するコマンドリストに指定した場合は,<>部分は補完候補として表示しません。

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

[図データ]

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

[図データ]

本装置のaaaコンフィグレーションでコマンド承認を設定すると,RADIUS/TACACS+指定時は,ログイン認証と同時に,サーバからコマンドリストを取得します。ローカル指定時は,ログイン認証と同時に,コンフィグレーションで設定されたコマンドリストを使用します。本装置ではこれらのコマンドリストに従ってログイン後の運用コマンドを許可/制限します。

図10-19 RADIUS/TACACS+サーバによるコマンド承認のシーケンス

[図データ]

図10-20 ローカルコマンド承認のシーケンス

[図データ]

図10-19 RADIUS/TACACS+サーバによるコマンド承認のシーケンス」で端末からユーザが本装置にtelnetを実行すると,RADIUS/TACACS+サーバに対し本装置から認証,コマンド承認を要求します。認証成功時にRADIUS/TACACS+サーバからコマンドリストを取得し,ユーザは本装置にログインします。

図10-20 ローカルコマンド承認のシーケンス」で端末からユーザが本装置にtelnetを実行すると,ローカル認証を行います。認証成功時にコンフィグレーションからコマンドリストを取得し,ユーザは本装置にログインします。

ログイン後,ユーザは本装置で運用コマンドshow interfacesなどを実行できますが,運用コマンドreloadはコマンドリストによって制限されているために実行できません。

注意
RADIUS/TACACS+サーバのコマンドリストの設定を変更した場合またはコンフィグレーションのコマンドリストを変更した場合は,次回のログイン認証後から反映されます。

(2) RADIUS/TACACS+/ローカルコマンド承認設定手順

RADIUS/TACACS+によるコマンド承認を使用するためには,次の手順でRADIUS/TACACS+サーバや本装置を設定します。

  1. コマンド制限のポリシーを決める。
    各ユーザに対し,運用コマンドの中で,制限・許可するコマンドのポリシーを決めます。
  2. コマンドリストを指定する。
    コマンドクラス以外に,許可/制限コマンドリストとして,許可コマンドと制限コマンドをそれぞれ指定できます。
  3. RADIUS/TACACS+サーバを設定する。
    決定したコマンド制限ポリシーを基に,RADIUSまたはTACACS+のリモート認証サーバに,コマンド制限のための設定を行います。
  4. 本装置のリモート認証を設定する。
    本装置でRADIUSまたはTACACS+サーバのコンフィグレーション設定とaaaコンフィグレーション設定を行います。
  5. コマンド承認の動作を確認する。
    RADIUS/TACACS+を使用したリモート運用端末から本装置へログインし,確認を行います。

ローカルコマンド承認を使用するためには,次の手順で本装置を設定します。

  1. コマンド制限のポリシーを決める。
    各ユーザに対し,運用コマンドの中で,制限・許可するコマンドのポリシーを決めます。
  2. コマンドリストを作成する。
    コマンドクラス以外に,コマンドリストとして許可コマンドと制限コマンドをそれぞれ指定できます。決定したコマンド制限ポリシーを基に,コマンドリストのコンフィグレーション設定を行います。
    なお,コマンドクラスだけを使用する場合は作成不要です。
  3. ユーザにコマンドクラスまたはコマンドリストを割り当てる。
    各ユーザに対し,コマンドクラスまたはコマンドリストを割り当てるusernameコンフィグレーション設定を行います。
    その後に,aaaコンフィグレーション設定を行います。
  4. コマンド承認の動作を確認する。
    本装置へローカル認証でログインし確認を行います。

(3) コマンド制限のポリシー決定

各ユーザに対し,運用コマンドの中で,制限・許可するコマンドのポリシーを決めます。ここでは,各ユーザがログインしたときに,あるコマンド群は許可し,それ以外のコマンドは制限するなどを決めます。ポリシーは「(5) RADIUS/TACACS+/ローカルコマンド承認の設定」で設定します。

コマンド制限・許可の対象となるのは,運用コマンドです。マニュアル未掲載のデバッグコマンド(psコマンドなど)は対象外で,常に制限されます(許可が必要な場合は,次に説明するコマンドクラスでrootを指定してコマンド無制限クラスとしてください)。なお,logout,exit,quit,disable,end,set terminal,show whoami,who am iコマンドに関しては常に許可されます。

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

表10-11 コマンドクラス一覧

コマンドクラス 許可コマンド 制限コマンド
root
全コマンド無制限クラス
従来どおりすべてのコマンド
(マニュアル未掲載のデバッグコマンドを含む)
なし
allcommand
運用コマンド無制限クラス
すべての運用コマンド"all" なし(マニュアル未掲載のデバッグコマンドは不可)
noconfig
コンフィグレーション変更制限クラス(コンフィグレーションコマンド指定も制限します)
制限以外の運用コマンド "config, copy, erase configuration"
nomanage
ユーザ管理コマンド制限クラス
制限以外の運用コマンド "adduser, rmuser, clear password, password, killuser"
noenable
装置管理者モードコマンド制限クラス
制限以外の運用コマンド "enable"

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

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

コマンドクラス以外に,許可/制限コマンドリストとして,許可コマンドと制限コマンドをそれぞれ指定できます。コマンドを指定する場合は,各コマンドリストに設定対象のコマンド文字列をスペースも意識して指定します。複数指定する場合はコンマ(,)で区切って並べます。なお,ローカルコマンド承認では,コマンド文字列をコンフィグレーションコマンドcommands execで一つずつ設定します。本装置では,その設定されたコマンド文字列をコンマ(,)で連結したものをコマンドリストとして使用します。

コマンドリストで指定されたコマンド文字列と,ユーザが入力したコマンドの先頭部分とが,合致するかどうかを判定します(前方一致)。なお,特別な文字列として,allを指定できます。allは運用コマンドすべてを意味します。

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

また,コマンドクラスと許可/制限コマンドリストを同時に指定した場合は,コマンドクラスごとに規定されているコマンドリスト(「表10-11 コマンドクラス一覧」中の" "で囲まれているコマンドリストに対応)と許可/制限コマンドリストを合わせて判定を行います。なお,コマンドクラスにrootを指定した場合,許可/制限コマンドクラスの設定は無効となり,マニュアル未掲載のデバッグコマンド(psコマンドなど)を含むすべてのコマンドが実行できるようになります。

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

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

表10-12 コマンドリスト例1

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

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

表10-13 コマンドリスト例2

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

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

表10-14 コマンドリスト例3

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

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

表10-15 コマンドリスト例4

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

(例5)
コマンドリストをまったく設定しなかった場合は,logoutなどのコマンド以外はすべて制限されます。

表10-16 コマンドリスト例5

コマンドリスト 指定コマンド 判定
許可コマンドリスト 設定なし
制限コマンドリスト 設定なし
すべて 制限
logout,exit,quit,disable,end,set terminal,show whoami,who am i 許可

(例6)
クラスとしてrootを指定した場合は,従来どおりすべてのコマンドが実行可能となります。なお,コマンドクラスにrootを指定した場合,許可/制限コマンドクラスの制限は無効となり,マニュアル未掲載のデバッグコマンド(psコマンドなど)を含むすべてのコマンドが実行可能となります。

表10-17 コマンドリスト例6

コマンドリスト 指定コマンド 判定
コマンドクラス="root" すべて(マニュアル未掲載のデバッグコマンドを含む) 許可

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

表10-18 コマンドリスト例7

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

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

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

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

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


(5) RADIUS/TACACS+/ローカルコマンド承認の設定

表10-19 コマンド制限のポリシー例」で決定したコマンド制限ポリシーを基に,RADIUSまたはTACACS+のリモート認証サーバでは,通常のログイン認証の設定以外に,以下の属性値を使用したコマンド制限のための設定を行います。

なお,サーバ側でコマンド承認の設定を行っていない場合,ユーザが認証されログインできてもlogout,exit,quit,disable,end,set terminal,show whoami,who am i以外のすべてのコマンドが制限され,コマンドを実行できなくなりますのでご注意ください。その場合は,コンソールからログインしてください。

また,コンフィグレーションコマンドaaa authorization commands consoleによってコンソールもコマンド承認の対象となっている場合は,デフォルトリスタート後,ログインしてください。

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

表10-20 RADIUS設定属性一覧

属性 ベンダー固有属性
25 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, inactivate")

(凡例)−:該当なし


RADIUSサーバには,上記のベンダー固有属性を登録(dictionaryファイルなどに設定)してください。

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

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

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

図10-22 RADIUSサーバ設定例

staff  Password = "******"
       Class = "allcommand"                                 … 1
 
 
guest  Password = "******"
       Alaxala-Deny-Commands = "enable,reload,inactivate"   … 2
 
 
test  Password = "******"
      Alaxala-Allow-Commands = "show ip "                   … 3
 

注 ******の部分には各ユーザのパスワードを設定します。

  1. クラス"allcommand"で運用コマンドすべてを許可します。
  2. enable,reload,およびinactivateで始まるコマンドを制限します。
    allow-commandsが指定されていないため,ほかのコマンドは許可となります。
  3. 空白の有無が意味を持ちます。
    "show ip "の後ろに空白があるため,show ip arpなどのコマンドは許可されますが,show ipv6 neighborsなどのコマンドは許可されません。
    ほかのコマンドはすべて制限となります。

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

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

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

    図10-24 複数Deny-Commandsエントリ設定例

    ALAXALA-Deny-Commands = "inactivate,reload"                   … 1
     
    ALAXALA-Deny-Commands = "activate,test,............"          … 1
     
    1. 本装置では下線の部分を合計1024文字まで認識します。
     上記のDeny-Commandsを受信した場合は,下記のように2個目のエントリの先頭であるactivateコマンドの前にコンマ(,)が自動的に設定されます。
     Deny-Commands = "inactivate,reload,activate,test,........."

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

表10-21 TACACS+設定属性一覧

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

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

図10-25 TACACS+サーバの設定例

user=staff {
    login = cleartext "******"
    service = taclogin {                                    … 1
        class = "allcommand"
    }
}
 
 
user=guest {
    login = cleartext "******"
    service = taclogin {
        deny-commands = "enable,reload,inactivate"          … 2
    }
}
 
 
user=test {
    login = cleartext "******"
    service = taclogin {
        allow-commands = "show ip "                         … 3
    }
}
 

注 ******の部分には各ユーザのパスワードを設定します。

  1. service名はtacloginと設定します。
    クラス"allcommand"で運用コマンドすべてを許可します。
  2. enable,reload,およびinactivateで始まるコマンドを制限します。
    allow-commandsが指定されていないため,ほかのコマンドは許可となります。
  3. 空白の有無が意味を持ちます。
    "show ip "の後ろに空白があるため,show ip arpなどのコマンドは許可されますが,show ipv6 neighborsなどのコマンドは許可されません。
    ほかのコマンドはすべて制限となります。

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

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

図10-26 コンフィグレーションの設定例

username guest view guest_view
username staff view-class allcommand                        … 1
username test view test_view
!
parser view guest_view
  commands exec exclude all "enable"                        … 2
  commands exec exclude all "inactivate"                    … 2
  commands exec exclude all "reload"                        … 2
!
parser view test_view
  commands exec include all "show ip "                      … 3
!
aaa authentication login default local
aaa authorization commands default local
 
  1. ユーザ"staff"に対し,クラス"allcommand"で運用コマンドすべてを許可します。
  2. enable,inactivate,およびreloadで始まるコマンドを制限します。
    commands exec includeが指定されていないため,ほかのコマンドは許可となります。
  3. 空白の有無が意味を持ちます。
    "show ip "の後ろに空白があるため,show ip arpなどのコマンドは許可されますが,show ipv6 neighborsなどのコマンドは許可されません。
    ほかのコマンドはすべて制限となります。

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

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

図10-27 staffがログイン後の確認例

> show whoami
Date 20XX/01/07 12:00:00 UTC
staff ttyp0    -----  2   Jan  6 14:17 (10.10.10.10)
 
Home-directory: /usr/home/staff
Authentication: TACACS+ (Server 192.168.10.1)
Class: allcommand
      Allow: "all"
      Deny : -----
Command-list: -----
>
> show clock
Wed Jan 7 12:00:10 UTC 20XX
> /bin/date
% Command not authorized.
>

図10-28 guestがログイン後の確認例

>show whoami
Date 20XX/01/07 12:00:00 UTC
guest ttyp0    -----  2   Jan  6 14:17 (10.10.10.20)
 
Home-directory: /usr/home/guest
Authentication: RADIUS (Server 192.168.10.1)
Class: -----
Command-list:
      Allow: -----
      Deny : "enable,reload,inactivate"
>
> show clock
Wed Jan 7 12:00:10 UTC 20XX
> reload
% Command not authorized.
>

図10-29 testがログイン後の確認例

>show whoami
Date 20XX/01/07 12:00:00 UTC
test ttyp0    -----  2   Jan  6 14:17 (10.10.10.30)
 
Home-directory: /usr/home/test
Authentication: LOCAL
Class: -----
Command-list:
      Allow: "show ip "
      Deny : -----
>
> show ip arp
***コマンド実行されます***
> show ipv6 neighbors
% Command not authorized.
>

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


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

All Rights Reserved, Copyright(C), 2014, 2019, ALAXALA Networks, Corp.