
Windows ファイアウォールのルールを自動的に作成するPowerShellスクリプト

PowerShellを使用したWindowsファイアウォールの完全自動化ソリューション
Windows Firewall RulesetはWindowsファイアウォールを自動的に設定し、対象システムおよびそのシステムにインストールされたソフトウェアに特化した制限的なファイアウォールルールを適用します。
このプロジェクトのステータスはまだアルファです。詳細については、上記の「status」バッジをクリックしてください。
このプロジェクトは、以下に示すように、ファイアウォールルールとファイアウォールフレームワークの2つの主要部分から構成されています。
Windowsファイアウォールルールは、以下に従って個別のPowerShellスクリプトに分類されています。
例えば以下のようなものです。
ファイアウォールフレームワークは、対象システムに特化したファイアウォールを構築および展開するための環境情報を収集するために使用される、いくつかのPowerShellモジュール、スクリプト、およびドキュメントから構成されています。例えば次のようなものです。
したがって、このリポジトリは、必要に応じてファイアウォールを簡単に拡張し、より多くのルールや機能を追加するための良い出発点となります。
現在、800以上のファイアウォールルール、100以上の関数を持つ10以上のモジュール、いくつかのスクリプト、および有用なドキュメントが多数含まれています。
必要なルールを対話的に選択して展開することも、プロセスを自動化して必要なすべてのルールと設定をファイアウォールに展開することもできます。
詳細なファイアウォール構成は時間のかかるプロセスであり、多くのトラブルシューティングを必要とし、変更にはテストとセキュリティ監査が必要であり、数百または数千のリモートコンピュータにファイアウォールを展開する必要がある場合はさらに悪化します。例えば、すべてのコンピュータが同じソフトウェアや制限要件を持っているわけではありません。
コントロールパネルのファイアウォールルールとは異なり、これらのルールはGPOファイアウォール(ローカルグループポリシー)に読み込まれます。つまり、システム設定の変更や、インストールプロセスの一部としてルールをインストールするランダムなプログラムは、明示的に例外を作成しない限り、ファイアウォールに影響を与えません。
プログラムとサービスに基づくルールでは、指定された実行可能ファイルのデジタル署名がチェックされ、デジタル署名がない場合はVirusTotalでスキャンされます。セキュリティ上の理由から、この検証に失敗した場合、ルールは作成されず、ファイアウォールに読み込まれません(強制可能)。
デフォルトの送信は「ブロック」ですが、ネットワークトラフィックを許可するルールがある場合を除きます。ほとんどのファイアウォールでは、すべての可能なプログラムやサービスのルールを管理しない限り、これは不可能です。このルールコレクションのおかげで、デフォルトの送信をブロックに設定するために追加の作業はほとんどまたはまったく必要ありません。
通常のシナリオとは異なり、どのルールが効果を失ったか、または冗長になったかを把握できます。例えば、アンインストールされたプログラム、存在しなくなったシステムサービス、Windowsアップデート後に名前が変更された実行ファイルなどが原因です。
定義済みのWindowsファイアウォールルールとは異なり、これらのルールはより制限的です。例えば、明示的なユーザーアカウントに結び付けられ、特定のポート、ネットワークインターフェース、特定の実行ファイル、サービスなどに適用され、これらすべてが対象システムから自動的に学習されます。
ルールや属性(ポート、アドレスなど)の更新、フィルタリング、検索は、これらのルールがスクリプト内にあるためはるかに簡単です。regex、multicursor、または CTRL + F などのエディタツールを使用してルールに一括操作を実行できます。ファイアウォールUIではユーザーインターフェースの制限によりこれを行うことはできません。
コードのかなりの部分は、対象システムとユーザーに特化したファイアウォールを自動的に構築および定義するソリューションを提供することに専念しており、手動で何かを行う必要性を最小限に抑え、貴重な管理時間を節約します。
このプロジェクト Windows Firewall Ruleset は MIT ライセンスの下でライセンスされています。
一部のスクリプト、ファイル、またはモジュールは MIT ライセンスではないか、独自の著作権者を持つ場合があります。そのため、ライセンスと著作権表示は 「ファイルごと」 に維持されています。
次の表は、Windows Firewall Ruleset がテストされたオペレーティングシステムを示しています。
sigcheck64.exe(推奨)sigcheckをダウンロードすべてのWindows 10.0システム(メジャー10、マイナー0)以上で、Homeエディションを除くすべてがサポートされていますが、上記の表にリストされたエディションのみがテストされています。
「バージョン」列はテストされたリリースを示していますが、最新のOSビルドのみが引き続きテストされています。
テストされていないがサポートされているその他のシステムと機能のリストは、将来にあります。
PowerShell Core はWindowsに組み込まれていません。別途インストールするか、オペレーティングシステムの一部であるWindows PowerShellを使用する必要があります。
.NET Framework は、PowerShell CoreではなくWindows PowerShell(デスクトップエディション)を使用する場合、最低バージョン4.5が必要です。
Windows 10には最低.NET 4.6(.NET 4.5を含む)が付属し、Windows 11には最低.NET 4.8が付属しています。
sigcheck64.exe(または32ビット版 sigcheck.exe)はデジタル署名検証ツールであり、Microsoftサイトからダウンロードし、C:\toolsディレクトリまたは%PATH%環境変数に配置する必要があります。
Windows Firewall Ruleset はこれを使用して、デジタル署名されていない実行可能ファイルごとに、ファイアウォールルールが作成される前にVirusTotalでハッシュベースのオンラインマルウェア分析を実行します。
これは推奨事項にすぎません。PATHに sigcheck64.exe がない場合はダウンロードするように求められ、拒否した場合はマルウェア分析は行われません。
この機能を使用することにより、、、およびに同意したものとみなされます。
現時点では、このファイアウォールは最新のWindowsデスクトップ/サーバー向けにテストおよび設計されており、動作することが確認されています。古いシステムで使用するには追加の作業が必要です。
テストは64ビットWindowsで行われています。ルールのごく一部は32ビットシステムでは機能せず、調整が必要です。32ビットシステムの完全な機能は現在開発中です。
現時点では、おそらく構成に関連しないいくつかのルールを除き、32ビットシステムでもルールを問題なく読み込むことができます。
Windows 7やWindows Server 2008などの古いWindowsシステムでこのファイアウォールを使用する方法については、レガシーサポートを参照してください。
以下は、ファイアウォールを展開する前に初めてのユーザーが知っておくべき簡単な警告と注意事項です。
一部のプログラムでインターネット接続が失われる可能性があり、まれにインターネット接続が完全に失われる可能性があります。その場合は、GPOで送信ネットワークを一時的に許可するか、
.\Scripts\Reset-Firewall.ps1 -Remoting -Service を実行してGPOファイアウォールをシステムデフォルトにリセットし、すべてのルールを削除し、WinRMと変更されたサービスをシステムデフォルトに戻すことができます。
(その後、PowerShellの再起動が必要です)
docs ディレクトリ内に ResetFirewall.md があり、何らかの理由でスクリプトを実行できない場合、またはスクリプトが問題を解決しない場合に、手動でリセットする方法が説明されています。
このルールセットのルールとまったく同じグループ名を持つルールがGPOにない限り、既存のルールは削除されません。ただし、これは Scripts\Reset-Firewall.ps1 には適用されません。これにより、GPOルールが完全にクリアされ、コントロールパネルのルールのみが残ります。
完全に確実にしたい場合は、エクスポート/インポートルールで説明されているように、GPOルールをエクスポートしてください。
どのルールを読み込むかを尋ねられます(後述の対話型展開を選択した場合)。インターネット接続の問題を最小限にするために、少なくともすべての汎用ネットワーキングおよびOS関連ルール(「CoreNetworking」、「ICMP」、「WindowsSystem」、「WindowsServices」、「Multicast」)と、システムにインストールされているプログラムのすべてのルールを展開する必要があります。また、IPv6を無視しないでください。IPv4ネットワーク上でもWindowsにはIPv6が必要です。
GPOで不要なものを削除するのは、後でコードを調べて見逃したものを見つけるよりも簡単です。
デフォルトの構成では、GPOで構成できないグローバルファイアウォール動作(Stateful FTP や PPTP、またはグローバル IPSec 設定など)が設定されます。特定の設定が必要な場合は、Scripts\Complete-Firewall.ps1 にアクセスし、Set-NetFirewallSetting を確認してください。
は によって自動的に呼び出されることに注意してください。
空のGPOにルールを読み込むのは非常に高速ですが、すでにルールが含まれているGPOに読み込む場合は大幅に遅くなります(GPO内の既存のルールの数に依存します)。
すべてのエラーと警告は Logs ディレクトリに保存されます。後でこれらのログを確認して問題を修正することができます。ほとんどの警告や一部のエラーは無視しても問題ありませんが、可能であればエラーを解決することをお勧めします。
読み込み中に「アクセスが拒否されました」という結果になるルールは、特定のスクリプトを再度実行して再読み込みする必要があります。これが発生する理由の詳細については、FAQを参照してください。
リポジトリを手動でダウンロードした場合、別のコンピュータやメディアから転送した場合は、まずリポジトリ内のすべてのファイルのブロックを解除して、スクリプト実行時のYES/NOのスパム質問を回避する必要があります。Scripts\Unblock-Project.ps1 を実行してください。
マスタースクリプト Scripts\Deploy-Firewall.ps1 は、忘れた場合にこれを行いますが、その場合でも最初のYES/NO質問は表示されます。
「ランサムウェア対策保護」が有効になっている場合(Windows Defender内)、pwsh.exe(コアエディション)または powershell.exe(デスクトップエディション)のいずれか、または両方をホワイトリストに登録してください。そうしないと、開発モードでのモジュールインストール中にエラーが発生します。
リポジトリコードがランサムウェア対策の保護下にあるフォルダにダウンロードされた場合、何かがブロックされる可能性があります。
「制御されたフォルダーアクセス」の変更を有効にするには、PowerShellコンソールの再起動が必要な場合があります。
デフォルトでは、ルールは Users グループに対して作成され、Administrators グループに対しては必要な場合のみ作成されます。セキュリティ上の理由から、日常のコンピューティングには標準ユーザーアカウントを使用することをお勧めします。
管理者であり、コンピュータに標準アカウントを作成したくない場合は、Config\ProjectSettings.ps1 の DefaultGroup 変数を変更し、 を指定する必要があります。
SSHキーやSSH経由でクローンするためのその他の設定がない場合は、HTTPSでクローンするか、Releasesからリリースされたzipファイルをダウンロードし、最新リリースの「assets」の下からzipファイルをダウンロードします。
これらの手順では、「Releases」の「assets」セクションからzipファイルをダウンロードしたことを前提としています。
ダウンロードしたアーカイブをどこかに展開します。これらの手順では、zipファイル(リポジトリルートディレクトリ)を C:\ ルートドライブに直接展開したことを前提としています。
Windows PowerShellを使用したい場合は、Windows PowerShellを開く方法を参照してください。
それ以外の場合、PowerShell CoreとWindows PowerShellの両方の手順は似ています。
展開したフォルダを開き、空のスペースを右クリックすると、PowerShell Coreを管理者として実行するオプションがあります(PowerShell Coreのインストール時にコンテキストメニューを有効にした場合)。手動で開くこともできます。
PowerShellコンテキストメニューがない場合は、次の2行を実行して C:\ ルートドライブに移動します(各コマンドを入力またはコピー&ペーストしてEnterキーを押します)。これはダウンロードしたzipファイルを展開した場所です。
c:
cd \
ダウンロードしたフォルダにcdします。
cd WindowsFirewallRuleset*
現在の実行ポリシーを確認するには、次のコマンドを入力してEnterキーを押します。
(ヒント: TABキーを使用して入力をオートコンプリートできます)
Get-ExecutionPolicy
上記のコマンドの出力を覚えておいてください。PowerShell Coreはデフォルトで RemoteSigned、Windows PowerShellは非サーバーエディションではデフォルトで Restricted です。
ルールセットを実行するかどうかの判断にヘルプが必要な場合は、実行を促されたときに ? と入力して
Enterキーを押すと詳細情報が表示されます。
何らかの理由で展開を中断および中止したい場合(例:新しく開始するため)は、PowerShellがフォーカスされている状態でキーボードの CTRL + C を押し、PowerShellコンソールを再起動してください。
プロンプトの出力に従ってください(例:Enterキーを押してデフォルトのアクションを受け入れる)、 これには約15分間の注意が必要です。
注: 管理者アカウントがMicrosoftアカウントを使用してコンピュータにログインしている場合、資格情報の入力を求められます。これは、Windows Helloを使用しているかどうかに関係なく、Microsoftのメールとパスワードである必要があります。つまり、PINを指定しても機能せず、他のWindows Hello認証方法はサポートされていません。
無効な資格情報を入力すると、Access is denied というエラーが表示されます。
これが発生した場合は、PowerShellコンソールを再起動してやり直す必要があります。
なぜこれが必要なのかの詳細については、FAQ を参照してください。
エラーが発生した場合、エラーを無視するか、エラーを生成したスクリプトを更新して、後でその特定のスクリプトを再度実行することができます。
完了したら、ローカルグループポリシーの一部のルールを調整したい場合があります。すべてのルールがデフォルトで有効になっているわけではありません。また、デフォルトの許可/ブロック動作を切り替えたい場合もあります。
ルールがシステムにインストールされているすべてのプログラムをカバーしていない場合があり、その場合は不足しているルールを作成する必要があります。
次に、インターネット接続をテストしてください(例:Webブラウザやその他のプログラムを使用)。これらのルールを展開した後にインターネットに接続できない場合は、いくつかのオプションがあります。
docs ディレクトリを確認してください。ファイアウォールを展開するための前提条件として、一部のシステムサービスが起動され、自動起動に設定されています。Logs ディレクトリ内に Services_<DATE>.log があり、必要に応じてこれらのサービスをデフォルトに戻すのに役立ちます。
たとえば、Windows Remote Management サービスは、不要な場合は実行すべきではありません(デフォルトは「手動」起動です)。
以下のセクションでは、ファイアウォールを簡単に管理するためのヒントをいくつか紹介します。
Deploy-Firewall.ps1 スクリプトは、展開の自動化をカスタマイズするためのいくつかのパラメータをサポートしています。以下に示します。
- ステップバイステップで進み、どのルールセットをロードするかの確認を求められ、その場で問題を解決しようとするには、次のように実行します:```powershell
.\Scripts\Deploy-Firewall.ps1 -Interactive
Deploy-Firewall を実行します:```powershell
.\Scripts\Deploy-Firewall.ps1パラメータの意味を理解し、自分で組み合わせられるようにするには、`Deploy-Firewall.ps1` スクリプトのコメントを参照するか、次のコマンドを実行してください:```powershell
Get-Help .\Scripts\Deploy-Firewall.ps1 -Detailed
GPO ルールを管理するには、2 つの方法があります。
ローカルグループポリシーを使用する方法。この方法では、このリポジトリのルールに対して、無効化、一部の属性の変更、新しいルールの追加など、限られた自由度しかありません。
詳細については、次を参照してください: Manage GPO Firewall
PowerShell スクリプトを編集する方法。この方法では、完全な制御が可能で、既存のルールを自由に変更、削除、または新しいルールを追加できます。
どのような計画やセットアップであっても、ルールのカスタマイズや、このファイアウォールでまだカバーされていないプログラムの新しいルールの追加など、追加の作業が必要になることは間違いありません。
ルールはローカルグループポリシーに読み込まれます。ファイアウォールのセットアップ時に、パーソナライズされたファイアウォール管理コンソールへのショートカットを作成することに同意した場合は、そのショートカットを実行できます。それ以外の場合は、Manage GPO Firewall に記載されている手順に従ってください。
GPO の詳細については、次を参照してください。 セキュリティポリシー設定の構成
特定のルールのみを展開したい場合、2 つの方法があります。
Scripts\Deploy-Firewall.ps1 を実行し、展開したいルールセットに対してのみ Yes を選択します。それ以外の場合は No を選択して Enter キーを押し、現在のルールセットをスキップします。
PowerShell コンソールで、展開したいルールセットスクリプトが含まれるディレクトリに cd で移動し、個別のスクリプトを実行します。
例: cd .\Rules\IPv4\Outbound\Software の後に .\Adobe.ps1 を実行して、Adobe のルールを読み込みます。
その後、Scripts\Complete-Firewall.ps1 を実行して、デフォルトのファイアウォール動作を適用することをお勧めします(まだ設定されていない場合)。または、GPO で手動で行うこともできますが、できることは限られています。
「限られた権限」とは、Scripts\Complete-Firewall.ps1 がファイアウォール GUI では調整できないいくつかのファイアウォールパラメータを構成することを意味します。
どちらの場合も、ルールセットグループ (DisplayGroup) に一致するすべてのルールは、GPO にルールを読み込む前に削除されます。
現時点では、ファイアウォールルールを削除する方法が 3 つあります。
最も簡単な方法は、GPO で削除したいルールをすべて選択し、右クリックして削除することです。
ファイルに基づいてルールを削除するには、この目的のための関数があります。場所は次のとおりです。
Modules\Ruleset.Firewall\Public\Remove-FirewallRule.ps1
ただし、使用する前にファイアウォールをファイルにエクスポートする必要があります。
以前のファイアウォール状態 (コントロールパネルの状態) に戻すには、GPO からすべてのルールを削除し、次のノードを右クリックした後、すべてのプロパティを 未構成 に設定する必要があります。
Windows Defender ファイアウォール - セキュリティが強化された Windows Defender ファイアウォール - ローカルグループポリシーオブジェクト
すべてのルールを削除するか、以前の状態に戻すには、Scripts\Reset-Firewall.ps1 を使用することもできます。
エクスポートした GPO ルールがある場合は、それらを再インポートする必要があることに注意してください。
GPO からルールをエクスポートするには、2 つの方法があります。
ローカルグループポリシーで、次のノードを右クリックした後、ポリシーのエクスポート... メニューをクリックしてエクスポートします。
Windows Defender ファイアウォール - セキュリティが強化された Windows Defender ファイアウォール - ローカルグループポリシーオブジェクト
PowerShell を使用してエクスポートするには、Scripts\Backup-Firewall.ps1 を実行します。
エクスポートをカスタマイズしたい場合は、Ruleset.Firewall モジュールにある Export-RegistryRule 関数を参照してください。この関数を使用すると、ほぼあらゆる方法でエクスポートをカスタマイズできます。
ルールをインポートする場合、GPO を使用したインポートはエクスポートと同じです。PowerShell でインポートするには、Scripts\Restore-Firewall.ps1 を実行するだけです。これにより、以前のエクスポートファイルが自動的に選択されます。
エクスポート/インポートをカスタマイズするには、Modules\Ruleset.Firewall\Public を参照してください。エクスポート/インポートモジュール関数の使用方法についての説明があります。
注: Export-FirewallRule 関数は非常に遅いため、代わりに Export-RegistryRule 関数を実行することをお勧めします。この関数は可能な限り高速です。
このセクションと機能は現在実験的であり、完全には完了していません。 現時点では、単一のリモートコンピュータへの展開がサポートされています。

リモートファイアウォール展開では、少なくとも 2 台のコンピュータが関与します。 1 台は管理コンピュータ (クライアント) と呼ばれ、その他すべては管理対象コンピュータ (サーバー) と呼ばれます。
スクリプトは管理コンピュータ上の管理者によって実行され、ファイアウォールは複数のサーバーコンピュータに同時に展開または構成されます。
実装の詳細については、Modules\Ruleset.Remote モジュールを参照してください。
注: リモート機能はリモートファイアウォール展開に限定されるものではなく、ローカルホストへの展開でも、設計上、正常に動作する WinRM と PS リモート構成が必要です。
リモート展開を実行する前に、リモートコンピュータ (サーバー) が接続を受け入れるように構成する必要があります。SSL 接続を確立する方法の例は次のとおりです。
実行を許可するには、サーバーコンピュータで WinRM サービスとリモートレジストリを構成します。次のコマンドを実行します。
注: PowerShell Core を使用する場合は、以下の Enable-WinRMServer から -Protocol HTTPS を省略してください。これにより HTTP と HTTPS の両方が有効になり、互換性モジュールがリモートセッションで動作するための一時的な回避策となります。```powershell
Set-ExecutionPolicy -Scope LocalMachine RemoteSigned Set-Location C:\Path\to\WindowsFirewallRuleset Import-Module .\Modules\Ruleset.Remote Enable-WinRMServer -Protocol HTTPS -KeepDefault -Confirm:$false Enable-RemoteRegistry -Confirm:$false
これらの手順を実行した後、`\Exports`ディレクトリ内にSSL証明書(*.cer)ファイルが存在します。
このファイルは管理コンピュータの`\Exports`ディレクトリにもコピーする必要があります。\
デフォルトでは、サーバーコンピュータに既存のSSL証明書がない場合、自己署名SSL証明書が作成されます。
**注意:** サーバーコンピュータの手動設定は初期セットアップ時にのみ一度実行されます。
その後のデプロイメントでは繰り返す必要はありません。
次のステップは、管理コンピュータに移動し、必要に応じてスクリプトを実行することです。例:```powershell
# On management computer
cd C:\Path\to\WindowsFirewallRuleset\Scripts
Deploy-Firewall -Domain "RemoteComputerName"
上記の両方のコマンドセットは、同じエディションのPowerShellで実行する必要があります。たとえば、サーバーがPowerShell Coreで構成されている場合、クライアントコンピュータもPowerShell Coreをデプロイメントに使用する必要があります。
サーバーまたは管理コンピュータのいずれかがワークステーション(例:Windows Serverではない、またはドメインに参加していない)である場合、そのネットワークプロファイルはプライベートプロファイルに設定する必要があります。
リモートデプロイメントは、以下の場所で詳細にカスタマイズできます。
Modules\Ruleset.Remote\Scripts\WinRMSettings.ps1Modules\Ruleset.Remote\Scripts\*Firewall.psscModules\Ruleset.Remote\Public\Register-SslCertificate.ps1Modules\Ruleset.Remote\Scripts\SessionSettings.ps1追加情報とトラブルシューティングのヒントについては、リモートヘルプも参照してください。
サポート、問題報告、提案、またはこのリポジトリのカスタマイズ、およびこのファイアウォールを定期的に更新する方法については、SUPPORT.mdを参照してください。
以下の機能が望まれており、将来のある時点で利用可能になる可能性があります。
リモートファイアウォール管理
Windows Serverエディションおよび専用ゲートウェイシステム向けの包括的なファイアウォールルールセット。
アクティブなファイアウォールフィルタリングポリシーとファイアウォール設定の整合性を検証するためのオンデマンドまたはスケジュールされたレジストリスキャン
以下に示すまだテストされていないWindows 10.0エディションの完全な機能
x86システム向けの機能
| OS | エディション | バージョン | アーキテクチャ |
|---|
| Windows 10 | Pro | 1809 - 22H2 | x64 |
| Windows 10 | Pro Education | 20H2 | x64 |
| Windows 10 | Enterprise | 1809 - 20H2 | x64 |
| Windows 10 | Education | 20H2 - 22H2 | x64 |
| Windows 11 | Pro Education | 21H2 | x64 |
| Windows 11 | Pro | 22H2 - 23H2 | x64 |
| Windows 11 | Enterprise | 22H2 | x64 |
| Windows Server 2019 | Essentials | 1809 | x64 |
| Windows Server 2019 | Standard | 1809 | x64 |
| Windows Server 2019 | Datacenter | 1809 | x64 |
| Windows Server 2022 | Standard | 21H2 | x64 |
| Windows Server 2022 | Datacenter | 21H2 | x64 |
更新をチェックしたり、ブランチを簡単に切り替えたり、コードをコントリビュートしたりするために、gitを用意するとよいでしょう。
VS Codeは、コードをナビゲートしたり、自分用またはコントリビューションのためにスクリプトを編集したりするための推奨エディターです。
VSCodeを入手した場合、コードナビゲーションとPowerShell言語機能のためにPowerShell拡張機能も必要です。
VSCodeでコードをナビゲートおよび編集するには、PSScriptAnalyzer を強くお勧めします。そうしないと、リポジトリのさまざまな設定により、編集エクスペリエンスが異常に動作する可能性があります。
ハードウェア要件はありませんが、コードの記述とデバッグを行う予定がある場合は、最低8GBのメモリとSSDドライブをお勧めします。個人のファイアウォールにルールを展開するだけの場合は、それより少なくても問題なく動作します。
Scripts\Complete-Firewall.ps1Scripts\Deploy-Firewall.ps1一部のスクリプトでは、ネットワークに接続されている必要があります(ネットワークアダプター)。たとえば、IPv4ブロードキャストアドレスを決定する場合などです。(そうしないとエラーが発生する可能性があります)
システム上のすべてが最新である必要があります。そうしないと、一部のルールがスキップされたり、不正確になる可能性があります。これには、Windowsアップデート、Microsoft Storeアプリ、その他すべてのソフトウェアが含まれます。
Administrators管理者アカウントの使用がセキュリティ上の理由から推奨されない理由の詳細については、SecurityAndPrivacy.md を参照してください。
ファイアウォールの展開に使用する管理アカウントにはパスワードが設定されている必要があります。
ソフトウェアまたはWindowsのアップデートにより、実行可能ファイルの名前や場所が変更される場合があります。また、管理者によってユーザーアカウント名が変更される場合もあります。そのため、いつでも発生する可能性のあるシステム変更にファイアウォールを更新するために、必要に応じて特定のルールを定期的に再読み込みすることが重要です。
この動作はソフトウェア回帰と呼ばれます。
ファイアウォールを展開する前に、対象コンピュータのシステムとユーザープログラム(Windowsストアアプリを含む)を更新することをお勧めします。特にシステムが新規インストールされた場合は、後で更新すると一部のルールの再読み込みが必要になる可能性があります。
プロジェクトファイルのブロックを解除できるように、実行ポリシーを unrestricted に設定します。
(注:RemoteSigned はスクリプトのブロックが解除された後にのみ機能します)
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
実行ポリシーの変更を受け入れるように求められる場合があります。その場合は Y と入力してEnterキーを押して受け入れます。
詳細については、実行ポリシーについてを参照してください。
この時点で、まず Scripts\Unblock-Project.ps1 というスクリプトを実行して、すべてのリポジトリファイルの「ブロックを解除」する必要があります。ちなみに、リポジトリファイルはWindowsによってブロックされ、インターネットからダウンロードした信頼できないスクリプトコードを実行できないようにしています。
.\Scripts\Unblock-Project.ps1
質問された場合は、プロジェクトのブロックを解除するために必要なだけ R([R] 1回実行)を選択してください。(最大約8回)
リポジトリファイルのブロックが解除されたら、実行ポリシーを RemoteSigned に変更します。
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
再度実行ポリシーの変更を受け入れるように求められる場合があります。Y と入力してEnterキーを押して受け入れます。
Webブラウザやゲームなどのプログラムのルールは、インストール変数に依存します。
ほとんどのパスは自動検索され、変数は透過的に更新されます。そうでない場合は、問題の修正方法に関する警告と説明が表示されます。
必要に応じて、これらのインストール変数は Rules ディレクトリ内の個々のスクリプトにあります。
次のステップでマスタースクリプトを実行する前に、gpedit.msc や secpol.msc などのすべての MMC 管理コンソールを閉じておくことをお勧めします。
PowerShellコンソールに戻り、以下の2つの Deploy-Firewall コマンドのいずれかを実行します。
できるだけ少ないプロンプトで自動的にファイアウォールを展開するには、以下を実行します。
.\Scripts\Deploy-Firewall.ps1 -Force
それ以外の場合、どのルールを読み込むかを対話的にプロンプト表示するには、以下を実行します。
.\Scripts\Deploy-Firewall.ps1
```Enterキーを押すと、どのようなルールセットが必要かなどの質問が表示されます。\