EternalWindows
セキュリティコンテキスト / 規則の設定

プロセスを制限して実行するという考え方は、 Windows Vistaから登場したUACに始まったことではありません。 先駆けとなったのは、Windows XPから登場したソフトウェア制限ポリシーであり、 これは任意のファイルやレジストキーに対して制限を行うメカニズムです。 ソフトウェア制限ポリシーにおける制限では、 UACのような降格したセキュリティコンテキストでコードを実行するだけでなく、 ファイルの実行自体を禁止することもできるので、 UACが登場した現在でも依然として有用です。

ソフトウェア制限ポリシーにおけるポリシーとは、規則を有効にするための条件のことです。 規則とは、どのような場合にファイルの実行を制限するのかを表すもので、 次の4つの規則が定義されています。

規則 意味
パス パスベースの制限を行う。 たとえば、c:\sample.exeに対してパスの規則を追加したのであれば、 c:\sample.exeの実行が制限されることになる。 ただし、このファイルが移動したり名前が変更されたりした場合は、制限は行われない。 つまり、sample.exeというファイルに対して制限を行うわけではない。 パスの規則では、レジストリキーを指定することもできる。
ハッシュ この規則が設定されたファイルは、ファイルのハッシュ値が外部に保存される。 何らかのファイルが実行される場合は、保存されているハッシュ値と比較が行われ、 一致している場合はファイルが同一であると判断して制限される。 この規則はパスの規則と比べると強力だが、決して完全なものではない。 たとえば、ファイルのバイナリデータの1バイトでも変更すれば、 そのファイルのハッシュ値は変化するからである。
証明書 指定した証明書を含むファイルの実行を禁止する。 証明書は署名という形でファイルに含まれるため、 この規則で追加された証明書で署名されたファイルは、実行に失敗する。
ネットワークゾーン 特定のゾーンからWindows Installerによってインストールされたファイルの実行を制限する。

このような規則が設定されている場合、ファイルの実行時にそれらが調べられます。 たとえば、パスという規則であれば、そこに設定したパスと実行しようとしているファイルのパスを比較します。 一致している場合、ファイルの実行は制限されることになり、 実行禁止の場合であれば、次のようなダイアログが表示されることになります。

ソフトウェア制限ポリシーを設定するには、管理ツールの「ローカル セキュリティ ポリシー」を利用することになります。 ただし、Windows XP Homeにはこれは含まれていないため、注意する必要があります。 ローカル セキュリティ ポリシーを起動すると次のようなウインドウが表示されます。

ソフトウェア制限ポリシーの「追加の規則」の上で右クリックメニューを表示すると、 各種規則の設定が可能になります。 パスの規則を設定するダイアログは次のようになります。

「参照」ボタンを押せば、ファイルを選択するダイアログが表示されるため、 そこで制限したいファイルを選択することになります。 セキュリティレベルは、制限の程度を表すものであり、 「許可しない」を設定した場合はファイルを実行することはできません。 一方、「基本ユーザー」の場合は、AdministratorsのSIDが無効になった状態で ファイルが実行されることになります。 「制限しない」というレベルもありますが、これを設定するのであれば、 そもそも規則を追加する必要はないと思われます。 説明文については、不要である場合は空白の状態で問題ありません。 ハッシュの規則についても同じ要領となります。

証明書の規則では、証明書を選択することになります。 これにより、この証明書を署名として含んだファイルは実行することができなくなります。 署名されたファイルはデジタル署名というプロパティを持ちますが、 規制が適応される場合は、次のように表示されます。

署名に含まれる証明書の発行先名が規制されている場合、 上記のような破棄された旨が表示されることになり、 ファイルの実行に失敗することになります。 なお、証明書の規則を追加した場合は、 次のレジストリキーが更新されることになっています。

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\SystemCertificates\Disallowed

証明書の規則を追加しても、それを適用しなければ意味をもたないことに注意してください。 これは、ローカル セキュリティ ポリシーの[強制」プロパティから行います。


戻る