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


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

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

RADIUSサーバ,TACACS+サーバ,またはローカルパスワードによる認証の上ログインしたユーザに対して,使用できるコマンドの種類を制限できます。これをコマンド承認と呼びます。コマンド承認の制限対象となるコマンドは,コンフィグレーションコマンド,運用コマンド,およびマニュアルに掲載されていないデバッグコマンドです。ただし,一部のコマンドは制限対象になりません。コマンド承認の設定有無に関係なく,常に実行できるコマンドを次の表に示します。

表8‒11 常に実行できるコマンド一覧

分類

コマンド

コンフィグレーションコマンド

top,end,exit,quit

運用コマンド

logout,exit,quit,set terminal,show whoami,who am i

注※ その文字列から開始するコマンドも含みます。

ユーザが使用できるコマンドは,RADIUSサーバまたはTACACS+サーバから取得するコマンドクラスおよびコマンドリスト,またはコンフィグレーションで設定したコマンドクラスおよびコマンドリストに従って制御されます。

制限したコマンドは,CLIの補完機能で補完候補として表示しません。なお,<vlan id>や<host name>などの,<>で囲まれたパラメータ部分の値や文字列を含んだコマンドを,許可するコマンドリストに指定した場合は,<>部分は補完候補として表示しません。

〈この項の構成〉

(1) コマンド承認の流れ

対象とするユーザのログインに先だって,コマンド承認のための設定をします。RADIUS/TACACS+指定時は,RADIUS/TACACS+のリモート認証サーバにコマンドクラスとコマンドリストを登録します。ローカル指定時は,コマンドクラスとコマンドリストをコンフィグレーションで設定します。

RADIUSサーバおよびTACACS+サーバによるログイン認証とコマンド承認の流れを次の図に示します。

図8‒22 RADIUS/TACACS+サーバによるログイン認証,コマンド承認

[図データ]

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

RADIUSサーバおよびTACACS+サーバによるコマンド承認例を次の図に示します。

図8‒23 RADIUS/TACACS+サーバによるコマンド承認例

[図データ]

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

(2) コマンドクラスの指定

各ユーザに対して,制限または許可するコマンドのポリシーを決定します。本装置では,コマンドクラスを指定することで,一定のポリシーに従ってコマンド群を許可したり制限したりできます。サポートするコマンドクラスとコマンド承認動作を次の表に示します。

表8‒12 コマンドクラスとコマンド承認動作

コマンドクラス

説明

コマンド承認時のコマンドの扱い

制限

許可

noenable

コマンド入力モードを装置管理者モードへ変更する運用コマンドenableを制限するコマンドクラスです。一般ユーザモードで入力できる運用コマンドだけを許可します。

  • コンフィグレーションコマンド

  • 運用コマンドenable

  • 入力モードが装置管理者モードだけの運用コマンド

  • デバッグコマンド

  • 制限以外の運用コマンド

noconfig

コンフィグレーションの変更を制限するコマンドクラスです。

  • コンフィグレーションコマンド

  • 次の文字列から始まる運用コマンド

    config,copy,erase configuration

  • デバッグコマンド

  • 制限以外の運用コマンド

noauthorization

コマンド承認に関係するコンフィグレーションコマンドを制限するコマンドクラスです。コンフィグレーションの編集と操作に関するコンフィグレーションコマンドおよびコンフィグレーションを操作する運用コマンド(copy,erase configuration)も許可します。

  • 次の文字列から始まるコンフィグレーションコマンド

    aaa,username,radius-server,tacacs-server,parser view

  • デバッグコマンド

  • 制限以外のコンフィグレーションコマンド

  • 運用コマンド

allcommand

コンフィグレーションコマンドおよび運用コマンドを制限しないコマンドクラスです。

  • デバッグコマンド

  • コンフィグレーションコマンド

  • 運用コマンド

root

マニュアルに掲載されていないデバッグコマンド(psコマンドなど)を含め,すべてのコマンドを制限しないコマンドクラスです。

なし

  • コンフィグレーションコマンド

  • 運用コマンド

  • デバッグコマンド

(3) コマンドリストの指定

コマンドクラス以外に,許可するコマンドと制限するコマンドをそれぞれコマンドリストに指定できます。許可コマンドリストおよび制限コマンドリストには,コンフィグレーションコマンドおよび運用コマンドを指定できます。マニュアルに掲載されていないデバッグコマンドは,コマンドリストに指定できません。

コマンドを指定する場合は,各コマンドリストに設定対象のコマンド文字列をスペースも意識して指定します。複数指定する場合はコンマ(,)で区切って並べます。なお,ローカルコマンド承認では,コマンド文字列をコンフィグレーションコマンドcommands execで一つずつ設定します。本装置では,設定されたコマンド文字列をコンマ(,)で連結したものをコマンドリストとして使用します。コマンドリストで指定されたコマンド文字列と,ユーザが入力したコマンドの先頭部分とが,合致するかどうかで判定し(前方一致),コマンドの実行を許可したり制限したりします。

なお,特別な文字列として,allを指定できます。allはコンフィグレーションコマンドおよび運用コマンドのすべてを意味します。

許可コマンドリスト,制限コマンドリスト,およびコマンドクラスの設定有無による動作例を次に示します。

[設定例1]許可コマンドリストだけを設定した場合

設定された文字列と合致する文字列を含むコマンドだけを許可します。

表8‒13 設定例1の内容と指定コマンドの判定結果

設定

指定コマンド

判定

許可コマンドリスト="show ip ,ping"

制限コマンドリスト 設定なし

show ip arp

許可

show ipv6 neighbors

制限

ping ipv6 ::1

許可

reload

制限

許可コマンドリストに"show ip "(ipの後ろに半角スペース)と設定されているため,合致するshow ip arpコマンドは許可されますが,合致しないshow ipv6 neighborsコマンドは許可されません。

[設定例2]制限コマンドリストだけを設定した場合

設定された文字列と合致する文字列を含むコマンドだけを制限します。該当しないコマンドは,すべて許可として判定されます。

表8‒14 設定例2の内容と指定コマンドの判定結果

設定

指定コマンド

判定

許可コマンドリスト 設定なし

制限コマンドリスト="reload"

show ip arp

許可

show ipv6 neighbors

許可

ping ipv6 ::1

許可

reload

制限

[設定例3]許可コマンドリストと制限コマンドリストの両方を設定した場合
  • 許可コマンドリストと制限コマンドリストに同じコマンド文字列が指定されている場合は,許可として判定されます。

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

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

表8‒15 設定例3の内容と指定コマンドの判定結果

コマンドリスト

指定コマンド

判定

許可コマンドリスト="show,ping ipv6"

制限コマンドリスト="show,ping"

show system

許可

show ipv6 neighbors

許可

ping ipv6 ::1

許可

ping 10.10.10.10

制限

clear logging

許可

[設定例4]コマンドクラスとコマンドリストの両方を設定した場合
  • root以外のコマンドクラスを設定した場合は,コマンドクラスごとに規定されたコマンドリストと,設定したコマンドリストを合わせて判定します。コマンドクラスごとに規定されたコマンドリストを次の表に示します。

    表8‒16 コマンドクラスごとに規定されたコマンドリスト

    コマンドクラス

    規定のコマンドリスト

    noenable

    制限コマンドリスト="enable"

    noconfig

    制限コマンドリスト="config,copy,erase configuration"

    noauthorization

    制限コマンドリスト="aaa,username,radius-server,tacacs-server,parser view"

    allcommand

    許可コマンドリスト="all"

  • コマンドクラスrootを設定した場合は,コマンドリストの設定は無効になります。

表8‒17 設定例4の内容と指定コマンドの判定結果

設定

指定コマンド

判定

コマンドクラス="noauthorization"

許可コマンドリスト="username user password"

制限コマンドリスト 設定なし

username user password

許可

username

制限

コマンドクラスnoauthorizationを設定すると,usernameから始まるコンフィグレーションコマンドは制限されます。ログインパスワードを変更できるようにしたい場合は,username <user name> passwordを許可コマンドリストに設定します。

(4) RADIUS/TACACS+サーバへの登録情報

RADIUSまたはTACACS+のリモートサーバに,コマンドの制限に対応した属性値を設定します。例として,次の表に示すポリシーでコマンドを制限します。

表8‒18 コマンド制限のポリシー例

ユーザ名

ポリシー例

設定内容

staff

コンフィグレーションコマンドおよび運用コマンドを制限なく使用できる。

コマンドクラス="allcommand"

許可コマンドリスト 設定なし

制限コマンドリスト 設定なし

guest

制限以外の運用コマンドを使用できる。

コマンドクラス 設定なし

許可コマンドリスト 設定なし

制限コマンドリスト="reload,inactivate,enable"

test

指定した運用コマンドだけを使用できる。

コマンドクラス 設定なし

許可コマンドリスト="show ip "

(a) RADIUSサーバへの登録

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

表8‒19 RADIUS設定属性一覧

属性

ベンダー固有属性

25 Class

コマンドクラス

次の文字列のどれか一つを指定します。

noenable,noconfig,noauthorization,allcommand,root

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ファイルなどに設定)してください。

図8‒24 RADIUSサーバでのベンダー固有属性のdictionaryファイル登録例
VENDOR         ALAXALA                      21839
ATTRIBUTE      ALAXALA-Allow-Commands       101      string  ALAXALA
ATTRIBUTE      ALAXALA-Deny-Commands        102      string  ALAXALA

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

図8‒25 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で始まるコマンドを制限します。

  3. 空白の有無が意味を持ちます。

    "show ip "の後ろに空白があるため,show ip arpなどのコマンドは許可されますが,show ipv6 neighborsなどのコマンドは許可されません。

    ほかのコマンドはすべて制限となります。

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

    図8‒26 複数Classエントリ設定例
    Class = "noenable"                                            <-1
     
    Class = "allcommand"

    1. 本装置では一つ目のnoenableだけ有効となります。

  • 本装置ではClassエントリに複数のクラス名を記述した場合,1個目のクラス名を認識し2個目以降のクラス名は無効となります。例えば,class="noenable,allcommand"と記述した場合,noenableだけが有効になります。

  • ALAXALA-Deny-Commands, ALAXALA-Allow-Commandsのそれぞれで同一属性のエントリを複数受信した場合,一つの属性につきコンマ(,)と空白も含み1024文字までを認識し,1025文字以降は受信しても無効となります。なお,次の例のように同一属性を複数エントリに記述し,本装置で2個目以降のエントリを受信した場合にはエントリの先頭に自動的にコンマ(,)を設定します。

    図8‒27 複数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,........."

(b) TACACS+サーバへの登録

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

表8‒20 TACACS+設定属性一覧

service

属性

taclogin

class

コマンドクラス

次の文字列のどれかを指定

noenable,noconfig,noauthorization,allcommand,root

allow-commands

許可コマンドリスト

許可するコマンドの前方一致文字列をコンマ(,)で区切って指定します。空白も区別します。

コマンドすべては"all"を指定します。

許可コマンドリストだけ設定した場合は,許可コマンドリスト以外のコマンドはすべて制限となります。

(例:allow-commands="show ,ping ,telnet ")

deny-commands

制限コマンドリスト

制限するコマンドの前方一致文字列をコンマ(,)で区切って指定します。空白も区別します。

コマンドすべては"all"を指定します。

制限コマンドリストだけ設定した場合は,制限コマンドリスト以外はすべて許可となります。

(例:deny-commands="enable,reload,inactivate")

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

図8‒28 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で始まるコマンドを制限します。

  3. 空白の有無が意味を持ちます。

    "show ip "の後ろに空白があるため,show ip arpなどのコマンドは許可されますが,show ipv6 neighborsなどのコマンドは許可されません。

    ほかのコマンドはすべて制限となります。

注意
  • 本装置ではclassエントリに複数のクラス名を記述した場合,1個目のクラス名を認識し2個目以降のクラス名は無効となります。例えば,class="noenable,allcommand"と記述した場合,noenableだけが有効になります。

  • deny-commands,allow-commandsのそれぞれで,一つの属性につきコンマ(,)と空白も含み1024文字までを認識し,1025文字以降は受信しても無効となります。

(5) コマンド承認の注意事項