次の方法で共有


Windows ファイアウォールの動的キーワード

重要

この記事では、プレビュー段階の機能または設定について説明します。 コンテンツは変更される可能性があり、プレビュー段階の他の機能やサービスに依存している可能性があります。

Windows ファイアウォールには、Windows ファイアウォールの構成と管理を簡略化する 動的キーワードと呼ばれる機能が含まれています。

動的キーワードを使用すると、一連の IP アドレス範囲、完全修飾ドメイン名 (FQDN)、および 1 つ以上のファイアウォール規則が参照できる 自動解決 オプションを定義できます。

動的キーワードを構成する

動的キーワードを構成するには、次を使用できます。

  • ファイアウォール CSP。Microsoft Intune などのモバイル デバイス管理 (MDM) ソリューションで使用できます。
  • Windows PowerShell

ヒント

Microsoft Intuneは、再利用可能な設定グループと呼ばれる簡略化された管理エクスペリエンスを提供します。 詳細については、「 ファイアウォール規則のプロファイルに再利用可能な設定グループを追加する」を参照してください。

この記事では、Windows PowerShellを使用して動的キーワードを構成する方法について説明します。

動的キーワードと完全修飾ドメイン名 (FQDN)

動的キーワードは、IP アドレス範囲または FQDN のセットを定義することによって構成できます。 FQDN を使用する場合に考慮すべき重要な事項を次に示します。

  • FQDN のサポートは、IP アドレスが動的で頻繁に変更される IP ルールを管理するオーバーヘッドを減らすためのサポートです
  • FQDN は、すべてのシナリオで IP アドレスに代わるわけではありません。 セキュリティとパフォーマンス上の理由から、可能な限り IP アドレスを使用する必要があります
    • FQDN ルールは、DNS 待機時間やその他の要因が原因で、エンドポイントのパフォーマンスに影響を与える可能性があります
    • FQDN はセキュリティで保護された DNS サービスではありません。 FQDN 解決では、エンドポイントの既定の DNS 構成が使用されます
  • FQDN ルールでは、その FQDN を IP アドレスに解決するために DNS クエリを実行する必要があります。 IP アドレスへのトラフィックは、FQDN ルールの DNS クエリを生成する必要があります
    • 制限事項: プロキシ経由でアクセスされる Web サイト、セキュリティで保護された DNS サービス、特定の VPN トンネル構成、エンドポイント上のキャッシュされた IP
  • 部分修飾ドメイン名 (PQDN) は許可されますが、FQDN を使用することをお勧めします。 ホストではワイルドカード * がサポートされています(例: *.contoso.com

FQDN 規則の 2 つの例を次に示します。

  • 既定ですべての送信と受信をブロックし、特定の送信トラフィックを許可する
  • 既定ですべての受信をブロックし、特定の送信トラフィックをブロックする

受信 FQDN 規則はネイティブにサポートされていません。 ただし、 事前ハイドレート スクリプトを使用して、ルールの受信 IP エントリを生成できます。

注意

送信規則のブロックの既定の構成は、セキュリティが高い特定の環境で考慮できます。 ただし、既定でトラフィックを許可する方法で 受信 規則の構成を変更しないでください。

高セキュリティ環境では、すべてのアプリのインベントリを維持する必要があります。 レコードには、アプリにネットワーク接続が必要かどうかを含める必要があります。 管理者は、ネットワーク接続を必要とする各アプリに固有の新しいルールを作成し、デバイス管理ソリューションを使用してそれらのルールを一元的にプッシュする必要があります。

関数と既知の制限事項

Windows ファイアウォール FQDN 機能では、Network Protection 外部コールアウト ドライバーを使用して、DNS クエリが FQDN 規則と一致する DNS 応答を検査します。 この機能の重要な機能と制限事項は次のとおりです。

  • Network Protection コンポーネントは、DNS クエリを定期的に実行しません。 アプリケーションで DNS クエリを実行する必要がある
  • Windows ファイアウォールは、デバイスの再起動時に保存されているすべての解決済み IP アドレスをフラッシュします
  • ネットワーク保護は、検査中に UDP パケットを保持しないため、DNS 応答を同期的に検査しません。 その結果、DNS 応答を受信した後にアプリケーションが接続を試みますが、ファイアウォール規則の更新よりも速い場合はブロックされる可能性があります
    • 一般に、アプリケーションには、最初に失敗した接続の再試行ロジックがあり、その結果、問題はエンド ユーザーに対して透過的です
    • 場合によっては、コンポーネントが初期接続の失敗時に再試行ロジックを持っていない可能性があります。 これは、次の 2 つの方法で解決されます。
      • ユーザーは、使用しているアプリケーションで 更新 をヒットすることができ、正常に接続する必要があります
      • 管理者は、この条件が環境内で発生している 事前ハイドレート スクリプトを巧みに使用できます。

FQDN 機能の要件

FQDN 機能の要件を次に示します。

  • Microsoft Defenderウイルス対策を有効にして、プラットフォームのバージョン4.18.2209.7以降を実行する必要があります。
  • ネットワーク保護は 、ブロック モードまたは 監査 モードである必要があります。 詳細については、「 ネットワーク保護が有効になっているかどうかを確認する」を参照してください。
  • HTTPS 経由の DNS (DoH) を無効にする必要があります。 お好みのブラウザーを構成するには、次の設定を使用できます。
  • デバイスの既定の DNS 解決設定が適用されます。 この機能では、DNS のセキュリティや機能の変更は提供されません

    ヒント

    また、そこから ADMX ファイルをダウンロードし、指示に従い、gpedit.msc を使用してローカル テスト用に構成することもできます。

Windows PowerShellを使用して動的キーワードを管理する

このセクションでは、Windows PowerShellを使用して動的キーワードを管理する方法の例をいくつか示します。 動的キーワードを使用する場合に考慮すべき重要な点は次のとおりです。

  • すべての動的キーワード (keyword) オブジェクトは、それらを表す一意識別子 (GUID) を持っている必要があります
  • ファイアウォール規則では、条件に対して IP アドレスを明示的に定義するのではなく、動的キーワードを使用できます
  • ファイアウォール規則では、動的キーワードと静的に定義されたアドレス範囲の両方を使用できます
  • 動的キーワード (keyword) オブジェクトは、複数のファイアウォール規則間で再利用できます
  • ファイアウォール規則にリモート アドレスが構成されていない場合、規則は適用されません。 たとえば、ルールがまだ解決されていないオブジェクトのみを AutoResolve 使用して構成されている場合
  • ルールで複数の動的キーワードを使用する場合、 現在 解決されているすべてのアドレスにルールが適用されます。 ルールは、未解決のオブジェクトがある場合でも適用されます。 動的キーワード (keyword) アドレスが更新されると、関連付けられているすべてのルール オブジェクトにリモート アドレスが更新されます
  • Windows では、ルールと動的キーワード (keyword) アドレス間の依存関係は適用されません。どちらのオブジェクトも最初に作成できます。 ルールは、まだ存在しない動的キーワード (keyword) ID を参照できます。この場合、ルールは適用されません
  • 動的キーワード (keyword)アドレスは、ファイアウォール規則によって使用されている場合でも削除できます

送信を許可する

PowerShell から FQDN を許可するスクリプトの例を次に示します。 変数の値を $fqdn ブロックする FQDN に置き換えます (1 行目)。

$fqdn = 'contoso.com'
$id = '{' + (new-guid).ToString() + '}'
New-NetFirewallDynamicKeywordAddress -id $id -Keyword $fqdn -AutoResolve $true
New-NetFirewallRule -DisplayName "allow $fqdn" -Action Allow -Direction Outbound -RemoteDynamicKeywordAddresses $id

動的キーワード (keyword)アドレスは、 パラメーターを AutoResolve または $falseに設定して$true作成できます。 が に$true設定されている場合AutoResolve、Windows はキーワード (keyword)を IP アドレスに解決しようとします。

送信をブロックする

PowerShell から FQDN をブロックするスクリプトの例を次に示します。 変数の値を $fqdn ブロックする FQDN に置き換えます (1 行目)。

$fqdn = 'contoso.com'
$id = '{' + (new-guid).ToString() + '}'
New-NetFirewallDynamicKeywordAddress -id $id -Keyword $fqdn -AutoResolve $true
New-NetFirewallRule -DisplayName "block $fqdn" -Action Block -Direction Outbound -RemoteDynamicKeywordAddresses $id

自動解決ルールと関連付けられた解決済み IP アドレスを表示する

この例では、パラメーターが に設定$trueされ、関連付けられている解決済み IP アドレスを持つAutoResolveすべての動的キーワード (keyword) アドレスを表示する方法を示します。

Get-NetFirewallDynamicKeywordAddress -AllAutoResolve

DNS クエリが観察されるまで、IP アドレスは設定されません。

FQDN ルールをハイドレートする

次のサンプル スクリプトでは、現在の Windows ファイアウォール構成を読み取り、FQDN ベースの規則を抽出し、各ドメインで DNS 解決を実行します。 その結果、これらのルールの IP アドレスは "事前ハイドレート" されます。

Get-NetFirewallDynamicKeywordAddress -AllAutoResolve |`
ForEach-Object {
  if(!$_.Keyword.Contains("*")) {
    Write-Host "Getting" $_.Keyword
    resolve-dnsname -Name $_.Keyword -DNSOnly | out-null
  }
}

同様のスクリプトを使用して、 を使用して DNS 解決を nslookup.exe実行できます。

Get-NetFirewallDynamicKeywordAddress -AllAutoResolve |`
ForEach-Object {
  if(!$_.Keyword.Contains("*")) {
    Write-Host "Getting" $_.Keyword
    nslookup $_.Keyword
  }
}

を使用 nslookup.exeする場合は、すべての送信ポスチャをブロックする場合は 、送信 ファイアウォール規則を作成する必要があります。 の送信規則を作成するコマンドを次に nslookup.exe示します。

$appName = 'nslookup'
$appPath = 'C:\Windows\System32\nslookup.exe'
New-NetFirewallRule -DisplayName "allow $appName" -Program $appPath -Action Allow -Direction Outbound -Protocol UDP -RemotePort 53

すべての送信をブロックし、一部の FQDN を許可する

次の例では、FQDN 評価のためにアプリケーションの一覧が解析されます。 スクリプトに一覧表示されている FQDN は、Microsoft Edge の初回起動時にトラフィックを検査するときに観察されました。

重要

これは完全なリストでも推奨事項でもありません。 これは、適切な接続と機能を確保するためにアプリケーションを評価する方法の例です。

インターネット接続の Microsoft Edge 要件の詳細については、「 Microsoft Edge エンドポイントの許可リスト」を参照してください。

$domains = @(
    '*.microsoft.com',
    '*.msftconnecttest.com',
    'assets.msn.com',
    'client.wns.windows.com',
    'config.edge.skype.com',
    'ctldl.windowsupdate.com',
    'dns.msftncsi.com',
    'login.live.com',
    'ntp.msn.com'
)

foreach ($domain in $domains) {
    $id = '{' + (New-Guid).ToString() + '}'
    New-NetFirewallDynamicKeywordAddress -Id $id -Keyword $domain -AutoResolve $true
    New-NetFirewallRule -DisplayName "allow $domain" -Action Allow -Direction Outbound -RemoteDynamicKeywordAddresses $id
}

動的キーワードの管理に使用される PowerShell コマンドレットの詳細については、次を参照してください。

API 構造の詳細については、「 ファイアウォール動的キーワード」を参照してください。