Windows PowerShellを使用した高度なセキュリティ管理を使用したファイアウォールのWindows Defender

Windows PowerShell ガイドを使用した高度なセキュリティ管理を備えたWindows Defender ファイアウォールには、ファイアウォール管理Windows Defender自動化するための重要なスクリプトレットが用意されています。 It 担当者、システム管理者、IT マネージャー、および Windows でファイアウォール管理Windows Defender自動化する必要があるその他のユーザー向けに設計されています。

Windows PowerShellを使用して、ファイアウォールと IPsec のデプロイを管理できます。 このオブジェクト指向のスクリプト環境により、netsh で可能であったよりも、ポリシーの管理とネットワーク状態の監視が容易になります。 Windows PowerShellでは、各コマンドレットの構文とパラメーターを使用してネットワーク設定を自己検出できます。 このガイドでは、netsh で一般的なタスクを実行した方法と、Windows PowerShellを使用して実行する方法について説明します。

今後のバージョンの Windows では、Windows Defender Firewall の netsh 機能が削除される可能性があります。 現在 netsh を使用してファイアウォールを構成および管理している場合は、Windows PowerShellに移行することをお勧めしますWindows Defender。

Windows PowerShellおよび netsh コマンド参照は、次の場所にあります。

適用範囲

このガイドでは、Windows Defender ファイアウォールに記載されているWindows Defender ファイアウォールの基礎については説明しません。 Windows PowerShellの基礎は教えていません。また、Windows PowerShell言語とWindows PowerShellの基本的な概念に精通していることを前提としています。 Windows PowerShell概念と使用方法の詳細については、このガイドの「その他のリソース」セクションのリファレンス トピックを参照してください。

対象ユーザーとユーザーの要件

このガイドは IT 担当者、システム管理者、IT マネージャーを対象としており、Windows Defender ファイアウォール、Windows PowerShell言語、Windows PowerShellの基本的な概念について理解していることを前提としています。

このトピックの内容

セクション 説明
プロファイルグローバルの既定値を設定する ファイアウォールの動作を有効にして制御する
基本的なファイアウォール規則をデプロイする ファイアウォール規則を作成、変更、削除する方法
リモートで管理する 使用したリモート管理 -CimSession
基本的な IPsec ルール設定を展開する IPsec の規則と関連するパラメーター
IPsec を使用してセキュリティで保護されたファイアウォール規則を展開する ドメインとサーバーの分離
その他のリソース Windows PowerShellの詳細

プロファイルグローバルの既定値を設定する

グローバル既定値は、プロファイル単位でデバイスの動作を設定します。 Windows Defender ファイアウォールでは、ドメイン、プライベート、およびパブリック プロファイルがサポートされます。

高度なセキュリティWindows Defenderファイアウォールを有効にする

Windows Defender ファイアウォールは、許可された非送信請求トラフィックに対応しないトラフィック、またはデバイスからの要求に応答して送信されるトラフィックを削除します。 作成するルールが適用されていない場合は、ファイアウォールWindows Defender有効にする必要がある場合があります。 ローカル ドメイン デバイスでファイアウォールWindows Defender有効にする方法を次に示します。

Netsh

netsh advfirewall set allprofiles state on

Windows PowerShell

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True

高度なセキュリティ動作でファイアウォールWindows Defender制御する

グローバル既定の設定は、コマンド ライン インターフェイスを使用して定義できます。 これらの変更は、セキュリティが強化されたWindows Defenderファイアウォール コンソールでも使用できます。

次のスクリプトレットは、既定の受信アクションと送信アクションを設定し、保護されたネットワーク接続を指定し、プログラムが受信接続の受信をブロックされたときに通知をユーザーに表示できるようにします。 マルチキャストまたはブロードキャスト ネットワーク トラフィックに対するユニキャスト応答を許可し、トラブルシューティング用のログ設定を指定します。

Netsh

netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound
netsh advfirewall set allprofiles settings inboundusernotification enable
netsh advfirewall set allprofiles settings unicastresponsetomulticast enable
netsh advfirewall set allprofiles logging filename %SystemRoot%\System32\LogFiles\Firewall\pfirewall.log

Windows PowerShell

Set-NetFirewallProfile -DefaultInboundAction Block -DefaultOutboundAction Allow –NotifyOnListen True -AllowUnicastResponseToMulticast True –LogFileName %SystemRoot%\System32\LogFiles\Firewall\pfirewall.log

高度なセキュリティWindows Defenderファイアウォールを無効にする

インターネット プロトコル セキュリティ (IPsec) 接続セキュリティ規則を使用する機能、ネットワーク フィンガープリントを使用する攻撃からのネットワーク保護、Windows サービスの強化ブート時間フィルターなど、サービスによって提供されるその他の利点が失われるため、ファイアウォールWindows Defender無効にしないことをお勧めします。

高度なセキュリティWindows Defenderファイアウォールを無効にすると、次のような問題が発生する可能性もあります。

  • [スタート] メニューが動作を停止する
  • 最新のアプリケーションのインストールまたは更新に失敗する可能性がある
  • 電話による Windows のアクティブ化に失敗する
  • ファイアウォールに依存するアプリケーションまたは OS の非互換性Windows Defender

サード パーティ製ファイアウォールをインストールする場合にのみファイアウォールWindows Defender無効にし、サード パーティ製のソフトウェアが無効または削除されたときにファイアウォールWindows Defender既定にリセットすることをお勧めします。

ファイアウォールWindows Defender無効にする必要がある場合は、Windows Defender ファイアウォール サービスを停止して無効にしないでください (サービス スナップインでは、表示名はファイアウォールWindows Defender、サービス名は MpsSvc です)。 Windows Defenderファイアウォール サービスの停止は、Microsoft ではサポートされていません。

Microsoft 以外のファイアウォール ソフトウェアでは、互換性のために無効にする必要があるWindows Defenderファイアウォールの一部のみをプログラムで無効にすることができます。 この目的のために、ファイアウォールを自分で無効にしないでください。

Windows Defender ファイアウォールを無効にする適切な方法は、Windows Defenderファイアウォール プロファイルを無効にし、サービスを実行したままにすることです。

次の手順に従ってファイアウォールをオフにするか、グループ ポリシー設定のコンピューター構成を無効にします|管理用テンプレート|ネットワーク|ネットワーク接続|Windows Defenderファイアウォール|Domain Prolfile|Windows Defender ファイアウォール:すべてのネットワーク接続を保護します。 詳細については、「セキュリティが強化されたファイアウォールWindows Defender展開ガイド」を参照してください。

次の例では、すべてのプロファイルのファイアウォールWindows Defender無効にします。

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False

基本的なファイアウォール規則をデプロイする

このセクションでは、ファイアウォール規則を作成、変更、削除するためのスクリプトレットの例を示します。

ファイアウォール規則を作成する

Windows PowerShellにファイアウォール規則を追加すると、Netsh とよく似ていますが、パラメーターと値の指定方法は異なります。

Telnet アプリケーションがネットワークでリッスンできるようにする方法の例を次に示します。 このファイアウォール規則は、IP アドレスの代わりにキーワードを使用してローカル サブネットにスコープを設定します。 Netsh と同様に、ルールはローカル デバイスに作成され、すぐに有効になります。

Netsh

netsh advfirewall firewall add rule name="Allow Inbound Telnet" dir=in program= %SystemRoot%\System32\tlntsvr.exe remoteip=localsubnet action=allow

Windows PowerShell

New-NetFirewallRule -DisplayName “Allow Inbound Telnet” -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow

次のスクリプトレットは、特定のアプリケーションとローカル ポートからの送信トラフィックをブロックする基本的なファイアウォール規則を Active Directory の グループ ポリシー オブジェクト (GPO) に追加する方法を示しています。 Windows PowerShellでは、ポリシー ストアは New-NetFirewall コマンドレット内のパラメーターとして指定されます。 Netsh では、まず、Netsh セッションのコマンドで変更する GPO を指定する必要があります。 入力したコマンドは GPO の内容に対して実行され、Netsh セッションが終了するか、別の set store コマンドが実行されるまで実行は有効です。

ここでは、domain.contoso.com はActive Directory Domain Services (AD DS) の名前であり、gpo_nameは変更する GPO の名前です。 GPO 名にスペースがある場合は、引用符が必要です。

Netsh

netsh advfirewall set store gpo=domain.contoso.com\gpo_name
netsh advfirewall firewall add rule name="Block Outbound Telnet" dir=out program=%SystemRoot%\System32\telnet.exe protocol=tcp localport=23 action=block

Windows PowerShell

New-NetFirewallRule -DisplayName “Block Outbound Telnet” -Direction Outbound -Program %SystemRoot%\System32\tlntsvr.exe –Protocol TCP –LocalPort 23 -Action Block –PolicyStore domain.contoso.com\gpo_name

GPO キャッシュ

ビジー状態のドメイン コントローラーの負担を軽減するために、Windows PowerShellローカル セッションに GPO を読み込み、そのセッション内のすべての変更を行い、それを一度に保存し直すことができます。

次のコマンドは、前の例と同じアクションを実行します (GPO に Telnet 規則を追加します)、PowerShell で GPO キャッシュを適用します。 ローカル セッションに読み込み、 -GPOSession パラメーターを使用して GPO を変更することは、Netsh ではサポートされていません

Windows PowerShell

$gpo = Open-NetGPO –PolicyStore domain.contoso.com\gpo_name
New-NetFirewallRule -DisplayName “Block Outbound Telnet” -Direction Outbound -Program %SystemRoot%\System32\telnet.exe –Protocol TCP –LocalPort 23 -Action Block –GPOSession $gpo
Save-NetGPO –GPOSession $gpo

このコマンドは個々の変更をバッチ処理せず、GPO 全体を一度に読み込んで保存します。 そのため、他の管理者または別のWindows PowerShell ウィンドウで他の変更が行われた場合は、GPO を保存すると、それらの変更が上書きされます。

既存のファイアウォール規則を変更する

ルールが作成されると、Netsh とWindows PowerShellはルールのプロパティと影響を変更できますが、ルールは一意の識別子を保持します (Windows PowerShellでは、この識別子は -Name パラメーターで指定されます)。

たとえば、受信未承諾トラフィックに対して TCP ポート 80 を有効にするルール Allow Web 80 を設定できます。 ルールの人間が判読できるローカライズされた名前を指定することで、トラフィックが許可される Web サーバーの別のリモート IP アドレスと一致するようにルールを変更できます。

Netsh

netsh advfirewall firewall set rule name="Allow Web 80" new remoteip=192.168.0.2

Windows PowerShell

Set-NetFirewallRule –DisplayName “Allow Web 80” -RemoteAddress 192.168.0.2

Netsh では、変更するルールの名前を指定する必要があります。また、ファイアウォール規則を取得する別の方法はありません。 Windows PowerShellでは、既知のプロパティを使用してルールのクエリを実行できます。

実行 Get-NetFirewallRuleすると、アドレスやポートなどの一般的な条件が表示されない場合があります。 これらの条件は、フィルターと呼ばれる個別のオブジェクトで表されます。 前に示したように、New-NetFirewallRule と Set-NetFirewallRule のすべての条件を設定できます。 これらのフィールド (ポート、アドレス、セキュリティ、インターフェイス、サービス) に基づいてファイアウォール規則のクエリを実行する場合は、フィルター オブジェクト自体を取得する必要があります。

フィルター オブジェクトを使用して、(前に行ったように) Web 80 ルールを許可するリモート エンドポイントを変更できます。 Windows PowerShellを使用して、ポート フィルターを使用してポートでクエリを実行し、ローカル ポートに影響を与える他の規則が存在すると仮定して、目的のルールが取得されるまでさらにクエリを使用してビルドします。

次の例では、クエリが 1 つのファイアウォール規則を返すものとします。このルールは、入力をパイプライン化するSet-NetFirewallRuleWindows PowerShellの機能を利用してコマンドレットにパイプされます。

Windows PowerShell

Get-NetFirewallPortFilter | ?{$_.LocalPort -eq 80} | Get-NetFirewallRule | ?{ $_.Direction –eq “Inbound” -and $_.Action –eq “Allow”} | Set-NetFirewallRule -RemoteAddress 192.168.0.2

ワイルドカード文字を使用してルールのクエリを実行することもできます。 次の例では、特定のプログラムに関連付けられているファイアウォール規則の配列を返します。 配列の要素は、後続 Set-NetFirewallRule のコマンドレットで変更できます。

Windows PowerShell

Get-NetFirewallApplicationFilter -Program "*svchost*" | Get-NetFirewallRule

グループ内の複数のルールは、関連付けられたグループ名が Set コマンドで指定されている場合に同時に変更できます。 同じ影響を共有する複数のルールを管理するために、ファイアウォール規則を指定された管理グループに追加できます。

次の例では、受信と送信の両方の Telnet ファイアウォール規則をグループ Telnet 管理に追加します。 Windows PowerShellでは、ルールが最初に作成されたときにグループ メンバーシップが指定されるため、前のルールの例を再作成します。 Netsh では、カスタムルール グループにルールを追加することはできません。

Windows PowerShell

New-NetFirewallRule -DisplayName “Allow Inbound Telnet” -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow –Group “Telnet Management”
New-NetFirewallRule -DisplayName “Block Outbound Telnet” -Direction Outbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow –Group “Telnet Management”

ルールの作成時にグループが指定されていない場合は、Windows PowerShellのドット表記を使用してルールをルール グループに追加できます。 コマンドではルール グループ Set-NetFirewallRule によるクエリが許可されるため、使用するグループを指定することはできません。

Windows PowerShell

$rule = Get-NetFirewallRule -DisplayName “Allow Inbound Telnet”
$rule.Group = “Telnet Management”
$rule | Set-NetFirewallRule

コマンドの Set 助けを借りて、ルール グループ名が指定されている場合、グループ メンバーシップは変更されませんが、グループのすべてのルールは、指定されたパラメーターによって示されるのと同じ変更を受け取ります。

次のスクリプトレットでは、ファイアウォール規則に影響を与えるリモート管理を含む定義済みグループ内のすべてのルールを有効にします。

Netsh

netsh advfirewall firewall set rule group="Windows Defender Firewall remote management" new enable=yes

Windows PowerShell

Set-NetFirewallRule -DisplayGroup “Windows Defender Firewall Remote Management” –Enabled True

また、グループまたはルールの他のプロパティによってルールを有効にする別 Enable-NetFirewallRule のコマンドレットもあります。

Windows PowerShell

Enable-NetFirewallRule -DisplayGroup “Windows Defender Firewall Remote Management” -Verbose

ファイアウォール規則を削除する

ルール オブジェクトは、アクティブでなくなっているように無効にできます。 Windows PowerShellでは、Disable-NetFirewallRule コマンドレットはルールをシステムに残しますが、ルールが適用されなくなり、トラフィックに影響を与えるように無効な状態になります。 無効なファイアウォール規則は、 Enable-NetFirewallRule によって再度有効にすることができます。 このコマンドレットは、デバイスからルール定義を完全に削除する Remove-NetFirewallRule とは異なります。

次のコマンドレットは、指定された既存のファイアウォール規則をローカル ポリシー ストアから削除します。

Netsh

netsh advfirewall firewall delete rule name=“Allow Web 80”

Windows PowerShell

Remove-NetFirewallRule –DisplayName “Allow Web 80”

他のコマンドレットと同様に、削除するルールのクエリを実行することもできます。 ここでは、すべてのブロックファイアウォール規則がデバイスから削除されます。

Windows PowerShell

Remove-NetFirewallRule –Action Block

Get コマンドを使用してルールに対してクエリを実行し、変数に保存し、影響を受けるルールを確認してから、Set コマンドと同様に削除コマンドにパイプを適用する方が安全な場合があります。 次の例では、すべてのブロックファイアウォール規則を表示し、最初の 4 つのルールを削除する方法を示します。

Windows PowerShell

$x = Get-NetFirewallRule –Action Block
$x
$x[0-3] | Remove-NetFirewallRule

リモートで管理する

WinRM を使用したリモート管理は、既定で有効になっています。 CimSession パラメーターをサポートするコマンドレットは WinRM を使用し、既定でリモートで管理できます。

次の例では、 RemoteDevice という名前のデバイス上の永続ストアのすべてのファイアウォール規則を返します。

Windows PowerShell

Get-NetFirewallRule –CimSession RemoteDevice

–CimSession パラメーターを使用して、リモート デバイスに対して任意の変更を実行したり、ルールを表示したりできます。 ここでは、リモート デバイスから特定のファイアウォール規則を削除します。

Windows PowerShell

$RemoteSession = New-CimSession –ComputerName RemoteDevice
Remove-NetFirewallRule –DisplayName “AllowWeb80” –CimSession $RemoteSession -Confirm

基本的な IPsec ルール設定を展開する

インターネット プロトコル セキュリティ (IPsec) ポリシーは、IPsec の動作を決定するルールで構成されます。 IPsec では、ネットワーク レベルのピア認証、データ配信元認証、データ整合性、データ機密性 (暗号化)、再生保護がサポートされます。

Windows PowerShellでは、Netsh や Advanced Security コンソールを使用したWindows Defender ファイアウォールなどの強力で複雑な IPsec ポリシーを作成できます。 ただし、Windows PowerShellは文字列トークンベースではなくオブジェクト ベースであるため、Windows PowerShellの構成により、制御と柔軟性が向上します。

Netsh では、認証セットと暗号化セットが、特定の形式でコンマ区切りのトークンの一覧として指定されました。 Windows PowerShellでは、既定の設定を使用するのではなく、最初に目的の認証オブジェクトまたは暗号化提案オブジェクトを作成し、それらを好みの順序でリストにバンドルします。 次に、これらのセットを参照する 1 つ以上の IPsec 規則を作成します。 このモデルの利点は、ルール内の情報へのプログラムによるアクセスがはるかに簡単な点です。 例を明確にするには、次のセクションを参照してください。

単一の ipsec 規則を作成するためのオブジェクト モデル。

IPsec 規則を作成する

次のコマンドレットは、グループ ポリシー オブジェクトに基本的な IPsec トランスポート モード規則を作成します。 IPsec 規則は簡単に作成できます。必要なのは表示名で、残りのプロパティは既定値を使用します。 受信トラフィックは認証され、既定のクイック モードとメイン モードの設定を使用して整合性がチェックされます。 これらの既定の設定は、コンソールの [IPsec 既定値のカスタマイズ] にあります。

Netsh

netsh advfirewall set store gpo=domain.contoso.com\gpo_name
netsh advfirewall consec add rule name="Require Inbound Authentication" endpoint1=any endpoint2=any action=requireinrequestout

Windows PowerShell

New-NetIPsecRule -DisplayName “Require Inbound Authentication” -PolicyStore domain.contoso.com\gpo_name

IPsec 規則にカスタム認証方法を追加する

IPsec ルール オブジェクトに AH と ESP の両方を含むクイック モード提案のカスタム セットを作成する場合は、関連付けられたオブジェクトを個別に作成し、それらの関連付けをリンクします。 認証方法の詳細については、「 IPsec プロトコルの選択 」を参照してください。

その後、IPsec ルールを作成するときに、新しく作成したカスタム クイック モード ポリシーを使用できます。 暗号化セット オブジェクトは、IPsec ルール オブジェクトにリンクされます。

crypto set オブジェクト。

この例では、カスタムのクイック モード暗号化セットを指定して、以前に作成した IPsec 規則に基づいて構築します。 最終的な IPsec 規則では、指定した暗号化方法で送信トラフィックを認証する必要があります。

Netsh

netsh advfirewall set store gpo=domain.contoso.com\gpo_name
netsh advfirewall consec add rule name="Require Outbound Authentication" endpoint1=any endpoint2=any action=requireinrequestout qmsecmethods=ah:sha1+esp:sha1-3des

Windows PowerShell

$AHandESPQM = New-NetIPsecQuickModeCryptoProposal -Encapsulation AH,ESP –AHHash SHA1 -ESPHash SHA1 -Encryption DES3
$QMCryptoSet = New-NetIPsecQuickModeCryptoSet –DisplayName “ah:sha1+esp:sha1-des3” -Proposal $AHandESPQM –PolicyStore domain.contoso.com\gpo_name
New-NetIPsecRule -DisplayName “Require Inbound Authentication” -InboundSecurity Require -OutboundSecurity Request -QuickModeCryptoSet $QMCryptoSet.Name –PolicyStore domain.contoso.com\gpo_name

IKEv2 IPsec トランスポート ルール

企業ネットワークでは、別の機関との通信をセキュリティで保護する必要がある場合があります。 ただし、この機関は Windows 以外のオペレーティング システムを実行しており、Internet Key Exchange バージョン 2 (IKEv2) 標準を使用する必要があります。

IPsec 規則のキー モジュールとして IKEv2 を指定することで、Windows Server 2012で IKEv2 機能を適用できます。 この機能仕様は、コンピューター証明書認証を使用してのみ実行でき、フェーズ 2 認証では使用できません。

Windows PowerShell

New-NetIPsecRule -DisplayName “Require Inbound Authentication” -InboundSecurity Require -OutboundSecurity Request –Phase1AuthSet MyCertAuthSet -KeyModule IKEv2 –RemoteAddress $nonWindowsGateway

シナリオを含む IKEv2 の詳細については、「 IKEv2 を使用したエンドツーエンドの IPsec 接続のセキュリティ保護」を参照してください。

あるポリシーから別のポリシーに IPsec 規則をコピーする

同じルール プロパティを持つファイアウォール規則と IPsec ルールを複製して、異なるポリシー ストア内でルールを再作成するタスクを簡略化できます。

以前に作成したルールをポリシー ストアから別のポリシー ストアにコピーするには、関連付けられているオブジェクトも個別にコピーする必要があります。 関連付けられているファイアウォール フィルターをコピーする必要はありません。 コピーするルールは、他のコマンドレットと同じ方法でクエリを実行できます。

個々のルールのコピーは、Netsh インターフェイスでは不可能なタスクです。 Windows PowerShellで実現する方法を次に示します。

Windows PowerShell

$Rule = Get-NetIPsecRule –DisplayName “Require Inbound Authentication”
$Rule | Copy-NetIPsecRule –NewPolicyStore domain.costoso.com\new_gpo_name
$Rule | Copy-NetPhase1AuthSet –NewPolicyStore domain.costoso.com\new_gpo_name

Windows PowerShell エラーの処理

Windows PowerShell スクリプトのエラーを処理するには、–ErrorAction パラメーターを使用します。 このパラメーターは、 Remove コマンドレットで特に便利です。 特定のルールを削除する場合、ルールが見つからない場合は失敗します。 ルールが削除されている場合、ルールがまだ存在しない場合は、そのエラーを無視してもかまいません。 この場合、次の操作を実行して、削除操作中に "ルールが見つかりません" エラーを抑制できます。

Windows PowerShell

Remove-NetFirewallRule –DisplayName “Contoso Messenger 98” –ErrorAction SilentlyContinue

ワイルドカードを使用すると、エラーを抑制することもできますが、削除する予定がないルールと一致する可能性があります。 これらのワイルドカードは便利なショートカットですが、誤って削除される追加のルールがないことがわかっている場合にのみ使用してください。 そのため、次のコマンドレットもルールを削除し、"見つかりません" エラーを抑制します。

Windows PowerShell

Remove-NetFirewallRule –DisplayName “Contoso Messenger 98*”

ワイルドカードを使用する場合、一致する一連のルールを再確認する場合は、 –WhatIf パラメーターを使用できます。

Windows PowerShell

Remove-NetFirewallRule –DisplayName “Contoso Messenger 98*” –WhatIf

一致するルールの一部のみを削除する場合は、 –Confirm パラメーターを使用してルールごとの確認プロンプトを取得できます。

Windows PowerShell

Remove-NetFirewallRule –DisplayName “Contoso Messenger 98*” –Confirm

操作全体を実行し、操作の実行時に各ルールの名前を表示することもできます。

Windows PowerShell

Remove-NetFirewallRule –DisplayName “Contoso Messenger 98*” –Verbose

監視

次のWindows PowerShell コマンドは、デプロイ フェーズの更新サイクルに役立ちます。

特定のストア内のすべての IPsec ルールを表示できるようにするには、次のコマンドを使用します。 Netsh では、このコマンドでは、profile=domain、public または profile=domain、private のルールは表示されません。 ルールに含まれる 1 つのエントリ ドメインを持つルールのみが表示されます。 次のコマンド例では、すべてのプロファイルの IPsec 規則を示します。

Netsh

netsh advfirewall consec show rule name=all

Windows PowerShell

Show-NetIPsecRule –PolicyStore ActiveStore

現在デバイスに接続されているピアや、セキュリティアソシエーションの形成に使用される保護スイートなどの情報について、メイン モードのセキュリティ アソシエーションを監視できます。

次のコマンドレットを使用して、既存のメイン モードルールとそのセキュリティアソシエーションを表示します。

Netsh

netsh advfirewall monitor show mmsa all

Windows PowerShell

Get-NetIPsecMainModeSA

ルールのソース GPO を検索する

特定のルールまたはルールのグループのプロパティを表示するには、ルールに対してクエリを実行します。 クエリが NotConfigured として指定されたフィールドを返す場合、ルールの発信元となるポリシー ストアを決定できます。

GPO から取得されたオブジェクトの場合 (–PolicyStoreSourceType パラメーターは Show コマンドで GroupPolicy として指定されます)、–TracePolicyStore が渡されると、GPO の名前が見つかり、PolicyStoreSource フィールドに返されます。

Windows PowerShell

Get-NetIPsecRule –DisplayName “Require Inbound Authentication” –TracePolicyStore

明らかにされたソースにドメイン名が含まれていないことに注意することが重要です。

基本的なドメイン分離ポリシーをデプロイする

IPsec を使用して、ドメイン メンバーを非ドメイン メンバーから分離できます。 ドメイン分離では、IPsec 認証を使用して、組織のセキュリティを向上させるために、ドメインに参加しているデバイスが通信デバイスの ID を肯定的に確立することを要求します。 IPsec ルール オブジェクトを使用してトラフィックをセキュリティで保護するために、IPsec の 1 つ以上の機能を使用できます。

ネットワークにドメイン分離を実装するために、ドメイン内のデバイスは、IPsec によって保護されていない未承諾の受信ネットワーク トラフィックをブロックする IPsec 規則を受け取ります。 ここでは、ドメイン メンバーによる認証を必要とする IPsec 規則を作成します。 この認証を使用すると、ドメインに参加していないデバイスからドメインに参加しているデバイスを分離できます。 次の例では、受信トラフィックに Kerberos 認証が必要であり、送信トラフィックに対して要求されます。

Netsh

netsh advfirewall set store gpo=domain.contoso.com\domain_isolation
netsh advfirewall consec add rule name=“Basic Domain Isolation Policy” profile=domain endpoint1=”any” endpoint2=”any” action=requireinrequestout auth1=”computerkerb”

Windows PowerShell

$kerbprop = New-NetIPsecAuthProposal –Machine –Kerberos
$Phase1AuthSet = New-NetIPsecPhase1AuthSet -DisplayName "Kerberos Auth Phase1" -Proposal $kerbprop –PolicyStore domain.contoso.com\domain_isolation
New-NetIPsecRule –DisplayName “Basic Domain Isolation Policy” –Profile Domain –Phase1AuthSet $Phase1AuthSet.Name –InboundSecurity Require –OutboundSecurity Request –PolicyStore domain.contoso.com\domain_isolation

IPsec トンネル モードを構成する

次のコマンドは、ローカル デバイス (1.1.1.1) 上のインターフェイスを介してプライベート ネットワーク (192.168.0.0/16) からのトラフィックをルーティングする IPsec トンネルを作成します。 1) パブリック インターフェイス (2.2.2.2) を介して別のプライベート ネットワーク (192.157.0.0/16) にパブリック ネットワークに接続されます。 トンネルを通過するすべてのトラフィックは、ESP/SHA1 を使用して整合性がチェックされ、ESP/DES3 を使用して暗号化されます。

Netsh

netsh advfirewall consec add rule name="Tunnel from 192.168.0.0/16 to 192.157.0.0/16" mode=tunnel endpoint1=192.168.0.0/16 endpoint2=192.157.0.0/16 localtunnelendpoint=1.1.1.1 remotetunnelendpoint=2.2.2.2 action=requireinrequireout qmsecmethods=esp:sha1-3des

Windows PowerShell

$QMProposal = New-NetIPsecQuickModeCryptoProposal -Encapsulation ESP -ESPHash SHA1 -Encryption DES3
$QMCryptoSet = New-NetIPsecQuickModeCryptoSet –DisplayName “esp:sha1-des3” -Proposal $QMProposal
New-NetIPSecRule -DisplayName “Tunnel from HQ to Dallas Branch” -Mode Tunnel -LocalAddress 192.168.0.0/16 -RemoteAddress 192.157.0.0/16 -LocalTunnelEndpoint 1.1.1.1 -RemoteTunnelEndpoint 2.2.2.2 -InboundSecurity Require -OutboundSecurity Require -QuickModeCryptoSet $QMCryptoSet.Name

IPsec を使用してセキュリティで保護されたファイアウォール規則を展開する

Windows Defender ファイアウォールを介してセキュリティで保護されたトラフィックのみを許可できる状況では、手動で構成されたファイアウォールと IPsec ルールの組み合わせが必要です。 ファイアウォール規則によって、許可されるパケットのセキュリティ レベルが決まり、基になる IPsec 規則によってトラフィックがセキュリティで保護されます。 シナリオは、Windows PowerShellと Netsh で実現できます。デプロイには多くの類似点があります。

セキュリティで保護されたファイアウォール規則を作成する (セキュリティで保護されている場合は許可する)

セキュリティで保護されている場合に接続を許可するようにファイアウォール規則を構成するには、対応するトラフィックを認証し、整合性を保護し、必要に応じて IPsec によって暗号化する必要があります。

次の例では、トラフィックを認証する必要があるファイアウォール規則を作成します。 このコマンドは、リモート デバイスからの接続が個別の IPsec 規則を使用して認証された場合にのみ、受信 Telnet ネットワーク トラフィックを許可します。

Netsh

netsh advfirewall firewall add rule name="Allow Authenticated Telnet" dir=in program=%SystemRoot%\System32\tlntsvr.exe security=authenticate action=allow

Windows PowerShell

New-NetFirewallRule -DisplayName “Allow Authenticated Telnet” -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -Authentication Required -Action Allow

次のコマンドは、最初の (コンピューター) 認証を必要とし、オプションの 2 番目の (ユーザー) 認証を試行する IPsec 規則を作成します。 このルールを作成すると、Messenger プログラムのファイアウォール規則の要件を通じてトラフィックがセキュリティで保護され、許可されます。

Netsh

netsh advfirewall consec add rule name="Authenticate Both Computer and User" endpoint1=any endpoint2=any action=requireinrequireout auth1=computerkerb,computerntlm auth2=userkerb,userntlm,anonymous

Windows PowerShell

$mkerbauthprop = New-NetIPsecAuthProposal -Machine –Kerberos
$mntlmauthprop = New-NetIPsecAuthProposal -Machine -NTLM
$P1Auth = New-NetIPsecPhase1AuthSet -DisplayName “Machine Auth” –Proposal $mkerbauthprop,$mntlmauthprop
$ukerbauthprop = New-NetIPsecAuthProposal -User -Kerberos
$unentlmauthprop = New-NetIPsecAuthProposal -User -NTLM
$anonyauthprop = New-NetIPsecAuthProposal -Anonymous
$P2Auth = New-NetIPsecPhase2AuthSet -DisplayName “User Auth” -Proposal $ukerbauthprop,$unentlmauthprop,$anonyauthprop
New-NetIPSecRule -DisplayName “Authenticate Both Computer and User” -InboundSecurity Require -OutboundSecurity Require -Phase1AuthSet $P1Auth.Name –Phase2AuthSet $P2Auth.Name

暗号化とグループ メンバーシップを要求してサーバーを分離する

組織内のデバイスのセキュリティを向上させるために、ドメイン メンバーが制限されているドメイン分離を展開できます。 相互に通信するときに認証が必要であり、認証されていない受信接続を拒否します。 機密データを持つサーバーのセキュリティを強化するには、エンタープライズ ドメイン内のデバイスのサブセットにのみアクセスできるようにすることで、このデータを保護する必要があります。

IPsec は、サーバーを分離することで、この追加の保護レイヤーを提供できます。 サーバー分離では、機密性の高いデータ アクセスは正当なビジネス ニーズを持つユーザーとデバイスに制限され、データは盗聴を防ぐためにさらに暗号化されます。

グループ メンバーシップと暗号化を必要とするファイアウォール規則を作成する

サーバー分離を展開するには、認証を強制する IPsec 規則で、承認されたユーザーまたはデバイスへのトラフィックを制限するファイアウォール規則をレイヤー化します。

次のファイアウォール規則では、"アクセス サーバーへの承認" というカスタム グループのメンバーであるユーザー アカウントからの Telnet トラフィックを許可します。 さらに、制限パラメーターを指定することで、デバイス、ユーザー、またはその両方に基づいて、このアクセスを制限できます。

セキュリティ記述子定義言語 (SDDL) 文字列は、ユーザーまたはグループのセキュリティ識別子 (SID) を拡張することによって作成されます。 グループの SID の検索の詳細については、「グループ アカウントの SID の検索」を参照してください。

グループへのアクセスを制限すると、管理者はファイアウォールまたは IPsec ポリシー Windows Defender強力な認証サポートを拡張できます。

次の例では、セキュリティ グループを表す SDDL 文字列を作成する方法を示します。

Windows PowerShell

$user = new-object System.Security.Principal.NTAccount (“corp.contoso.com\Administrators”)
$SIDofSecureUserGroup = $user.Translate([System.Security.Principal.SecurityIdentifier]).Value
$secureUserGroup = "D:(A;;CC;;;$SIDofSecureUserGroup)"

前のスクリプトレットを使用すると、次に示すように、セキュリティで保護されたコンピューター グループの SDDL 文字列を取得することもできます。

Windows PowerShell

$secureMachineGroup = "D:(A;;CC;;;$SIDofSecureMachineGroup)"

セキュリティ グループを作成する方法や SDDL 文字列を決定する方法の詳細については、「 SID の操作」を参照してください。

Telnet は、暗号化を提供しないアプリケーションです。 このアプリケーションは、名前やパスワードなどのデータをネットワーク経由で送信できます。 このデータは、悪意のあるユーザーによって傍受される可能性があります。 管理者が Telnet の使用を許可し、トラフィックを保護する場合は、IPsec 暗号化を必要とするファイアウォール規則を作成できます。 このファイアウォール規則は、管理者がこのアプリケーションを使用するときに、このポートによって送受信されるすべてのトラフィックが暗号化されていることを確認するために必要です。 IPsec が接続の承認に失敗した場合、このアプリケーションからのトラフィックは許可されません。

この例では、次のファイアウォール規則の作成を通じて、指定されたセキュリティで保護されたユーザー グループからの受信 Telnet トラフィックの認証と暗号化のみを許可します。

Netsh

netsh advfirewall set store gpo=domain.contoso.com\Server_Isolation
netsh advfirewall firewall add rule name=“Allow Encrypted Inbound Telnet to Group Members Only” program=%SystemRoot%\System32\tlntsvr.exe protocol=TCP dir=in action=allow localport=23 security=authenc rmtusrgrp ="D:(A;;CC;;; S-1-5-21-2329867823-2610410949-1491576313-1735)"

Windows PowerShell

New-NetFirewallRule -DisplayName "Allow Encrypted Inbound Telnet to Group Members Only" -Program %SystemRoot%\System32\tlntsvr.exe -Protocol TCP -Direction Inbound -Action Allow -LocalPort 23 -Authentication Required -Encryption Required –RemoteUser $secureUserGroup –PolicyStore domain.contoso.com\Server_Isolation

エンドポイント セキュリティの適用

前の例では、特定のアプリケーションのエンドツーエンドのセキュリティを示しました。 多くのアプリケーションにエンドポイント セキュリティが必要な状況では、アプリケーションごとにファイアウォール規則を持つことは煩雑で管理が困難な場合があります。 承認は、規則ごとの基準をオーバーライドし、IPsec レイヤーで行うことができます。

この例では、次のコマンドレットを使用して、承認されたユーザー グループからのトランスポート モードトラフィックのみを許可するようにグローバル IPsec 設定を設定します。 セキュリティ グループの操作については、前の例を参照してください。

Windows PowerShell

Set-NetFirewallSetting -RemoteMachineTransportAuthorizationList $secureMachineGroup

IPsec で保護されたネットワーク トラフィックを許可するファイアウォール規則を作成する (認証されたバイパス)

認証されたバイパスを使用すると、指定した信頼されたデバイスまたはユーザーからのトラフィックがファイアウォール ブロック規則をオーバーライドできます。 このオーバーライドは、管理者がポート レベルの例外を使用せずに、スキャン サーバーを使用してデバイスを監視および更新する場合に役立ちます。 詳細については、「 認証されたファイアウォール バイパスを有効にする方法」を参照してください。

この例では、ブロックファイアウォール規則が存在することを前提としています。 この例では、指定したデバイスまたはユーザー セキュリティ グループのメンバーであるデバイスまたはユーザー アカウントからトラフィックが認証されている場合、任意の IP アドレスから任意のポート上のネットワーク トラフィックがブロック規則をオーバーライドすることを許可します。

Netsh

netsh advfirewall set store gpo=domain.contoso.com\domain_isolation
netsh advfirewall firewall add rule name="Inbound Secure Bypass Rule" dir=in security=authenticate action="bypass" rmtcomputergrp="D:(A;;CC;;;S-1-5-21-2329867823-2610410949-1491576313-1114)" rmtusrgrp="D:(A;;CC;;; S-1-5-21-2329867823-2610410949-1491576313-1735)"

Windows PowerShell

New-NetFirewallRule –DisplayName “Inbound Secure Bypass Rule" –Direction Inbound –Authentication Required –OverrideBlockRules $true -RemoteMachine $secureMachineGroup –RemoteUser $secureUserGroup –PolicyStore domain.contoso.com\domain_isolation

その他のリソース

Windows PowerShell概念の詳細については、次のトピックを参照してください。