ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

Windows Server 2008 で Windows XP のUSBリムーバブルストレージの使用を禁止するグループポリシーを実現するためにグループポリシー管理用テンプレートを作り適用する

leave a comment »

Active Directoryとグループポリシーはクライアントコンピュータを効果的に管理する強力なツールである。業務コンピュータをWindows ServerとWindowsクライアントで構成する理由の半分はActive Directoryとグループポリシーにあると言っても過言ではないはずだ。

Windows ServerのActive DirectoryとグループポリシーはWindows 2000 ServerからWindows Server 2003、Windows Server 2008と進化してきた。当然ながらWindows XP、Windows Vista、Windows 7と新しいクライアントに対応したグループポリシーが充実したが、残念ながらWindows XPを対象外とするポリシーも増えてきた。

データ漏洩の危険性、あるいはUSBメモリを介して広がるウィルスの蔓延といったセキュリティ上の観点から、クライアントコンピュータのUSB大容量ストレージの使用を禁止したいと多くの管理者は思っているはずだ。Windows Server 2008のグループポリシーでは「リムーバブル記憶領域へのアクセス」に関する多くのポリシーが用意されている。たとえば「リムーバブルディスク:実行アクセス権の拒否」といったものだ。しかしこれらのポリシーの多くはWindows Vista以降が対象である。

Group_Policy_USB_003

<Fig.1 : グループポリシー管理エディターでの「リムーバブル領域へのアクセス」グループポリシー>

Group_Policy_USB_005

<Fig.2 : 「リムーバブルディスク:読み取りアクセス権の拒否」ポリシーはWindows Vista以降が対象>

ではWindows Server 2008のグループポリシーでWindows XPのUSBリムーバブルディスクの使用禁止を管理できないのかといえば、そうではない。従来からの方法として、グループポリシー管理テンプレートを作って適用する方法がある。

そもそもWindowsクライアントコンピュータの挙動は、Windows XP以降は「レジストリ」によって基本的に一元管理されることとなった。したがってレジストリを書き換えることで、Windowsコンピュータの挙動を管理することができる。グループポリシーとは、サーバー側で一括してクライアントコンピュータのレジストリを管理することだ、と言い換えてもいい。グループポリシー管理テンプレートは、クライアントコンピュータのレジストリとグループポリシーを結びつけカスタマイズするものである。

まずWindows XPのレジストリからみて、USBリムーバブルディスクの使用を禁止するにはどうすればよいか。これは多くの技術資料がWebでも手に入り、コンピューターに USB 記憶装置がインストールされている場合は、次のレジストリ キーにある Start 値を 4 に設定するとよい。この値を4にすると、ユーザーがコンピューターに USB 記憶装置を接続しても、その記憶装置は動作しなくなる。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsbStor

では実際にレジストリの値がどうなっているか見てみよう。レジストリの値を見るには、クライアントコンピュータに管理者権限のあるアカウントでログオンし、「ファイル名を指定して実行」でRegeditコマンドによりレジストリエディタを実行する。

USB_Regedit_001

<Fig 3 : クライアントPCでRegeditを実行しレジストリの値を確認する>

このように「USBStor」の「Start」値が「3」になっていることがわかる。

ではこの値を4に変えることができるグループポリシー管理テンプレートを作ってみよう。グループポリシー管理テンプレートはテキストファイルなので「メモ帳」などで作ることができる。メモ帳で次のようなファイルを作り、適当な名前で保存する。保存は拡張子.admとする。

—————————————————————-

CLASS MACHINE
CATEGORY !!categorytext
CATEGORY !!subcategorytext

POLICY !!policytext
KEYNAME "SYSTEM\CurrentControlSet\Services\USBSTOR"
EXPLAIN !!explaintext
PART !!label DROPDOWNLIST REQUIRED
VALUENAME "Start"
ITEMLIST
NAME !!Disabled VALUE NUMERIC 3 DEFAULT
NAME !!Enabled VALUE NUMERIC 4
END ITEMLIST
END PART
END POLICY
END CATEGORY
END CATEGORY

[strings]
categorytext="管理テンプレートによるポリシー"
subcategorytext="リムーバブルドライブの使用制限"
policytext="USBリムーバブルドライブの使用禁止"
explaintext="usbstor.sysドライバーを無効にしてUSBリムーバブルドライブを使用できないようにします"
label="USBリムーバブルドライブの使用禁止"
Enabled="有効(使用禁止)"
Disabled="無効(使用可)"

—————————————————————-

このグループポリシーテンプレートはMicrosoftの英文の技術資料「Using Administrative Template Files with Registry-Based Group Policy Subscribe regpolicy」を見て書いたものだが、記述方法を少し説明すると、まず「CLASS MACHINE」でポリシーの対象がMACHINEポリシーであることを指定する。そしてCATEGORY – END CATEGORYでカテゴリを指定する。この例では2階層のカテゴリを指定している。POLICY – END POLICYでポリシーの名前、対照レジストリ値、説明文などを決める。さらにPARTとITEMLISTでレジストリ値を設定できるようにする。最後の[strings]以降は、説明文など文字列のエイリアスを記述するところだ。

KEYNAMEで対象のレジストリキーを記述し、VALUENAMEでStart値を指定、キーの値はNAME !!Disabled VALUE NUMERIC 3 DEFAULTでデフォルトで値3によって「無効」つまり制限がなくUSBリムーバブルドライブが使用できる、NAME !!Enabled VALUE NUMERIC 4で「有効」つまりUSBリムーバブルドライブの使用が禁止されることになる。「有効」、「無効」という言葉は、「使用を禁止する」というポリシーに対する言葉である。

ちなみにこの技術資料の例では、テキスト部分を[strings]に書き出す書式になっているが、これは直接文字を""で囲って記述してもいい。たとえば次のようにだ。

—————————————————————-

CLASS MACHINE
CATEGORY "管理テンプレートによるポリシー"
CATEGORY "リムーバブルドライブの使用制限"

POLICY "USBリムーバブルドライブの使用禁止"
KEYNAME "SYSTEM\CurrentControlSet\Services\USBSTOR"
EXPLAIN "ドライバーを無効にして使用できないようにします"
PART "USBリムーバブルドライブの使用禁止" DROPDOWNLIST REQUIRED
VALUENAME "Start"
ITEMLIST
NAME "無効(使用可)" VALUE NUMERIC 3 DEFAULT
NAME "有効(使用禁止)" VALUE NUMERIC 4
END ITEMLIST
END PART
END POLICY
END CATEGORY
END CATEGORY

—————————————————————-

このグループポリシー管理テンプレートを読み込むには、適当な新しいグループポリシーを作り、「管理用テンプレート」をポイントして右クリック「テンプレートの追加と削除」を行う。

GroupPolicyTemplate_004_edit

<Fig.4 : グループポリシーテンプレートの追加と削除>

GroupPolicyTemplate_006_edit

<Fig.5 : グループポリシー管理テンプレートのファイルを開く>

GroupPolicyTemplate_011_edit

<Fig.6 : グループポリシー管理テンプレートを追加した>

GroupPolicyTemplate_012

<Fig.6 : グループポリシー管理エディターで「従来の管理用テンプレート」が表示された>

作成したグループポリシー管理テンプレートを読み込むと、上図のように「管理用テンプレート」の下に「従来の管理用テンプレート」の項目が表示される。この中に作成したポリシーが記述されている。フォルダを展開すると次のようになっているはずだ。

GroupPolicyTemplate_013

<Fig.7 : グループポリシー管理エディタで「従来の管理用テンプレート」項目を展開した>

「従来の管理用テンプレート」-「管理用テンプレートによるポリシー」-「リムーバブルドライブの使用制限」のカテゴリは、インポートした管理用テンプレートに記述した項目である。そしてその中に「USBリムーバブルドライブの使用禁止」ポリシーができていることがわかる。このポリシーを開くと、次のようになる。作成したグループポリシー管理テンプレートの記述したテキストと、このグループポリシー管理エディター上の表示を比べるとよいだろう。

GroupPolicyTemplate_016

<Fig.8 : グループポリシー管理テンプレートの追加によってできて「USBリムーバブルドライブの使用禁止」ポリシー>

「無効(使用可)」となっているオプションを「有効(使用禁止)」にして「適用」しよう。

GroupPolicyTemplate_017

<Fig.9 : 「USBリムーバブルドライブの使用禁止」ポリシーを「有効(使用禁止)」にした>

対象のWindows XPクライアントコンピュータをこのグループポリシーを設定したOUに入れ、グループポリシーを強制的に適用してみよう。グループポリシーの強制的な適用は、コマンドラインでgpupdate /forceコマンドを実行する。

USB_Regedit_002

<Fig.10 : Windows XPクライアントのコマンドラインでgpupdate /forceを実行した>

そしてレジストリエディタregeditで「表示」-「最新の情報に更新」でレジストリの値を確認する。

USB_Regedit_003_edit

<Fig.11 : レジストリエディタで表示を最新の情報に更新する>

USB_Regedit_004

<Fig.12 : レジストリStart値が3から4に変わった>

レジストリの値が3から4に変わったことが確認できた。

このように、グループポリシー管理用テンプレートを自作し、追加することで任意のレジストリ値をグループポリシーによって管理することができる。したがってクライアントコンピュータのどのレジストリ値をどう変えるとよいかがわかれば、Active Directoryによって一元管理することができる。このレジストリとグループポリシーの関係は、Windows XPだけでなくWindopws VistaやWindows 7でも同様である。グループポリシー管理テンプレートを自作し、グループポリシーをカスタマイズしてうまくクライアントコンピュータを管理しよう。

もしこのやり方でうまくいかない場合は、Active Directoryの構成が間違っていないか、あるいはグループポリシーの作り方が間違っていないか確認しよう。グループポリシーは階層構造に適用されるので、より上位で別のポリシーが効いていれば適用されない場合がある。自分の作ったグループポリシー管理用テンプレートの挙動を確認するためには、既存のポリシー追加するのではなく、まずは新しいポリシーを作って試すことを奨める。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。