Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

PowerShellを使用したWindowsファイアウォールルールの構成

この記事では、PowerShellを使用してセキュリティが強化された組み込みのWindowsDefenderファイアウォールの設定とルールを管理する方法の基本について説明します。さまざまなネットワークプロファイルに対してファイアウォールを有効/無効にする方法、ファイアウォールルールを作成または削除する方法、およびアクティブなファイアウォールルールの現在のセットを示す便利なテーブルを取得するための小さなPSスクリプトを作成する方法を検討します。

グラフィックコンソールからWindowsファイアウォールの設定を管理できます:[コントロールパネル]->[システムとセキュリティ]->WindowsDefenderファイアウォール 。ただし、Windows 8.1(Windows Server 2012 R2)以降では、組み込みの NetSecurityを使用できます。 ファイアウォールを管理するためのPowerShellモジュール。

以前は、次のコマンドを使用してWindowsファイアウォールのルールと設定を管理していました: netsh advfirewall Firewall

Windows 10のNetSecurityモジュールで使用できるコマンドは85個あります。リスト全体を表示できます:

Get-Command -Module NetSecurity

PowerShellを使用したWindowsファイアウォールルールの構成

PowerShellからWindowsファイアウォールネットワークプロファイルを管理する方法

Windowsファイアウォールには、次の3種類のネットワークプロファイルがあります。

  • ドメイン –ActiveDirectoryドメイン内のコンピューターに適用されます
  • プライベート –家庭用または企業用ネットワーク
  • 公開 –パブリックネットワーク

PowerShellを使用したWindowsファイアウォールルールの構成

Network Location Awareness(NLA)は、ネットワークタイプに関する情報をデータベースに保持します。誤って検出された場合は、ネットワークプロファイル(場所)を変更できます。

各ネットワークプロファイル(場所)は、使用されるファイアウォールルールのセットによって異なる場合があります。デフォルトでは、コンピューターのすべてのネットワークインターフェイスはファイアウォールによって保護されており、3種類のプロファイルすべてがそれらに適用されます。

ドメイン、パブリック、プライベートの3つのネットワークプロファイルすべてを有効にするには、次のコマンドを使用します。

Set-NetFirewallProfile -All -Enabled True

または、代わりに特定のプロファイルを設定しますすべて

Set-NetFirewallProfile -Profile Public -Enabled True

3つのネットワークロケーションすべてのファイアウォールを無効にするには、次のコマンドを使用します。

Set-NetFirewallProfile -All -Enabled False

Set-NetFirewallProfileコマンドレットを使用して、プロファイルオプション(デフォルトのアクション、ログ、ログファイルへのパスとサイズ、通知設定など)を変更できます。

最新のOSバージョンでは、すべてのプロファイルでWindowsファイアウォールが有効になっていることをご存知かもしれません。プロファイル設定では、すべてのアウトバウンド接続が許可され、インバウンド接続はブロックされます(許可された接続を除く)。

パブリックプロファイルのデフォルトのアクションを変更して、すべてのインバウンド接続をブロックしましょう。

Set-NetFirewallProfile –Name Public –DefaultInboundAction Block

現在のプロファイル設定は次のように表示できます。

Get-NetFirewallProfile -Name Public

PowerShellを使用したWindowsファイアウォールルールの構成

GPOを使用してWindowsファイアウォール設定を管理している場合は、現在の結果のプロファイル設定を次のように表示できます。

Get-NetFirewallProfile -policystore activestore

すべてのファイアウォール設定がコンピューターのすべてのネットワークインターフェイスに適用されていることを確認してください。

Get-NetFirewallProfile -Name Public | fl DisabledInterfaceAliases

すべてのインターフェースが保護されている場合、コマンドは次を返します。

DisabledInterfaceAliases : {NotConfigured}

PowerShellを使用したWindowsファイアウォールルールの構成

特定のインターフェースプロファイルを無効にすることができます(インターフェース名のリストを表示するには、Get-NetIPInterfaceを使用します):

Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases "Ethernet0"

ご覧のとおり、パブリックプロファイルはEthernet0に適用されなくなりました:

DisabledInterfaceAliases : {Ethernet0}

PowerShellを使用したWindowsファイアウォールルールの構成

プロファイルレベルでネットワーク接続のログオプションを設定できます。既定では、Windowsファイアウォールのログは%systemroot%\ system32 \ LogFiles \ Firewallに保存され、ファイルサイズは4MBです。すべての接続ログを有効にして、最大ファイルサイズを変更できます:

Set-NetFireWallProfile -Profile Domain -LogBlocked True -LogMaxSize 20000 -LogFileName‘%systemroot%\ system32 \ LogFiles \ Firewall \ pfirewall.log’

PowerShellを使用してWindowsファイアウォールルールを作成、編集、または削除する方法

ファイアウォールルールを管理するための9つのコマンドレットがあります:

  • 新機能-NetFirewallRule
  • コピー-NetFirewallRule
  • 無効-NetFirewallRule
  • 有効-NetFirewallRule
  • Get-NetFirewallRule
  • 削除-NetFirewallRule
  • 名前の変更-NetFirewallRule
  • Set-NetFirewallRule
  • Show-NetFirewallRule

Windowsファイアウォールでポートを開く方法の簡単な例をいくつか考えてみましょう。

たとえば、ドメインプロファイルとプライベートプロファイルのポート80と443へのインバウンドTCP接続を許可する場合は、次のコマンドを使用します。

New-NetFirewallRule -DisplayName'HTTP-Inbound' -Profile @('Domain'、'Private')-Direction Inbound -Action Allow -Protocol TCP -LocalPort @( '80'、 '443')

PowerShellを使用したWindowsファイアウォールルールの構成

アプリのネットワークアクセスを許可またはブロックできます。たとえば、Firefoxのアウトバウンド接続をブロックしたい場合:

New-NetFirewallRule -Program“ C:\ Program Files(x86)\ Mozilla Firefox \ firefox.exe” -Action Block -Profile Domain、Private -DisplayName“ Block Firefox browser” -Description“ Block Firefox browser” -Direction Outbound

1つのIPアドレスからのみポート3389でインバウンドRDP接続を許可するには:

New-NetFirewallRule -DisplayName "AllowRDP" –RemoteAddress 192.168.2.200 -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Allow

指定したIPサブネットまたはIP範囲のアドレスに対してping(ICMP)を許可するには、次のコマンドを使用します。

$ ips =@( "192.168.2.15-192.168.2.40"、 "192.168.100.15-192.168.100.200"、 "10.1.0.0/16")
New-NetFirewallRule-DisplayName"インバウンドICMPv4を許可する" -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -RemoteAddress $ ips -Action Allow
New-NetFirewallRule -DisplayName "Allow inbound ICMPv6" -Direction Inbound -Protocol ICMPv6 -IcmpType 8 -RemoteAddress $ ips -Action Allow

前回の記事では、PowerShellを使用してIPアドレスとドメイン/サイトDNS名の両方でサイトアクセスをブロックする方法を示しました。

既存のファイアウォールルールを編集するには、Set-NetFirewallRuleコマンドレットを使用します。たとえば、前に作成したルールの指定されたIPアドレスからのインバウンド接続を許可するには:

Get-NetFirewallrule -DisplayName'HTTP-Inbound' | Get-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -RemoteAddress 192.168.1.10

ファイアウォールルールに複数のIPアドレスを追加する場合は、次のスクリプトを使用します。

$ ips =@( "192.168.2.15"、 "192.168.2.17"、 "192.168.100.15")
Get-NetFirewallrule -DisplayName'WEB-Inbound' | Set-NetFirewallRule -RemoteAddress $ ips

ファイアウォールルールにすべてのIPアドレスを表示するには:

Get-NetFirewallrule-DisplayName'インバウンドICMPv4を許可する'|Get-NetFirewallAddressFilter

PowerShellを使用したWindowsファイアウォールルールの構成

Disable-NetFirewallRule を使用して、ファイアウォールルールを有効/無効にできます。 およびEnable-NetFirewallRule コマンドレット。

Disable-NetFirewallRule –DisplayName'WEB-Inbound'

ICMP(ping)を許可するには、次のコマンドを実行します:

Enable-NetFirewallRule -Name FPS-ICMP4-ERQ-In

ファイアウォールルールを削除するには、Remove-NetFirewallRuleコマンドレットを使用します。

PowerShellを使用したWindowsファイアウォールルールの一覧表示

次のように、インバウンドトラフィックのアクティブなファイアウォールルールのリストを表示できます。

Get-NetFirewallRule |ここで、{($_。enabled-eq $ True)-and($_。Direction-eq "Inbound")} | ft

アウトバウンドブロッキングルールのリストを表示する場合:

Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound

ルールにアプリ名を表示するには:

Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound | %{$_。Name; $ _ | Get-NetFirewallApplicationFilter}

PowerShellを使用したWindowsファイアウォールルールの構成

ご覧のとおり、Get-NetFirewallRuleコマンドレットには、ファイアウォールルールのネットワークポートとIPアドレスは表示されません。許可されたインバウンド(アウトバウンド)接続に関する詳細情報をポート番号を示すより便利な方法で表示するには、次のPowerShellスクリプトを使用します。

Get-NetFirewallRule -Action Allow -Enabled True -Direction Inbound |
Format-Table -Property Name、
@ {Name ='Protocol'; Expression ={($ PSItem | Get-NetFirewallPortFilter) .Protocol}}、
@ {Name ='LocalPort'; Expression ={($ PSItem | Get-NetFirewallPortFilter).LocalPort}}、
@ {Name ='RemotePort'; Expression ={($ PSItem | Get-NetFirewallPortFilter).RemotePort}}、
@ {Name ='RemoteAddress'; Expression ={($ PSItem | Get-NetFirewallAddressFilter).RemoteAddress}}、
Enabled、Profile、Direction、Action

PowerShellを使用したWindowsファイアウォールルールの構成

PowerShellには、コマンドプロンプトからWindowsファイアウォールルールを管理するための十分な機会があります。特定のイベントが発生した場合、PowerShellスクリプトを自動的に実行してポートを開閉できます。次の記事では、WindowsVDSサーバー上のRDPを介してリモートでブルートフォースパスワードを試行するIPアドレスを自動的にブロックする単純なPowerShellおよびWindowsファイアウォールベースのソリューションについて検討します。


  1. PowerShellを使用してWindowsDefenderファイアウォールでドメインまたはWebサイトをブロックする方法は?

    サードパーティのツールを使用せずに、Windowsで特定のWebサイト、ドメイン名、URL、またはIPアドレスへのアクセスをブロックするいくつかの方法を考えてみましょう。この例では、組み込みのWindows10ツールとPowerShell自動化機能を使用して特定のWebサイトをブロックしようとします。 通常、ネットワークルーター(インターネットへのアクセスに使用しているスイッチまたはWi-Fiアクセスポイント)またはサードパーティソフトウェア(コンテンツフィルター、DNSフィルターなど)でWebサイトをブロックする方が簡単です。 WindowsでHostsファイルを使用してWebサイ

  2. Windows 10 ファイアウォールのルールと設定を調整する

    Windows 10 では、Windows ファイアウォールは Vista からあまり変わっていません。全体として、それはほとんど同じです。 インバウンド プログラムへの接続は、許可リストにない限りブロックされます。 アウトバウンド ルールに一致しない接続はブロックされません。 一般公開もあります と非公開 ファイアウォールのネットワーク プロファイルを作成し、インターネットではなくプライベート ネットワークで通信できるプログラムを正確に制御できます。 この記事では、Windows 10 ファイアウォールのさまざまなオプションと設定について説明し、ニーズに合わせてそれらを調整する方法について