Cisco IOS IPサービス – Authorizationの設定

スポンサーリンク

Cisco IOSにおけるAuthorization(認可)の設定についてまとめます。認可とは”誰にどのような権利を与えるか”で、認証とは異なる概念である事に注意して下さい。

概要

Authorizationについてまとめます。Authentication(認証)とは”誰であるかを確認する方法”で、Authorization(認可)とは”誰にどのような権利を与えるか”です。日本語では「認証」と「認可」は一文字違いですが意味が大きく異なりますので、充分注意して使い分けて下さい。

privilege levelとenable password

privilegeの定義

以下のコマンドでユーザに対するprivilegeを定義する事ができます。デフォルトのprivilegeは1で、デフォルトのprivilegeよりも権限を制限したい場合はprivilege 0を使用します。

Router(config)# username <user> privilege <level>

設定例は以下の通りです。

username CISCO secret CISCO
username CISCO privilege 15
username NOC secret CISCO
username CISCO privilege 0

enable passwordの定義

以下のコマンドでprivilegeに対するenable passwordを定義する事ができます。”enable secret”コマンドは、levelを省略したprivilege 15に対するパスワード設定を意味します。

Router(config)# enable secret [ level <level> ] <password>

enable passwordを使用して権限を昇格したい場合は、”enable <level>”コマンドを使用します。

Router>enable ?
  <0-15>  Enable level
  view    Set into the existing view
  <cr>

Router>enable 2
Password:
Router#show privilege
Current privilege level is 2
Router#

コマンドの定義

privilegeに対して実行可能なコマンドを定義する事ができます。なお、allキーワードはワイルドカードの意味です。例えば以下のハイライトされている部分ならば、ipで始まるコマンドを全て許可するの意味になります。

privilege exec level 7 configuration terminal
privilege exec level 7 show running-config
privilege configure level 7 interface
privilege interface level 7 shutdown
privilege interface level 7 no shutdown
privilege interface all level 7 ip

aaa new-model 階層構造に基づく認可

書式

aaa new-modelを使用すると、より柔軟な認可の設定が可能です。認可の設定には以下のコマンドを使用します。default, <list-name>は認可リストと呼ばれる設定で、認可の適用対象を定義します。<method>は認可方式と呼ばれる設定で、何を使って認可するかを定義します。

Router(config)# aaa authentication exec [ default | <list-name> ] <method>...

認可リスト

認可リストにはdefaultまたは<list-name>を設定する事ができます。

認証リスト 説明
default VTY, console等の回線のうち全てが適用対象となります。
<list-name> VTY, console等の回線を個別に指定します。

設定例を示します。以下はVTY接続(telnet接続)に対して、local databaseに基づき認可をする設定です。

aaa new-model
!
aaa authentication login VTY local
!
line vty 0 4
 login authentication VTY

認可方式

認可方式には、何を使って認可するかを指定します。認可方式としは以下を指定する事ができます。

認証方式 説明
local local database(usernameコマンド)に定義された権限を与えます。
none 認可を行いません(無条件でlineに対して定義された権限を与えます)。
if-authenticate 認証されている場合はlineに対して定義された権限を与えます。
(認証されていない場合はアクセスを拒否します)
group radius radius-serverコマンドで指定したサーバで定義された権限を与えます。
group tacacs+ tacacs-serverコマンドで指定したサーバで定義された権限を与えます。
group <name> aaa group serverコマンドで指定したサーバで定義された権限を与えます。

none 設定例

none, if-authenticateの違いを理解するのがやや難しいため、設定例を示します。以下は認可リストとしてnoneを設定した設定です。

以下の場合は認可が行われません。“認可を行わない”とは”無条件にlineに対して設定された権限が与える”という意味です。すなわちprivilege levelコマンドで指定されたlevel 10の権限が与えられます。(なおデフォルトの権限はlevel 1ですので、privilege levelコマンドによる明示的な権限指定がない場合はlevel 1の権限が与えられます)

aaa new-model
!
aaa authentication login VTY local
aaa authorization exec VTY none
!
username cisco privilege 7 password cisco
!
line vty 0 4
 privilege level 10
 authorization exec VTY
 login authentication VTY

if-authenticate 設定例

if-authenticateの設定例を示します。

if-authenticateは”認証されている場合は認可する”という設定です。以下の場合はlocal databaseによる認証を通過しているので、lineに対して定義された権限level 10を与えます。(local databaseで設定されたlevel 7ではありません)。

aaa new-model
!
aaa authentication login VTY local
aaa authorization exec VTY if-authenticate
!
username cisco privilege 7 password cisco
!
line vty 0 4
 privilege level 10
 authorization exec VTY
 login authentication VTY

一方、以下の設定の場合は、認証されていません。if-authenticateは”認証されている場合は認可する(認証されていない場合はアクセスを拒否する)”という設定です。この場合は、telnet接続を試みると、”Authorization failed”というエラーメッセージが表示されアクセスに失敗します。

aaa new-model
!
aaa authentication login VTY none
aaa authorization exec VTY if-authenticated
!
username cisco privilege 7 password cisco
!
line vty 0 4
 privilege level 10
 authorization exec VTY
 login authentication VTY

コマンドの認可

どのlevelでどんなコマンドが実行できるかを定義する事もできます。定義方法には、privilegeコマンドを用いてルータ側で定義する方法と、RADIUS, TACACS+サーバ側で定義する方法があります。

以下のような書式を用いてコマンドに対する認可の設定を行います。

Router(config)# privilege <mode> [all] level <level> <command>

aaa new-model viewに基づく認可

準備

認可の方法は階層構造に基づくprivilege levelだけでなく、viewに基づく認可も可能です。アクセス権を定義したviewと呼ばれる設定を作成し、viewとユーザを紐づけます。Cisco公式ドキュメント上では”Role-Based CLI“と表記される事もあります。

viewを使用するためには、まずAAAを有効にします。その後、”enable view”コマンドでroot viewに変更します。(この時、求められるパスワードはenable passwordを入力して下さい)

Rack4R1(config)#aaa new-model
Rack4R1(config)#exit
Rack4R1#
Jan  5 07:18:52.345: %SYS-5-CONFIG_I: Configured from console by console
Rack4R1#enable view
Password:

Rack4R1#
Jan  5 07:18:59.537: %PARSER-6-VIEW_SWITCH: successfully set to view 'root'.
Rack4R1#

viewの定義

viewの作り方は以下の通りです。以下に例を示します。

parser view HTTP
 secret cisco
 command exec include conf t
 command configure include-exclusive all ip http

secretはパスワードを指定するコマンドです。
ユーザに定義されたパスワードと一致される必要があります。

commandはviewに対して許可するコマンドの定義です。
書式は以下の通りです。

オプション 説明
include 指定したコマンドをviewに加えます
exclude 指定したコマンドをviewから取り除きます
include-exclusive 指定したコマンドをviewに加え、
このコマンドは他のviewで使用できないようにします。
Router(config-view)# command <mode> {include | include-exclusive | exclude} [all] <commad>

super-viewの定義

複数のviewの権利を兼ね備えたsuper-viewを定義する事もできます。以下は、HTTPとDEBUGの両方の権利を兼ね備えたSUPERという名のviewを定義する設定例です。なお、super-viewとその継承元のviewは同じパスワードを定義する必要があります。

parser view HTTP
 secret cisco
 command exec include conf t
 command configure include-exclusive all ip http
!
parser view DEBUG
 secret cisco
 command exec include all debug
 command exec include all undebug
 command exec include terminal monitor
!
parser view SUPER superview
 secret cisco
 view HTTP
 view DEBUG

viewの使用

以下のコマンドでviewを使用する事ができます。なお、<view>を省略するとroot viewになる事ができます。root viewは全てのコマンドの実行とviewの定義が可能なviewです。

Router# enable view <view>

viewとユーザの紐づけ

上記のように手動でenable viewコマンドを手動で入力するのではなく、telnetログイン時にユーザに対してviewによる権限を付与する事ができます。このような機能を実装する事によりfirst level support engineerに危険なコマンドを実行できないようにする事ができます。設定例は以下の通りです。

parser view HTTP
 secret cisco
 command exec include conf t
 command configure include-exclusive all ip http
!
parser view DEBUG
 secret cisco
 command exec include all debug
 command exec include all undebug
 command exec include terminal monitor
!
parser view SUPER superview
 secret cisco
 view HTTP
 view DEBUG
!
username http secret cisco
username http view HTTP
username debug secret cisco
username debug view DEBUG
username super secret cisco
username super view SUPER
!
aaa authentication login VTY local
aaa authorization exec VTY local
!
line vty 0 4
 authorization exec VTY
 login authentication VTY
タイトルとURLをコピーしました