Windows 7とWindows Server 2008 R2の新機能「AppLocker」を試す


 Windows 7とWindows Server 2008 R2には、アプリケーションの動作をコントロールする「AppLocker」という機能が搭載されている。このAppLockerは、Windows Vistaで搭載されていたアプリケーション制御ポリシーを大幅に機能強化し、使いやすくしたモノだ。

 AppLockerを利用すれば、Active Directoryで指定したアプリケーションだけをクライアントPCで動かすことができる。また、アプリケーションのインストーラー自体を動作できなくしたり、登録されていないアプリケーションは起動できない。これなら、コンプライアンス上問題となるWinnyなどのP2Pソフトの動作を停止させて、クライアントPCをきちんと管理することが可能だ。これを使えば、ユーザーが勝手にアプリケーションをインストールするなどして、マルウェアに感染することもない。


Windows 7 Enterpriseでは、これらの分野の機能強化が行われているAppLockerは、アプリケーションが起動できるかどうかのコントロールをActive Directoryのグループポリシーで集中的に管理するAppLockerによるアプリケーションの制御

AppLockerの動作ルール

 AppLockerでは、実行ファイル(exe、com)、スクリプトファイル(ps1、bat、cmd、vbs、js)、Windowsインストーラファイル(msi、msp)、DLLファイル(dll、ocxファイル)などの実行をコントロールしている。

 AppLockerは、Active Directoryのグループポリシーを利用して、動作するアプリケーションをコントロールしている。このため、Active DirectoryのOU(部署)などを利用すれば、ユーザーや部門別に、動作できるアプリケーションを設定できる。

 AppLockerで、アプリケーションの動作をコントロールするキーとしては、アプリケーションに付与されているパス(フォルダ)、電子署名、ハッシュ値の3種類が用意されている。

 パス(フォルダ)は、プログラムファイルが保存されているパスを直接指定してアプリケーションをコントロールするもの。これを利用すれば、指定したフォルダ以下に保存されているアプリケーションすべてに許可/拒否を出すことができる。例えば、Program Filesフォルダ以下に保存されているアプリケーションだけを起動できるようにするといった使い方が可能だ。

 電子署名は、AppLockerで最も多く利用されるものだろう。Windowsのアプリケーションは、電子署名を付与することができ、これによりアプリケーション自体の正当性を証明している。AppLockerでは、電子署名の発行元、製品名、ファイル名、ファイルのバージョンの4つの項目をキーとしてアプリケーションのコントロールで利用できる。すべての項目を満たさないと動作しないようにもできるし、発行元、製品名だけ満たせば、動作するようにもできる。また、ファイルバージョンは、指定のバージョン以上/以下、対象バージョンといった設定も行える。

 ハッシュ値は、アプリケーションに電子署名がされていない場合に利用するもの。アプリケーション(exeファイルなど)を分析して、ハッシュ値を作成し、このハッシュ値をキーとして、アプリケーションを区別することができる。ただし、多くのアプリケーションの動作コントロールでハッシュ値を利用すると、CPUに負荷がかかり、システムの動作が遅くなってしまう。これは、ハッシュ値のチェックなどでCPUに負荷がかかるためだ。多くのアプリケーションをハッシュ値でチェックすることになると、パフォーマンスに影響する。ハッシュ値をキーにしたコントロールは、最後の手段として、できるだけ電子署名を利用した方がいいだろう。

 また、AppLockerには、監査モードというものが用意されている。これは、動作するアプリケーションのルールの指定は同様だが、アプリケーションの動作を禁止せず、ログにアプリケーションの情報を記録するモードだ。

 監査モードを利用すれば、アプリケーションの監査を完全に行うまでの移行時期を作ることができる。AppLockerのルールは指定しておき、監査モードを設定している期間に、指定外のアプリケーションをインストールしたり、動作させないような教育を行うことができる。また、ログを見れば、ユーザーがどういったアプリケーションを動かしているのかなどをチェックすることもできる。そのほか、多くのユーザーが起動する社内開発のアプリケーションに電子署名がないと分かれば、監査モードで移行期間を作っている間に、アプリケーションに電子署名を付与するようにもできる。このようにして、AppLockerを使って、アプリケーションの動作を制限するにしても、スムーズな移行を行うことが可能だ。


AppLockerの設定方法

 AppLockerを利用するには、Active Directory環境が必要になる。今回は、テストということで、Windows Server 2008 R2のActive Directory環境とWindows 7を仮想環境上に構築した。もし、AppLockerの動作だけが知りたいというなら、Windows 7のローカルのグループポリシーで試すこともできる。

 AppLockerには、「実行可能ファイルの規則」「Windowsインストーラの規則」「スクリプトの規則」の3つのルールが用意されている。実行可能ファイルの規則は、comやexeなどのプログラムのコントロールを行うもの。Windowsインストーラの規則は、msiなどのプログラムのインストールを行うファイルのコントロールを行うもの。スクリプトの規則は、vbsやbatファイルなどのスクリプトファイルの動作をコントロールする。今回は実行可能ファイルの規則の使い方を紹介する。


クライアントPCのWindows 7。「enterprisewatch.com」というドメインに参加済みAppLockerの対象として、yamamotoというユーザーを作成「WINDOWS7」のコンピュータ名でドメイン

まずはAppLocker用のグループポリシーオブジェクトを作成する。サーバーマネージャーの[機能] - [グループポリシーの管理] - [フォレスト:enterprisewatch.com] - [enterprisewatch.com] - [グループポリシーオブジェクト]を右クリックし、[新規]をクリック「AppLocker」という名前をつけて[OK]をクリックする作成したAppLockerをクリックし、右側に表示された「セキュリティフィルター処理」に対象となるコンピュータを登録する。「セキュリティフィルター処理」にある[追加]ボタンをクリック

コンピュータ名を入力し、[OK]をクリックする「セキュリティフィルター処理」にコンピュータが登録されたのがわかる次にこのグループポリシーオブジェクトにリンクを設定する。[enterprisewatch.com]を右クリックし、[既存のGPOのリンク]をクリックする

[AppLocker]を選択し、[OK]をクリックする次は、作成したAppLockerの編集画面に切り替える。[AppLocker]を右クリックし、[編集]をクリックする[AppLocker]のグループポリシー管理エディターが起動。AppLockerをクライアントPC側で有効にするための設定を行う。[コンピューターの構成] - [Windowsの設定] - [セキュリティの設定] - [システムサービス]をクリックし、右側に表示された[Application Identity]をダブルクリックする

[このポリシーの設定を定義する]をオンにし、[自動]を選択して[OK]をクリックするここから先がAppLockerの具体的な設定になる。[コンピューターの構成] - [Windowsの設定] - [セキュリティの設定] - [アプリケーション制御ポリシー] - [AppLocker] - [実行可能ファイルの規則]を右クリックし、[新しい規則の作成]をクリックするダイアログボックスが表示されるので、[次へ]をクリックする

[Action]は[拒否]を、[ユーザーまたはグループ]は[yamamoto]を選択し、[次へ]をクリックする[発行元]を選択し、[次へ]をクリックする[参照]をクリックする

ここでAppLockerで規則を設定するアプリケーションのexeファイルを選択。今回はProgram Filesフォルダにある[Internet Explorer]からiexplore.exe(Internet Explorerの実行ファイル)を選択し、[開く]をクリックする今回は細かな設定を行わないので、[作成をクリックする拒否の設定だけを行ったため、既定の規則が用意されていない旨のメッセージが表示される。[はい]をクリックして、既定の規則を作成する

次にAppLockerで設定した規則を有効にする。[AppLocker]を右クリックし、[プロパティ]をクリックする「実行可能ファイルの規則」の[構成済み]をオンにする。[構成済み]の下に[規則の実施]となっているのを確認してから[OK]をクリックする。これでAppLockerの設定はすべて終了グループポリシーの設定をすぐに反映されるよう、コマンドプロンプトを起動し、「gpupdate /force」を実行する

クライアントPCのWindows 7でコマンドプロンプトを起動。サーバー側と同様に「gpupdate /force」を実行し、最新のグループポリシーを反映するInternet Explorerを起動しようとすると、グループポリシーでブロックされているとメッセージが表示され、アプリケーションは起動されなくなっているのがわかる

 今回は細かな設定は行っていないが、電子署名をキーとした場合、電子署名の内容にあわせて、細かく動作状況を設定できる。例えば、IE7以上を動作させるルールにしたり、特定のバージョンだけ動作できるようにすることもできる。電子署名をキーとすれば、非常に柔軟性の高いセキュリティを構築できる。

 また、「規則の自動生成」という項目がAppLockerには用意されている。この機能を利用すれば、例えば、Program Filesフォルダ以下に存在するアプリケーションを分析し、自動的にルールを作成することができる。この規則の自動生成は、Active Directoryが動作しているサーバー上のフォルダを参照している。そのため、クライアントPC上のフォルダを参照して規則を自動生成したいときは、参照したいフォルダに共有設定を行うなどして、サーバーからアクセスできるようにする必要がある。また、この場合、電子署名でルールを作成しておこう。パスによるルールを作成すると、サーバーが参照しているパスがルールに設定されるため、正しく動作しないおそれがあるためだ。また、自動作成で作ったルールを管理者が、手動で修正する必要がある。

 なお、Active Directoryでは、デフォルトでグループポリシーの反映に少し時間を空ける設定となっているので注意が必要だ。手順の中でも紹介しているが、テスト時はクライアントPCとサーバー側でグループポリシーのアップデートを行うコマンド(gpupdate /force)を毎回確実に実行したほうがいいだろう。あるいは、Active Directoryのグループポリシーの反映タイミングを短くするといった使い方もある。これを行わないと、グループポリシーを変更しても、クライアントPC側にすぐに反映されないため、動作しないはずが動作したり、うまく動かなかったりするのでテストする際は気をつけよう。


AppLocker利用時の注意点

 AppLockerでは、フォルダごとやアプリケーションごとに、許可か、拒否かを選択できる。しかし、AppLockerだけで完全なセキュリティが実現できるわけではない。例えば、Program Filesフォルダ以下にあるアプリケーションに対して許可を出していたとき、ユーザーがProgram Filesフォルダ内に新たなフォルダを作り、アプリケーションをコピーすれば、動作してしまう。

 この場合、ユーザーが勝手にProgram Filesフォルダにアプリケーションをコピーできないように、Active Directoryのグループポリシーできちんと設定する必要がある。AppLockerだけでセキュリティが保たれるわけではないということだ。

 実際テストしてみて分かったが、AppLockerを利用する場合、きちんとしたActive Director環境が構築されていることが重要だ。適当にActive DirectoryのグループやOU、ユーザー構成にしてしまうと、AppLockerは管理者の想定外の動作を実行することがある。テスト中に管理者にもAppLockerの制限がかかり、グループポリシー管理エディターが起動しなくなるなどのトラブルも発生してしまった。また、スクリプトなどの動作をすべて制限してしまうと、クライアントPCにユーザーがログオンしても、すぐにログアウトして、クライアントPCにアクセスできなくなるという事態も起きたりした。こういったことが起こらないよう、テスト環境でAppLockerを十二分にテストしてから、実環境に展開すべきだろう。



(山本 雅史)

2009/7/17/ 00:00