コマンド ラインを使用して Windows ファイアウォールを管理する

この記事では、Windows ファイアウォールの管理を自動化するために使用できる PowerShell と netsh.exeを使用して Windows ファイアウォールを管理する方法の例を示します。

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

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

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

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

Windows ファイアウォールの動作を制御する

グローバル既定の設定は、コマンド ライン インターフェイスを使用して定義できます。 これらの変更は、Windows ファイアウォール コンソールでも使用できます。 次のスクリプトレットは、既定の受信アクションと送信アクションを設定し、保護されたネットワーク接続を指定し、プログラムが受信接続の受信をブロックされたときにユーザーに通知を表示できるようにします。 マルチキャストまたはブロードキャスト ネットワーク トラフィックへのユニキャスト応答を許可し、トラブルシューティング用のログ設定を指定します。

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

Windows ファイアウォールを無効にする

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

  • スタート メニューは動作を停止できます
  • 最新のアプリケーションのインストールまたは更新に失敗する可能性がある
  • 電話による Windows のライセンス認証が失敗する
  • Windows ファイアウォールに依存するアプリケーションまたは OS の非互換性

Microsoft では、Microsoft 以外のファイアウォールをインストールする場合にのみ Windows ファイアウォールを無効にし、Microsoft 以外のソフトウェアが無効または削除されている場合に Windows ファイアウォールを既定値にリセットすることをお勧めします。 Windows ファイアウォールを無効にする必要がある場合は、Windows ファイアウォール サービスを停止して無効にしないでください ( サービス スナップインでは、表示名は Windows ファイアウォール、サービス名は MpsSvc)。 Windows ファイアウォール サービスの停止は、Microsoft ではサポートされていません。 Microsoft 以外のファイアウォール ソフトウェアは、互換性のために無効にする必要がある Windows ファイアウォールの部分のみをプログラムで無効にすることができます。 この目的のためにファイアウォールを自分で無効にしないでください。 Windows ファイアウォールを無効にする適切な方法は、Windows ファイアウォール プロファイルを無効にし、サービスを実行したままにすることです。 次の手順に従ってファイアウォールをオフにするか、グループ ポリシー設定 [コンピューターの構成|管理用テンプレート|ネットワーク|ネットワーク Connections|Windows ファイアウォール|Domain Prolfile|Windows ファイアウォール:すべてのネットワーク接続を保護します。 詳細については、「 Windows ファイアウォールの展開ガイド」を参照してください。 次の例では、すべてのプロファイルで Windows ファイアウォールを無効にします。

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

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

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

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

Windows PowerShellにファイアウォール規則を追加すると、Netsh で行ったように見えますが、パラメーターと値の指定方法は異なります。 Telnet アプリケーションがネットワーク上でリッスンできるようにする方法の例を次に示します。 このファイアウォール規則のスコープは、IP アドレスではなくキーワード (keyword)を使用してローカル サブネットに設定されます。 Netsh と同様に、ルールはローカル デバイスに作成され、すぐに有効になります。

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 名にスペースがある場合は、引用符が必要です。

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 ではサポートされていません

$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 アドレスと一致するようにルールを変更できます。

Set-NetFirewallRule -DisplayName "Allow Web 80" -RemoteAddress 192.168.0.2

Netsh では、変更する規則の名前を指定する必要があり、ファイアウォール規則を取得する別の方法はありません。 Windows PowerShellでは、既知のプロパティを使用してルールのクエリを実行できます。 を実行 Get-NetFirewallRuleすると、アドレスやポートなどの一般的な条件が表示されないことがあります。 これらの条件は、Filters と呼ばれる個別のオブジェクトで表されます。 前に示したように、New-NetFirewallRule と Set-NetFirewallRule ですべての条件を設定できます。 これらのフィールド (ポート、アドレス、セキュリティ、インターフェイス、サービス) に基づいてファイアウォール規則を照会する場合は、フィルター オブジェクト自体を取得する必要があります。 フィルター オブジェクトを使用して、 Web 80 を許可 する規則のリモート エンドポイントを変更できます (前に行いました)。 Windows PowerShellを使用して、ポート フィルターを使用してポートでクエリを実行し、ローカル ポートに影響を与える他のルールが存在すると仮定して、目的のルールが取得されるまでさらにクエリを作成します。 次の例では、クエリが単一のファイアウォール規則を返し、その後、Windows PowerShellのパイプライン入力機能を利用してコマンドレットにパイプSet-NetFirewallRule処理することを前提としています。

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

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

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

Set コマンドで関連付けられているグループ名を指定すると、グループ内の複数のルールを同時に変更できます。 同じ影響を共有する複数のルールを管理するために、指定した管理グループにファイアウォール規則を追加できます。 次の例では、グループ Telnet Management に受信と送信の両方の Telnet ファイアウォール規則を追加します。 Windows PowerShellでは、ルールが最初に作成されるときにグループ メンバーシップが指定されるため、前のルールの例を再作成します。 Netsh では、カスタム ルール グループにルールを追加することはできません。

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 グループを指定することはできません。

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

コマンドの助けを借りて Set 、ルール グループ名が指定されている場合、グループ メンバーシップは変更されませんが、グループのすべてのルールは、指定されたパラメーターによって示されたのと同じ変更を受け取ります。 次のスクリプトレットでは、ファイアウォール規則に影響を与えるリモート管理を含む定義済みグループ内のすべてのルールを有効にします。

Set-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Enabled True

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

Enable-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Verbose

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

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

Remove-NetFirewallRule -DisplayName "Allow Web 80"

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

Remove-NetFirewallRule -Action Block

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

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

リモートで管理する

WinRM を使用したリモート管理は、既定で有効になっています。 CimSession パラメーターをサポートするコマンドレットは WinRM を使用し、既定でリモートで管理できます。 次の例では、 RemoteDevice という名前のデバイス上の永続ストアのすべてのファイアウォール規則を返します。

Get-NetFirewallRule -CimSession RemoteDevice

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

$RemoteSession = New-CimSession -ComputerName RemoteDevice
Remove-NetFirewallRule -DisplayName "AllowWeb80" -CimSession $RemoteSession -Confirm

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

インターネット プロトコル セキュリティ (IPsec) ポリシーは、IPsec の動作を決定する規則で構成されます。 IPsec では、ネットワーク レベルのピア認証、データ配信元認証、データ整合性、データ機密性 (暗号化)、再生保護がサポートされています。 Windows PowerShellでは、Netsh や Windows ファイアウォール コンソールなどの強力で複雑な IPsec ポリシーを作成できます。 ただし、Windows PowerShellは文字列トークンベースではなくオブジェクトベースであるため、Windows PowerShellの構成により制御と柔軟性が向上します。 Netsh では、認証セットと暗号化セットが、特定の形式のコンマ区切りトークンの一覧として指定されました。 Windows PowerShellでは、既定の設定を使用するのではなく、最初に目的の認証または暗号化提案オブジェクトを作成し、好みの順序でリストにバンドルします。 次に、これらのセットを参照する 1 つ以上の IPsec 規則を作成します。 このモデルの利点は、ルール内の情報へのプログラムによるアクセスがはるかに簡単であるということです。 例を明確にするため、次のセクションを参照してください。 1 つの ipsec 規則を作成するためのオブジェクト モデル。

IPsec ルールを作成する

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

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

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

IPsec ルール オブジェクトに AH と ESP の両方を含むクイック モード提案のカスタム セットを作成する場合は、関連付けられたオブジェクトを個別に作成し、関連付けをリンクします。 認証方法の詳細については、「 IPsec プロトコルの選択」を参照してください。 その後、IPsec ルールを作成するときに、新しく作成されたカスタム クイック モード ポリシーを使用できます。 暗号化セット オブジェクトは、IPsec ルール オブジェクトにリンクされます。 crypto set オブジェクト。 この例では、カスタムクイックモード暗号セットを指定して、前に作成した IPsec 規則を基に構築します。 最終的な IPsec 規則では、指定した暗号化方法によって送信トラフィックを認証する必要があります。

$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 以外のオペレーティング システムを実行しており、インターネット キー Exchange バージョン 2 (IKEv2) 標準を使用する必要があります。 WINDOWS SERVER 2012で IKEv2 機能を適用するには、IPsec 規則のキー モジュールとして IKEv2 を指定します。 この機能仕様は、コンピューター証明書認証を使用してのみ実行でき、フェーズ 2 認証では使用できません。

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

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

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

同じ規則プロパティを持つファイアウォール規則と IPsec 規則を複製して、異なるポリシー ストア内で再作成するタスクを簡略化できます。 以前に作成したルールをあるポリシー ストアから別のポリシー ストアにコピーするには、関連付けられているオブジェクトも個別にコピーする必要があります。 関連付けられているファイアウォール フィルターをコピーする必要はありません。 他のコマンドレットと同じ方法でコピーするルールをクエリできます。 個々のルールをコピーすることは、Netsh インターフェイスでは不可能なタスクです。 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 コマンドレットで特に便利です。 特定のルールを削除する場合、ルールが見つからない場合は失敗することがわかります。 ルールが削除されている場合、ルールがまだ存在しない場合は、そのエラーを無視してもかまいません。 この場合は、次の操作を実行して、削除操作中に "ルールが見つかりません" エラーを抑制できます。

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98" -ErrorAction SilentlyContinue

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

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*"

ワイルドカードを使用する場合、一致する規則のセットをダブルチェックする場合は、-WhatIf パラメーターを使用できます。

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -WhatIf

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

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -Confirm

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

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -Verbose

監視

次のWindows PowerShell コマンドは、デプロイ フェーズの更新サイクルで役立ちます。 特定のストア内のすべての IPsec 規則を表示できるようにするには、次のコマンドを使用します。 Netsh では、このコマンドでは、profile=domain、public または profile=domain、private というルールは表示されません。 ルールに含まれる単一のエントリ ドメインを持つルールのみが表示されます。 次のコマンド例では、すべてのプロファイルの IPsec 規則を示します。

Show-NetIPsecRule -PolicyStore ActiveStore

メイン モードのセキュリティ関連付けを監視して、現在デバイスに接続されているピアや、セキュリティ アソシエーションの形成に使用されている保護スイートなどの情報を確認できます。 次のコマンドレットを使用して、既存のメイン モード規則とそのセキュリティアソシエーションを表示します。

Get-NetIPsecMainModeSA

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

特定のルールまたはルールのグループのプロパティを表示するには、ルールのクエリを実行します。 クエリが NotConfigured として指定されたフィールドを返す場合は、ルールの生成元のポリシー ストアを決定できます。 GPO から取得したオブジェクトの場合 (-PolicyStoreSourceType パラメーターは Show コマンドで GroupPolicy として指定されます)、-TracePolicyStore が渡されると、GPO の名前が見つかり、PolicyStoreSource フィールドに返されます。

Get-NetIPsecRule -DisplayName "Require Inbound Authentication" -TracePolicyStore

公開されたソースにはドメイン名が含まれていないことに注意してください。

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

IPsec を使用して、ドメイン メンバーを非ドメイン メンバーから分離できます。 ドメイン分離では、IPsec 認証を使用して、ドメインに参加しているデバイスが、organizationのセキュリティを向上させるために通信デバイスの ID を肯定的に確立することを要求します。 IPsec の 1 つ以上の機能を使用して、IPsec ルール オブジェクトを使用してトラフィックをセキュリティで保護できます。 ネットワークにドメイン分離を実装するために、ドメイン内のデバイスは、IPsec によって保護されていない未承諾の受信ネットワーク トラフィックをブロックする IPsec 規則を受け取ります。 ここでは、ドメイン メンバーによる認証を必要とする IPsec 規則を作成します。 この認証により、ドメインに参加しているデバイスを、ドメインに参加していないデバイスから分離できます。 次の例では、受信トラフィックに Kerberos 認証が必要であり、送信トラフィックに対して要求されます。

$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.1) のインターフェイスを介してプライベート ネットワーク (192.168.0.0/16) からのトラフィックをルーティングする IPsec トンネルを作成します 1) パブリック インターフェイス (2.2.2.2) を介して別のプライベート ネットワーク (192.157.0.0/16) にパブリック ネットワークに接続されます。 トンネルを通過するすべてのトラフィックは、ESP/SHA1 を使用して整合性をチェックされ、ESP/DES3 を使用して暗号化されます。

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

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

セキュリティで保護されている場合に接続を許可するようにファイアウォール規則を構成するには、対応するトラフィックを認証して整合性を保護し、必要に応じて IPsec によって暗号化する必要があります。 次の例では、トラフィックを認証する必要があるファイアウォール規則を作成します。 コマンドは、リモート デバイスからの接続が別の IPsec 規則を使用して認証されている場合にのみ、受信 Telnet ネットワーク トラフィックを許可します。

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

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

$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

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

organization内のデバイスのセキュリティを強化するために、ドメイン メンバーが制限されているドメイン分離を展開できます。 相互通信時に認証が必要であり、認証されていない受信接続を拒否します。 機密データを使用してサーバーのセキュリティを強化するには、エンタープライズ ドメイン内のデバイスのサブセットにのみアクセスを許可することで、このデータを保護する必要があります。 IPsec は、サーバーを分離することで、この追加の保護層を提供できます。 サーバーの分離では、機密性の高いデータ アクセスは、正当なビジネス ニーズを持つユーザーとデバイスに制限され、盗聴を防ぐためにデータがさらに暗号化されます。

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

サーバーの分離を展開するために、認証を適用する IPsec 規則上の承認されたユーザーまたはデバイスにトラフィックを制限するファイアウォール規則をレイヤー化します。 次のファイアウォール規則では、"アクセス サーバーに対して承認されました" というカスタム グループのメンバーであるユーザー アカウントからの Telnet トラフィックを許可します。このアクセスは、制限パラメーターを指定することで、デバイス、ユーザー、またはその両方に基づいてさらに制限できます。 セキュリティ記述子定義言語 (SDDL) 文字列は、ユーザーまたはグループのセキュリティ識別子 (SID) を拡張することによって作成されます。 グループの SID の検索の詳細については、「グループ アカウントの SID の検索」を参照してください。 グループへのアクセスを制限すると、管理者は Windows ファイアウォールまたは IPsec ポリシーを使用して強力な認証サポートを拡張できます。 次の例では、セキュリティ グループを表す SDDL 文字列を作成する方法を示します。

$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 文字列を取得することもできます。

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

セキュリティ グループを作成する方法、または SDDL 文字列を決定する方法の詳細については、「 SID の操作」を参照してください。 Telnet は、暗号化を提供しないアプリケーションです。 このアプリケーションは、名前やパスワードなどのデータをネットワーク経由で送信できます。 このデータは、悪意のあるユーザーによって傍受される可能性があります。 管理者が Telnet の使用を許可し、トラフィックを保護する場合は、IPsec 暗号化を必要とするファイアウォール規則を作成できます。 このファイアウォール規則は、管理者がこのアプリケーションを使用するときに、このポートによって送受信されるすべてのトラフィックが暗号化されていることを確認するために必要です。 IPsec が接続の承認に失敗した場合、このアプリケーションからのトラフィックは許可されません。 この例では、次のファイアウォール規則を作成することで、指定されたセキュリティで保護されたユーザー グループからの認証済みおよび暗号化された受信 Telnet トラフィックのみを許可します。

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 設定を設定します。 セキュリティ グループの操作については、前の例を参照してください。

Set-NetFirewallSetting -RemoteMachineTransportAuthorizationList $secureMachineGroup

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

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

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