企業では、ユーザーに使わせるアプリケーションやそのバージョンを管理したい場合があります。サードパーティ製品でも管理できますが、Windows には標準で AppLocker という機能があり、グループポリシーで配布して管理できます。
この記事では、Active Directory 環境のグループポリシーを使い、Windows 10 端末に対して AppLocker を設定し、動作を確認します。グループポリシーについては、下記の記事を参考にしてください。
>> 参考記事:【Active Directory】グループポリシーの構成・適用・更新
- Application Identity サービスを GPO で自動起動にする
- Windows インストーラーの規則で、発行元・パス・ファイル ハッシュを条件に MSI の実行を制限する
- 「監査のみ」でブロックせずにログだけを取り、イベント ビューアーで確認する
検証では、GPO-AppLocker という GPO を作り、端末のコンピューター アカウントがある OU にリンクしています。制御するアプリケーションには、Firefox のインストーラー(バージョン 102.3.0esr と 105.0 の MSI)を使います。
AppLockerのしくみ
AppLocker は、ファイルを実行しようとしたときに規則を確認し、実行させるかどうかを決めます。規則が1つでもある規則のコレクション(後述)では、許可の規則に一致したファイルだけが実行でき、それ以外はブロックされます(図1)。ブロックせずに記録だけする「監査のみ」のモードもあります。
サービスの起動(Application Identity)
AppLocker の規則は、端末で Application Identity サービスが動いていないと適用されません。既定では、このサービスのスタートアップの種類は「手動(トリガー開始)」で、起動していません。
この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
GPOでサービスを自動起動にする
サービスのスタートアップの種類も GPO で変えられます。GPO-AppLocker のグループ ポリシー管理エディターで コンピューターの構成 ›› ポリシー ›› Windows の設定 ›› セキュリティの設定 ›› システム サービス を開き、Application Identity をダブルクリックします。
| 1このポリシーの設定を定義する | ☑ |
| 2サービスのスタートアップ モード | ◉ 自動○ 手動○ 無効 |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | このポリシーの設定を定義する | チェックを入れる |
| 2 | スタートアップ モード | 「自動」を選び、[適用][OK] |
端末で gpupdate を実行してポリシーを更新し、サービスの一覧で Application Identity が動いていることを確かめます。
| 名前 | 状態 | スタートアップの種類 |
|---|---|---|
| Application Identity(変更前) | 手動 (トリガー開始) | |
| 1Application Identity(gpupdate 後) | 実行中 | 自動 (トリガー開始) |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | 実行中/自動 | GPO が適用され、サービスが自動で起動するようになった |
AppLockerの構成
AppLocker は、グループ ポリシー管理エディターの コンピューターの構成 ›› ポリシー ›› Windows の設定 ›› セキュリティの設定 ›› アプリケーション制御ポリシー ›› AppLocker で設定します。規則は、対象のファイルの種類ごとに「規則のコレクション」に分かれています。
| 規則のコレクション | 対象のファイル |
|---|---|
| 実行可能ファイルの規則 | .exe、.com |
| Windows インストーラーの規則 | .msi、.msp、.mst |
| スクリプトの規則 | .ps1、.bat、.cmd、.vbs、.js |
| パッケージ アプリの規則 | .appx など(Microsoft Store アプリなどのパッケージ アプリとそのインストーラー) |
| DLL の規則 | .dll、.ocx(既定では無効。AppLocker のプロパティの[詳細設定]で有効にする) |
どのコレクションでも、規則に設定する内容は共通です。
| 設定 | 内容 |
|---|---|
| アクセス許可 | 「許可」か「拒否」かと、規則を適用するユーザーまたはグループ |
| 条件 | 対象のファイルを見分ける条件。発行元、パス、ファイル ハッシュのどれか |
| 例外 | 条件に一致しても、規則から外したいファイル |
ここからは「Windows インストーラーの規則」を例に、アクセス許可と条件の設定を確認します。
AppLockerのアクセス許可・条件設定
Windows インストーラーの規則 を右クリック ›› 新しい規則の作成 を選びます。「開始する前に」の画面で[次へ]を押すと、アクセス許可と条件の画面になります。
| 1操作 | ◉ 許可○ 拒否 |
| ユーザーまたはグループ | Everyone 選択… |
| 2条件の種類 | ◉ 発行元:ソフトウェア発行元によって署名されている場合 ○ パス:特定のファイルまたはフォルダーのパスに規則を作成する場合 ○ ファイル ハッシュ:署名されていないアプリケーションの規則を作成する場合 |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | アクセス許可 | 許可または拒否と、対象のユーザー・グループ。この記事では「許可」「Everyone」 |
| 2 | 条件 | 発行元、パス、ファイル ハッシュから選ぶ。それぞれの画面は次のとおり |
発行元
発行元の条件では、アプリケーションのデジタル署名から読み取った発行元、製品名、ファイル名、ファイルのバージョンを条件にします。[参照]で対象のファイルを選ぶと、値が読み込まれます。ここでは、Firefox 102.3.0esr のインストーラー(Firefox Setup 102.3.0esr.msi)を選びました。
| 参照ファイル | C:\Users\(伏せています)\Desktop\firefox\Firefox S… |
| 1発行元 | O=MOZILLA CORPORATION, L=MOUNTAIN VIEW, … |
| 製品名 | MOZILLA FIREFOX 102.3.0ESR X64 JA |
| ファイル名 | {1294A4C5-9977-480F-9497-C0EA1E630130} |
| ファイルのバージョン | 102.3.0.0 以上 |
| 2スライダー | 一番下(ファイルのバージョン)。規則のスコープ:このファイルの指定したバージョンにのみ適用します。 |
| 3カスタム値を使用する | ☐(チェックを入れると各値を編集できる) |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 発行元〜バージョン | 署名から読み込まれた値。MSI では、ファイル名の欄に {…} の形の値が入る |
| 2 | スライダー | どの項目まで条件に含めるか。上に動かすほど範囲が広くなり、一番上は「すべての発行元」 |
| 3 | カスタム値を使用する | 値を直接編集したいときにチェックする(製品名を * にする、など) |
パス
パスの条件では、ファイルやフォルダーのパスを指定し、そのパスにあるファイルの実行を許可・拒否します。フォルダーを指定した場合は、その下にあるすべてのファイルが対象になります。たとえば、AD-1 の共有フォルダー app の中のファイルを対象にするには、パスに \\ad-1\app\* と入力します。
ファイルハッシュ
ファイル ハッシュの条件では、指定したファイルのハッシュを条件にします。ファイルの中身が1ビットでも違えば一致しないので、発行元やパスより厳密に制限できます。署名されていないアプリケーションにも使えますが、アプリを更新するとハッシュが変わるため、そのたびに規則を作り直す必要があります。[ファイルの参照]または[フォルダーの参照]で対象を選びます。
以降の検証では、ユーザー・グループは制限せず(Everyone)、例外も設定せず、条件だけを変えて動作を確認します。
発行元を制限(発行元、製品名、ファイル名)
Firefox 102.3.0esr の発行元、製品名、ファイル名をもとに、実行を許可します。
発行元の規則を作る
発行元の画面で Firefox 102.3.0esr のインストーラーを指定し(図5)、[次へ]を押します。例外は設定せずに[次へ]、名前に任意の名前(ここでは「FIREFOXバージョン 102.3.0.0 以降」)を入れて[作成]を押します。
規則を作成すると、既定の規則を作るか確認されます。この検証では[いいえ]を押しました。
| 1現在、この規則のコレクションを表す規則一覧には既定の規則が含まれていません。規則を作成するときは、重要なシステム ファイルの実行が確実に許可されるように既定の規則も作成することをお勧めします。 既定の規則を今すぐ作成しますか? |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | 既定の規則 | 規則があるコレクションでは、許可されていないファイルはすべてブロックされる。既定の規則は、必要なファイルまで止めないための許可の規則 |
[いいえ]を選ぶと、このコレクションには作成した規則しかないので、Firefox 以外のすべての MSI も実行できなくなります。Windows インストーラーの既定の規則は、Administrators はすべての MSI を実行できる、Everyone はデジタル署名された MSI と %windir%\Installer の中の MSI を実行できる、という内容です。本番では既定の規則を作ったうえで、規則を足していくのが基本です。この検証では動きを見やすくするため、既定の規則を作っていません。
| 操作 | ユーザー | 名前 |
|---|---|---|
| 1 許可 | Everyone | FIREFOXバージョン 102.3.0.0 以降 |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | 許可(緑のチェック) | Everyone に許可する規則が登録された |
動作確認
端末で Firefox 102.3.0esr のインストーラーを実行すると、ユーザー アカウント制御の画面(確認済みの発行元:Mozilla Corporation)が表示され、実行できます。
一方、105.0 のインストーラーは実行できません。発行元だけでなく製品名やファイル名も条件にしているため、製品名が違う 105.0 は規則に一致せず、ブロックされます。
| 実行したファイル | Firefox Setup 105.0 |
| 1 エラー | システム管理者によって、ポリシーはこのインストールを実行できないように設定されています。 |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | エラー(赤の×) | AppLocker の規則に一致しなかったため、インストールが止められた。この記事のほかの検証でも、ブロックされたときは同じ表示になる |
発行元を制限(発行元)
105.0 のインストーラーも実行できるよう、発行元が MOZILLA のファイルならすべて許可するように変えます。
製品名とファイル名を * にする
作成した規則をダブルクリックしてプロパティを開き、[発行元]タブで製品名とファイル名に * を入れます。105.0 も対象にしたいので、バージョンは「以上」のままにします。[適用][OK]を押します。
| 発行元 | O=MOZILLA CORPORATION, L=MOUNTAIN VIEW, S=CALIFORNIA, C=US |
| 1製品名 | * |
| ファイル名 | * |
| 2ファイルのバージョン | 102.3.0.0 以上(選択肢:以上/以下/対象バージョン) |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 製品名・ファイル名 | * にすると、どの製品名・ファイル名でも一致する |
| 2 | バージョン | 「以上」なら 102.3.0.0 以上のバージョンが一致する |
動作確認
102.3.0esr も 105.0 も、ユーザー アカウント制御の画面が表示され、実行できます。
発行元を制限(バージョン指定)
102.3 はインストールしてよいが、105 はインストールさせたくない場合は、バージョンの条件を「以下」または「対象バージョン」にします。
バージョンを「対象バージョン」にする
ここでは 102.3 だけを許可する前提で、図9 のバージョンのプルダウンを「対象バージョン」に変えます。「以下」にすると、102.3.0.0 以下の古いバージョンも許可されます。
動作確認
102.3.0esr のインストーラーは実行できますが、105.0 のインストーラーは図8 と同じ表示でブロックされます。
共有フォルダのパスを指定
次は、共有フォルダー \\ad-1\app の中のファイルだけ実行を許可します。
パスの規則を作る
条件で「パス」を選び、パスに \\ad-1\app\* を入れて[次へ]を押します。名前は「APPインストール共有フォルダ」として作成しました。規則の一覧は、この規則だけになっています。
| 1パス | \\ad-1\app\* ファイルの参照… フォルダーの参照… |
| 操作 | ユーザー | 名前 |
|---|---|---|
| 2 許可 | Everyone | APPインストール共有フォルダ |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | パス | \\ad-1\app\*。共有フォルダー app の中のすべてのファイルが対象 |
| 2 | 規則の一覧 | パスの規則(許可、Everyone)が登録された |
動作確認
ローカル ディスク上の 102.3.0esr のインストーラーは、図8 と同じ表示でブロックされます。共有フォルダー(\\ad-1\app)にある 102.3.0esr のインストーラーは、ユーザー アカウント制御の画面が表示され、実行できます。同じファイルでも、置き場所で結果が変わることが分かります。
パスの規則で許可したフォルダーに、ユーザーが自由にファイルを置けると、どんなファイルでも実行できてしまいます。パスの規則を使う場合は、そのフォルダーに一般ユーザーが書き込めないよう、共有とフォルダーのアクセス許可も合わせて設定します。
ファイルハッシュ
102.3.0esr のインストーラーのハッシュをもとに制限します。
ファイルハッシュの規則を作る
条件で「ファイル ハッシュ」を選び、[ファイルの参照]で 102.3.0esr のインストーラーを選びます。名前は MSI のファイル名で登録しました。
| 1ファイル |
|
| 操作 | ユーザー | 名前 |
|---|---|---|
| 2 許可 | Everyone | Firefox Setup 102.3.0esr.msi |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | ファイル | ハッシュを計算するファイル。Firefox Setup 102.3.0esr.msi |
| 2 | 規則の一覧 | ファイル ハッシュの規則(許可、Everyone)が登録された |
動作確認
102.3.0esr のインストーラーは、ユーザー アカウント制御の画面が表示され、実行できます。105.0 のインストーラーは、図8 と同じ表示でブロックされます。
監査のみ
ここまでは実際に実行を止めましたが、いきなり制限せず、まず監査ログだけを取って影響を確かめ、そのあとで制限をかけたい場合もあります。そのときは「監査のみ」にします。
監査のみに設定する
グループ ポリシー管理エディターで アプリケーション制御ポリシー ›› AppLocker を右クリック ›› プロパティ を開き、[実施]タブを設定します。
| 実行可能ファイルの規則 | ☐ 構成済み |
| 1Windows インストーラーの規則 | ☑ 構成済み 監査のみ(選択肢:規則の実施/監査のみ) |
| スクリプトの規則 | ☐ 構成済み |
| パッケージ アプリの規則 | ☐ 構成済み |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | Windows インストーラーの規則 | 「構成済み」にチェックを入れ、「監査のみ」を選んで[適用][OK]。構成していないコレクションは、規則があれば実施される |
これで実行は止められず、規則に一致しないファイルを実行したことがイベント ログに記録されるだけになります。
イベントログの確認
イベント ビューアーの起動方法は、下記の記事を参考にしてください。
>> 参考記事:【Windows】イベントログ/イベントビューアー 起動とフィルター
AppLocker のログは アプリケーションとサービス ログ ›› Microsoft ›› Windows ›› AppLocker にあります。MSI の実行のログは「MSI and Script」に記録されます。
| レベル | 日付と時刻 | イベント ID |
|---|---|---|
| 1 警告 | 2022/09/23 22:06:01 | 8006 |
| 警告 | 2022/09/23 22:06:00 | 8006 |
| 2情報 | 2022/09/23 21:52:09 | 8005 |
| 3 エラー | 2022/09/23 21:52:06 | 8007 |
| %OSDRIVE%\USERS\(伏せています)\DESKTOP\FIREFOX\FIREFOX SETUP … は実行を許可されましたが、AppLocker ポリシーが適用されていれば実行を許可されなかった可能性があります。 |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | 8006(警告) | 監査のみのため実行は許可されたが、規則を実施していればブロックされたファイル |
| 2 | 8005(情報) | 規則で許可されて実行されたファイル |
| 3 | 8007(エラー) | 規則でブロックされたファイル(規則を実施していたときの記録) |
実行がブロックされたときの 8007 のイベントには、ブロックされたファイルのパス、ユーザー、コンピューターが記録されます。
| 1メッセージ | C:\Users\(伏せています)\Desktop\firefox\Firefox Setup 105.0.msi は実行を許可されませんでした。 |
| ログの名前 | Microsoft-Windows-AppLocker/MSI and Script |
| ログの日付 | 2022/09/23 21:52:06 |
| 2レベル | エラー |
| ユーザー | (伏せています) |
| コンピューター | Win10-1.hirotanoblog.local |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | は実行を許可されませんでした | Firefox Setup 105.0.msi がブロックされた |
| 2 | エラー | ブロックのイベントはエラーとして記録される |
どのようなイベントが記録されるかは、下記のドキュメントを参照してください。
>> 参考記事:AppLocker でのイベント ビューアーの使用
AppLocker は現在も使えますが、Microsoft は、可能な場合はアプリケーション制御に App Control for Business を使うことを勧めています。AppLocker はセキュリティ修正は受けていますが、新機能の追加はありません。ユーザーやグループごとに違う制御をしたい場合などは、AppLocker が向いています。
まとめ
AppLocker を使うには、Application Identity サービスを動かしたうえで、ファイルの種類ごとの規則のコレクションに規則を作ります。条件の違いによる動作は次のとおりです。
| 条件 | 設定 | 102.3.0esr | 105.0 |
|---|---|---|---|
| 発行元(製品名・ファイル名あり) | 102.3.0.0 以上 | 実行できる | ブロック |
| 発行元(製品名・ファイル名は *) | 102.3.0.0 以上 | 実行できる | 実行できる |
| 発行元(製品名・ファイル名は *) | 対象バージョン | 実行できる | ブロック |
| パス | \\ad-1\app\* | 共有フォルダーのものだけ実行できる | ― |
| ファイル ハッシュ | 102.3.0esr の MSI | 実行できる | ブロック |
コメント
最初に既定の規則の作成をしておくと突然ストアアプリが全部動かなくなってはまるということがなくなりますね。