サービスの随意アクセス制御リストを作成する場合の推奨事項およびガイド


概要


サービスの随意アクセス制御リスト (DACL) は、ワークステーションおよびサーバーのセキュリティにおいて重要な要素です。この資料では、サービスに対する DACL の解釈方法について説明します。また、プログラムの開発およびセキュリティ評価を行う際に、サービスの DACL を作成するための推奨事項に関するガイドを提供します。

はじめに


この「サポート技術情報」 (Microsoft Knowledge Base) の資料は、サービスの随意アクセス制御リスト (DACL) のセキュリティを評価する際のガイドとして使用することができます。

詳細


サービスの DACL を表示するには、以下の例のように、sc コマンドを sdshow という引数と共に使用します。service_name には、DACL を表示するサービスの名前を指定します。
sc sdshow service_name
コマンドの実行結果の例を以下に示します。
(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;PU)(A;;CCDCLCSWLOCRRC;;;LS)
この sc コマンドの出力例では、サービスのセキュリティの詳細がセキュリティ記述子定義言語 (SDDL) 構文で表示されています。SDDL 構文の詳細については、以下のマイクロソフト Web サイトを参照してください。
サービスの DACL に脆弱性が存在するかどうかを判断するには、いくつかの点を確認する必要があります。以下の表は、sc コマンドの実行結果の解釈の仕方、各アクセス許可文字列の解釈方法、そのアクセス許可が付与されているユーザーを確認する方法について示したものです。


かっこで囲まれた文字列は、それぞれ独立して評価することができます。それぞれの内容は以下のとおりです。
(許可 (A)/拒否 (D);;アクセス許可の文字列;;;SID またはビルトインのアカウントまたはグループの省略名)
アクセス許可の文字列に含まれている 2 つの文字の組み合わせは、ぞれぞれ特定の権限またはアクセス許可に対応しています。

組み合わせ
権限またはアクセス許可
CC
QueryConf
DC
ChangeConf
LC
QueryStat
SW
EnumDeps
RP
Start
WP
Stop
DT
Pause
LO
Interrogate
CR
UserDefined
GA
GenericAll
GX
GenericExecute
GW
GenericWrite
GR
GenericRead
SD
Del
RC
RCtl
WD
WDac
WO
WOwn

最も注意が必要なのは、ChangeConf (DC) のアクセス許可です。サービスに、特権を昇格させる攻撃に対する脆弱性が存在するかどうかを確認するには、ChangeConf のアクセス許可をチェックします。このアクセス許可が付与されていると、サービスの構成を変更して、サービスの開始時に実行されるバイナリ ファイルを追加することができます。また、WDac (WD) および WOwn (WO) のアクセス許可についても十分に注意する必要があります。これらのアクセス許可を使用すると、アクセス許可を LocalSystem に昇格することが可能です。これらの権限が、低レベルのアクセス許可しか持たないユーザーに付与されることがないように、注意します。この表は、SDDL 構文でアクセス許可が付与されるユーザーの種類を特定するためのコードの一覧です。

コード
ユーザーの種類
DA
Domain Admins
DG
Domain Guests
DU
Domain Users
ED
Enterprise Domain Controllers
DD
Domain Controllers
DC
Domain Computers
BA
ビルトイン (ローカル) の Administrators
BG
ビルトイン (ローカル) の Guests
BU
ビルトイン (ローカル) の Users
LA
ローカルの Administrator アカウント
LG
ローカルの Guest アカウント
AO
Account Operators
BO
Backup Operators
PO
Print Operators
SO
Server Operators
AU
Authenticated Users
PS
Personal Self
CO
Creator Owner
CG
Creator Group
SY
Local System
PU
Power Users
WD
Everyone (World)
RE
Replicator
IU
対話型ログオン ユーザー
NU
Network Logon User
SU
Service Logon User
RC
制限されたコード
WR
書き込みが制限されたコード
AN
Anonymous Logon
SA
Schema Admins
CA
証明書サービスの管理者
RS
リモート アクセス サーバー グループ
EA
Enterprise Admins
PA
グループ ポリシーの管理者
RU
Windows 2000 以前を許可するためのエイリアス
LS
Local Service アカウント (サービス用)
NS
Network Service アカウント (サービス用)
RD
Remote Desktop Users (ターミナル サービス用)
NO
Network Configuration Operators
MU
Performance Monitor Users
LU
Performance Log Users
IS
匿名のインターネット ユーザー
CY
暗号化オペレータ
OW
所有者の権限の SID
RM
RMS サービス

SDDL 形式の DACL 文字列の解釈

ここでは、この資料の前半に記載されている DACL 文字列の例を解釈する方法について説明します。各アクセス制御エントリ (ACE) ごとに解釈の仕方を説明します。
  • (A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)


    このアクセス制御エントリ (ACE) では、LocalSystem (SY) に以下の権限を付与しています。
    • QueryConf
    • ChangeConf
    • QueryStat
    • EnumDeps
    • Start
    • Stop
    • Pause
    • Interrogate
    • UserDefined
    • Delete
    • RCtl
    • WDac
    • WOwn
    このアクセス制御エントリ (ACE) は LocalSystem のみに制限されています。LocalSystem のセキュリティ コンテキストはもともと、ワークステーション上で最も強力であるため、これはセキュリティ上、適切な設定です。このため、特権が昇格されるおそれはありません。
  • (A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)


    このアクセス制御エントリ (ACE) は、ビルトイン (ローカル) の Administrators (BA) に適用されます。この ACE では、前の ACE と同じ権限が、ローカルのすべての Administrators に付与されます。ローカルの Administrators のセキュリティ コンテキストも、ワークステーションの中で非常に強力です。このため、この場合も、特権が昇格されるおそれはありません。
  • (A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;AU)


    このアクセス制御エントリ (ACE) では、前に記載されているのとまったく同じ権限が、すべての Authenticated Users (AU) に付与されます。
最後のアクセス制御エントリ (ACE) では、認証された任意のユーザーなど、低レベルの権限しか持たないグループのユーザーが、サービスの構成を変更することが可能です。構成には、サービスの起動時に実行されるバイナリ ファイルおよびサービスが実行されるアカウントが含まれます。


次の DACL の例では、Authenticated Users には ChangeConf の権限を付与していません。
(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPLOCRRC;;;PU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SO)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;DT;;;LS)(A;;DT;;;NS)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;NO)

この DACL では、Authenticated Users (AU) には以下の権限のみが付与されます。
  • QueryConf
  • QueryStat
  • EnumDeps
  • Interrogate
  • UserDefined
  • RCtl
このように権限が付与されている Authenticated Users グループでは、特権の昇格が発生する危険性はありません。Power Users (PU) グループは、もともと LocalSystem への昇格が可能であるため、特権の昇格の危険性について考慮する必要はありません。この例では、Power Users グループにサービスの開始の権限 (RP) が付与されている点を除いて、Power Users グループには、Authenticated Users グループとまったく同じ権限が付与されています。ローカルの Administrators (BA) グループがその次です。このグループおよびその次のグループ (Server Operators (SO)) には、どちらも ChangeConf、WDac および WOwn のアクセス許可が付与されています。ローカルの Administrators グループおよび Server Operators グループには通常、信頼性の高いユーザーのみが含まれているため、この設定でも問題ありません。


LocalSystem (SY) グループには、Power Users グループと同じアクセス許可が付与されていますが、Stop と Pause のアクセス許可も付与されています。この設定もおおむね問題ありません。次の 2 つの短いアクセス制御エントリ (ACE) では、Local Service アカウントおよび Network Service アカウントにサービスを停止するためのアクセス許可 (Pause) が付与されています。Local Service および Network Service はどちらも強力な権限を持つローカルのアカウントであるため、この設定もおおむね問題ありません。


しかし、Network Configuration Operators (NO) グループに、ChangeConf のアクセス許可が付与されています。Network Configuration Operators グループは Windows XP で導入されたグループであり、信頼されているユーザーが、完全な管理者のアクセス許可を持っていなくてもネットワーク設定を変更できるようにするためのものです。デフォルトでは、Network Configuration Operators グループには何も設定されていません。このグループは、必要に応じて、特定のユーザーにネットワークを構成するのに必要なアクセス許可を付与するために使用します。たとえば、ポータブル コンピュータの所有者にこのアクセス許可を付与する場合が考えられます。Network Configuration Operators グループのユーザーは、通常、そのコンピュータを物理的に制御しているユーザーです。ただし、このグループの目的は、物理的に管理しているユーザーに完全な管理者のアクセス許可を付与しないようにすることです。このため、このサービス DACL では、Network Configuration Operators グループには ChangeConf のアクセス許可を付与しないようにする必要があります。

推奨事項

サービスの DACL は、特定の種類のアクセス許可が必要なユーザーのみに限定します。以下の権限については、特に注意してください。低レベルの権限しか持たないユーザーまたはグループに以下の権限を付与すると、その権限を使用して、コンピュータの LocalSystem への特権の昇格が行われる可能性があります。
  • ChangeConf (DC)
  • WDac (WD)
  • WOwn (WO)
アクセスの権限およびアクセス許可の関連情報については、以下のマイクロソフト Web サイトを参照してください。