Windows ファイアウォールにより「Windows セキュリティの重要な警告」ポップアップが表示される条件と対処方法について

Last Update: feedback 共有

本記事はマイクロソフト社員によって公開されております。
本記事は 2020 年 1 月 6 日に公開された記事を本ブログに移行した記事になります。

こんにちは。Windows プラットフォーム サポートです。
アプリケーション初回起動時などに、「Windows セキュリティの重要な警告」というポップアップがユーザーに表示されることがあります。
この動作に関連して、表示自体の意味や、表示された後に該当のアプリケーションでの通信ができないとのお問い合わせをいただいております。
この記事では、なぜポップアップが表示されるのか、表示の影響、影響を回避する方法の 3 点についてご案内します。

(1) 「Windows セキュリティの重要な警告」ポップアップの表示条件と目的について

「Windows セキュリティの重要な警告」ポップアップは、以下の 2 つの条件いずれも該当する場合に表示されます。

(A) 特定のアプリケーションが、特定の受信ポートの Listen (受信の待機動作) を実行しようとした場合

(B) 上記 (A) が発生したとき、当該アプリケーションの実行ファイルを指定して受信を許可またはブロックする Windows ファイアウォールの規則が存在しない場合

このポップアップ表示の目的は、意図しないアプリケーションの通信が許可されたり、または、意図したアプリケーションの通信がブロックされることがないよう、ユーザーに通信の可否について確認し、その選択に沿った動作とするためです。

(表示されたポップアップの例)

(2) 「Windows セキュリティの重要な警告」ポップアップの影響について
ポップアップに対しユーザーがとった操作に応じて、以下のような動作が発生します。
いずれの場合においても、上記 (1) の (B) 条件により、一度ユーザーが選択した後は、すでに当該アプリケーションの受信に関する Windows ファイアウォール規則がすでに存在する状態となるため、以降はポップアップは表示されません。

(a) 「アクセスを許可する」ボタンを選択した場合(選択には管理者権限が必要です。)

Windows ファイアウォールの受信の規則に、当該アプリケーションの実行ファイルを指定して受信を許可する Windows ファイアウォールの規則が自動的に作成されます。
以降は当該アプリケーションによる受信は許可されます。

(b) 「キャンセル」ボタンを選択した場合、または、×ボタンでダイアログを閉じた場合

Windows ファイアウォールの受信の規則に、当該アプリケーションの実行ファイルを指定して受信をブロックする Windows ファイアウォールの規則が自動的に作成されます。
以降は当該アプリケーションによる受信はブロックされます。

(「キャンセル」を選択した後に作成されたブロックの規則の例)

(3) 「Windows セキュリティの重要な警告」ポップアップの影響の回避方法について
企業環境の場合、ポップアップが表示された際にユーザーが適切でない動作を選択してしまった場合、管理者が想定しないブロックの規則ができてしまい、業務で利用するアプリケーションの通信ができなくなる場合があります。
このような問題を回避するには、受信を許可したいアプリケーションについては、管理者が当該アプリケーションを指定して受信を許可するファイアウォールの規則をあらかじめ作成しておくことで、ポップアップの表示を抑止しつつ、受信を許可することができます。(なお、すでにポップアップが表示されてブロックの規則が存在する環境で作成する場合は、該当のブロックの規則をいったん削除します。)

一般的には、実行時に通信を行うアプリケーションは、インストール時に自らの通信に必要な Windows ファイアウォールの規則を自動で追加する場合が多く、そのようなアプリケーションについては、管理者があらかじめ規則を追加する必要はありません。
他方、インストーラーにそのような機能がないか、または、弊社 System Center 製品などで展開されたケースなど、規則があらかじめ作られず、インストール後に管理者が手動で規則を追加する必要がある場合があります。

このような場合に該当の規則を作成するには、Windows ファイアウォールの「受信の規則」で新しい規則を作成し、「プログラム」を選択して、「このプログラムのパス」に対象のアプリケーションの実行ファイルをフルパスで指定して「接続を許可する」を選択し規則を作成します。

(規則の作成画面)

なお、アプリケーションをユーザー フォルダーにインストールする場合、実行ファイルのフルパス名はユーザーごとに異なるものを指定する必要があるため、グループ ポリシーによる展開等ができません。(%USERPROFILE% 環境変数を利用した指定もできません。)
このため、弊社では、弊社製 Microsoft Teams アプリケーションを対象に、ユーザー フォルダーにインストールされたプログラムに対する受信許可の規則を自動作成する PowerShell スクリプトを以下の技術文書中で公開しております。

こちらのスクリプト自体は弊社 Teams を対象としたものですが、パラメーターとして指定している部分を適宜変更いただくことにより、他のアプリケーションについても対応可能です。
必要に応じご活用ください。

(弊社技術文書: 後半部分に該当のスクリプトの説明があります)
Microsoft Teams のクライアントを取得する
https://docs.microsoft.com/ja-jp/microsoftteams/get-clients

(スクリプト中で指定しているパラメータ)
$progPath = Join-Path -Path $user.FullName -ChildPath “AppData\Local\Microsoft\Teams\Current\Teams.exe”
実行ファイル名をフルパスで指定しています。

$ruleName = “Teams.exe for user $($user.Name)”
追加するファイアウォール規則の名前を設定しています。

“UDP”, “TCP” | ForEach-Object { New-NetFirewallRule -DisplayName $ruleName -Direction Inbound -Profile Domain -Program $progPath -Action Allow -Protocol $_
New-NetFirewallRule コマンドで、コマンド中の各オプションに指定した規則を作成しています。

New-NetFirewallRule コマンドで指定できるオプションの詳細については、以下の弊社技術文書をご参照ください。
https://docs.microsoft.com/en-us/powershell/module/netsecurity/new-netfirewallrule?view=win10-ps

[特記事項]
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。