Windows Server 2003のグループ・ポリシー新機能(前編) 続き


△ 図をクリックすると拡大されます
図8●[ソフトウエアの制限のポリシー]の[追加の規則]で[新しいパスの規則]を選択する

パス規則によるアプリケーションの制限
 ハッシュ規則を使用すれば,あらかじめ存在することが分かっているプログラムは禁止できる。しかし,管理者が知らないプログラムに関しては,事前に制限をかけることはできない。ウイルス対策などにより,VBScriptの動作を一切禁止したい場合などは,パス規則を利用するとよい。

 パス規則は,ファイルのパスでソフトウエアを識別する。この種類の規則に対する共通のパスには,%userprofile%,%windir%,%appdata%,%programfiles%,および%temp%などの環境変数や,ワイルド・カードを使用できる。また,ソフトウエアのレジストリ・キーをパスとして使用する,レジストリのパス規則を作成することも可能だ。


△ 図をクリックすると拡大されます
図9●[新しいパスの規則]でvbsファイルを[許可しない]に設定する

 では,すべてのVBScriptを禁止するパスの規則を作成してみよう。ここでは,「ハッシュ規則によるソフトウエアの制限」の手順で作成したSoftware Restriction Policyに,新しいパス規則を追加する。

(1)Software Restriction Policyポリシーへのリンクを右クリックし,現れたメニューから[編集]を選択して,グループ・ポリシー・オブジェクト・エディタを起動する。
(2)同エディタの左ペインで[ユーザーの構成]-[Windowsの設定]-[セキュリティの設定]-[ソフトウエアの制限のポリシー]-[追加の規則]と選択する。[追加の規則]を右クリックして現れたメニューから[新しいパスの規則]を選択する(図8)。
(3)[新しいパスの規則]ダイアログ画面で,パスの欄に「*.vbs」と入力し,セキュリティ・レベルが[許可しない]になっていることを確認して[OK]ボタンをクリックする(図9)。


△ 図をクリックすると拡大されます
図10●VBScriptファイルが実行できなくなった

 Temp1ユーザーでVBScriptファイルを実行してみると,以下のようなメッセージが表示され,実行できなかった(図10)。

ソフトウエアの制限のポリシー規則の優先順位
 上記の手順を実行すると,*.vbsという拡張子を持つファイルはすべて実行できない。これでは必要なVBScriptが使えなくなってしまうので,一部の動作が確認されているVBScriptだけを実行できるようにしたい。

 これを実現するには,同じソフトウエアに複数の「ソフトウエアの制限のポリシー」を適用すると,優先順位に従って規則が適用されるという性質を利用する。この規則を適用する優先順位は,高いものから示すと次のようになる。
(1)ハッシュ規則
(2)証明書規則
(3)パス規則
(4)インターネット・ゾーン規則

 この優先順位によると,ハッシュ規則はパス規則より優先される。例えば,あるパス規則を作成し,セキュリティ・レベルを[許可しない]設定にしても,そのパス規則のフォルダ内に常駐するソフトウエアに対して,セキュリティ・レベルを[制限しない]に設定したハッシュ規則を作成すると,そのプログラムは実行が可能になる。

証明書の規則の作成による許可
 証明書規則もパス規則より優先される。それでは,パス規則が設定されている状態で,許可したいVBScriptにデジタル署名を設定し,証明書規則を作成して,そのVBScriptだけを許可してみよう。


△ 図をクリックすると拡大されます
図11●デジタル証明書の規則を有効にする設定

 既定では証明書規則は有効になっていない。グループ・ポリシー・オブジェクト・エディタの左ペインで[コンピュータの構成]-[Windowsの設定]-[セキュリティの設定]-[ローカルポリシー]-[セキュリティ・オプション]と選択する。そして右ペインで[システム設定:ソフトウエア制限のポリシーのためにWindows実行可能ファイルに対して証明書の規則を使用する]をダブル・クリックしてプロパティ画面を開き,[このポリシー設定を定義する]にチェックを入れ,[有効]をクリックして閉じる(図11)。

 次に,デジタル署名を設定するための証明書を取得する。ここでは,Windows Server 2003をエンタプライズCA(認証局)とし,コード署名用の証明書を取得した。そして,.NET Framework SDKに付属するsigncode.exeを利用して,「Good.vbs」という名前のVBScriptにデジタル署名を添付している。


△ 図をクリックすると拡大されます
図12●ファイルに対してデジタル証明書を取得する

 では,Software Restriction Policyに,新しい証明書の規則を追加してみよう。
(1)Software Restriction Policyポリシーへのリンクを右クリックし,現れたメニューから[編集]を選択して,グループ・ポリシーオブジェクトエディタを起動する。
(2)同エディタの左ペインで,[ユーザーの構成]-[Windowsの設定]-[セキュリティの設定]-[ソフトウエアの制限のポリシー]-[追加の規則]と選択する。[追加の規則]を右クリックして現れたメニューで[新しい証明書の規則]を選択する。
(3)[新しい証明書の規則]画面で,[参照]ボタンをクリックすると,ファイルを開くダイアログ画面が現れるので,そこで署名された「Good.vbs」を選択して閉じる。再び[新しい証明書の規則]画面で,[セュリティレベル]を[制限しない]に変更し,[OK]ボタンをクリックする(図12)。


△ 図をクリックすると拡大されます
図13●デジタル証明書を取得しているスクリプトと取得していないスクリプトの振る舞い

 今回は署名されたファイルを選択するが,証明書を選択してその証明書で署名されたファイルすべてに対してルールを付けるのも簡単だ。実際の結果は画面のようになる(図13)。

 署名されていない「Bad.vbs」を実行すると,ソフトウエアの制限のポリシーにより実行が拒否される。しかし,署名されている「Good.vbs」は実行できる(ここでは,Good.vbsを実行すると「このファイルは署名されています。」というメッセージを出すようにしている)。もちろん,Good.vbsを編集してしまうと,デジタル署名と一致しなくなるため,Bad.vbsと同様に実行できない。

 このように,ソフトウエアの制限のポリシーを使用することで,信頼されていないプログラムからクライアント・マシンを保護できる。最近は,インターネットや電子メール経由で送られてきた悪意のあるプログラムを誤って実行してしまうことも多い。例えば,電子メールを通じてウイルスに感染するのが心配な場合,電子メール添付ファイルのディレクトリ内で,特定の種類のファイルの実行を許可しないポリシー設定を行うのも,非常に効果的である。