Windows TIPS
[Network]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

Windows Vista/Windows Server 2008のファイアウォールをnetshコマンドで制御する

解説をスキップして操作方法を読む

デジタルアドバンテージ 打越 浩幸
2008/06/13
対象OS
Windows Vista
Windows Server 2008
Windows VistaやWindows Server 2008のセキュリティが強化されたWindowsファイアウォールをコマンド・プロンプトから制御するには、netsh firewallではなく、netsh advfirewallコマンドを利用する。
新しいファイアウォールでは、アウトバウンド方向の通信もフィルタできる。
送信フィルタをセットするためには、netsh advfirewall firewallコンテキストでadd ruleコマンドを利用する。

解説

 TIPS「Windows Vistaのファイアウォールでアウトバウンド通信をブロックする」では、GUIの管理ツールを使って、Windows Vista/Windows Server 2008の「セキュリティが強化されたWindowsファイアウォール」のアウトバウンド通信フィルタを作成する例を紹介した。だがこの新しいファイアウォールは、netshというコマンド・ラインのツールを使っても設定することができる。リモートからtelnetなどでログオンして作業する場合には、このようなコマンド・プロンプト上で動作するツールの方が便利だろう。また、Windows Server 2008のServer Coreのように、GUIの操作機能を持っていないOSの場合は、netshコマンドでファイアウォールの設定を確認、変更するしかない。本TIPSでは、セキュリティが強化されたWindowsファイアウォールをnetshコマンドで制御する例として、新しい送信規則を追加する方法を紹介する。

 なお、セキュリティが強化されたWindowsファイアウォールの詳細については、連載「Vistaの地平――進化したWindows Vistaのファイアウォール機能」を参照していただきたい(Windows Vistaに限らず、Windows Server 2008でも同じである)。

操作方法

 Windows XPやWindows Server 2003の「Windowsファイアウォール」をコマンド・プロンプトで制御するには、「netsh firewall」というコマンドを利用する。これは、netshコマンドのfirewallコンテキストにあるコマンドを使うという意味である。これに対し、Windows VistaやWindows Server 2008の「セキュリティが強化されたWindowsファイアウォール」を制御するには、「netsh advfirewall」というコマンドを利用する。

C:\>netsh …netshコマンドの起動
netsh>advfirewall …netsh advfirewallコンテキストへの切り替え
netsh advfirewall>? …ヘルプ
…(中略)…
このコンテキストのコマンド:
?              - コマンドの一覧を表示します。
consec         - 'netsh advfirewall consec' コンテキストに変更します。
dump           - 構成スクリプトを表示します。
export         - ファイルに現在のポリシーをエクスポートします。
firewall       - 'netsh advfirewall firewall' コンテキストに変更します。
…(以下省略)…

 ファイアウォールのルール(新しい送受信規則)を作るためには、netsh advfirewallのさらに中にある、netsh advfirewall firewallコンテキストを利用する。このコンテキストでadd ruleコマンドを実行すればよい(既存の規則を編集するにはset ruleを使う)。

netsh advfirewall>firewall …firewallコンテキストへの切り替え
netsh advfirewall firewall>? …へるぷ
…(中略)…
このコンテキストのコマンド:
?              - コマンドの一覧を表示します。
add            - 新しい受信または送信のファイアウォール規則を追加します。
delete         - すべての一致する受信の規則を削除します。
dump           - 構成スクリプトを表示します。
help           - コマンドの一覧を表示します。
set            - 既存の規則のプロパティに新しい値を設定します。
…(中略)…
netsh advfirewall firewall>set rule …ルールの作成のヘルプ
…(中略)…
使用法: set rule
      group=<文字列> | name=<文字列>
      [dir=in|out]
      [profile=public|private|domain|all[,...]]
      [program=<プログラム パス>]
      [service=<サービスの短い名前>|any]
      [localip=any|<IPv4 アドレス>|<IPv6 アドレス>|<サブネット>|<範囲>|<一覧>]
      [remoteip=any|localsubnet|dns|dhcp|wins|defaultgateway|
         <IPv4 アドレス>|<IPv6 アドレス>|<サブネット>|<範囲>|<一覧>]
      [localport=0-65535|RPC|RPC-EPMap|any[,...]]
      [remoteport=0-65535|any[,...]]
      [protocol=0-255|icmpv4|icmpv6|icmpv4:type,code|icmpv6:type,code|
         tcp|udp|any]
      new
      [name=<文字列>]
      [dir=in|out]
      [program=<プログラム パス>
      [service=<サービスの短い名前>|any]
      [action=allow|block|bypass]
      [description=<文字列>]
      [enable=yes|no]
      [profile=public|private|domain|any[,...]]
      [localip=any|<IPv4 アドレス>|<IPv6 アドレス>|<サブネット>|<範囲>|<一覧>]
      [remoteip=any|localsubnet|dns|dhcp|wins|defaultgateway|
         <IPv4 アドレス>|<IPv6 アドレス>|<サブネット>|<範囲>|<一覧>]
      [localport=0-65535|RPC|RPC-EPMap|any[,...]]
      [remoteport=0-65535|any[,...]]
      [protocol=0-255|icmpv4|icmpv6|icmpv4:type,code|icmpv6:type,code|
         tcp|udp|any]
      [interfacetype=wireless|lan|ras|any]
      [rmtcomputergrp=<SDDL string>]
      [rmtusrgrp=<SDDL 文字列>]
      [edge=yes|no]
      [security=authenticate|authenc|notrequired]
…(以下省略)…

 従来のWindowsファイアウォールと比べると、セキュリティが強化されたWindowsファイアウォールでは、アウトバウンド方向の通信もフィルタできるように拡張されているし、プロファイルも「パブリック」と「プライベート」と「ドメイン」の3つに拡張されているため(従来は「標準」と「ドメイン」の2つ)、構文がより複雑になっている(TIPS「Windowsファイアウォールのプロファイルを知る」参照)。

 以下では、アウトバウンド・フィルタの例として、TCPの80番(HTTP)への送信を禁止するルールを追加してみよう。プロファイルとしては、プライベートとパブリックを指定している。

※TCPの80番(HTTP)への送信を禁止するルールの追加例。プロファイルはprivateとpublicの2つ
netsh advfirewall firewall>add rule name="Outbound_HTTP_Block" dir=out action=block protocol=tcp remoteport=80 profile=private,public
OK

 追加したルールの内容を確認するには、show ruleコマンドを利用する(show rule allだけだと、全規則が表示される)。

※追加したルールを表示させてみる。verboseは詳しく表示させるためのオプション
netsh advfirewall firewall>show rule name="Outbound_HTTP_Block" verbose
↓……結果
規則名:                            Outbound_HTTP_Block
---------------------------------------------------
有効:                                 Yes
方向:                                 Out
プロファイル:                               Private,Public
グループ:
LocalIP:                              Any
RemoteIP:                             Any
プロトコル:                                 TCP
ローカル ポート:                            Any
リモート ポート:                            80
エッジ トラバーサル:                       No
InterfaceTypes:                       Any
セキュリティ:                               NotRequired
操作:                                       Block
OK

 追加した規則を削除するには、del ruleコマンドを利用する。End of Article

「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間