PowerShellでWindows ファイアウォールを設定してみた

Windows Server 2012 や Windows 8 以降、PowerShell に「NetSecurity」モジュールが追加されたことで、Windows ファイアウォールを設定できるようになりました。

 

 

Windows Server 2012 や Windows 8 に限りませんが、近年の Windows OS は、デフォルトで 外部からの ping に応答しないようになっています。

これは、「Windows ファイアウォール」が有効で、なおかつ 「ICMP の応答を許可する設定」が無効だからです。

応答させるためには、「Windows ファイアウォール」自体を無効化するか、もしくは 「ICMP の応答を許可する設定」を有効化する必要があります。

今回は、後者の設定を PowerShell でやってみます。(IPv4 による通信を想定)

 

 

なお、この設定は GUI「セキュリティが強化された Windows ファイアウォール」において、「ファイルとプリンターの共有(エコー要求 - ICMPv4 受信)」という表示名で存在します。

 

 

まずは、デフォルトの設定が無効であることを確認します。

(Get-NetFirewallRule -name FPS-ICMP4-ERQ-In).Enable

↓2015/11/14 末尾の一文字が欠けていたので修正しました。

(Get-NetFirewallRule -name FPS-ICMP4-ERQ-In).Enabled

この実行結果は「False」となるはずです。

 

 

続いて、この設定を有効化します。

Set-NetFirewallRule -name FPS-ICMP4-ERQ-In -enabled true

これにより、外部からの ping に応答するようになります。

前述の確認用コマンドレットの実行結果も、「True」になるはずです。

(OSの再起動や、ネットワークアダプタの無効化・有効化といった作業は特に必要ありません。)