Vistaの地平
第15回 進化したWindows Vistaのファイアウォール機能(後編)

2.netshコマンドによるファイアウォールの管理

デジタルアドバンテージ 打越 浩幸
2008/04/17

 ファイアウォールの設定や管理を行うには、いままで述べたようなGUIの管理コンソールを使う方法だけでなく、コマンド・プロンプト上でnetshコマンドを使っても行うことができる。コマンド・プロンプト上で操作すれば、例えば設定を外部に書き出して簡単にバックアップしたり、ほかのコンピュータに同じフィルタを素早く設定したりすることが簡単になる。

 netshコマンドとは、Windows OSのネットワーク・コンポーネントを管理するために用意されている一種のシェルであり、netsh.exeコマンドを使って起動することからこう呼ばれている。例えば、コマンド・プロンプト上で「netsh firewall show config」を実行すれば、Windowsファイアウォールに関する現在の構成情報が表示される。具体的なnetsh firewallコマンドの使い方については、「システム管理者のためのXP SP2展開計画――netshによる設定」を参照していただきたいが、簡単にまとめておくと次のようなコマンドがある。

コマンド 意味
netsh 引数なしでnetshだけを実行すると、netshのコマンド待ちになる
firewall netsh firewallコンテキストに切り替える。以後のファイアウォールの操作はこのコンテキストで行う
? コンテキストに応じたヘルプ・メッセージを表示する
show 現在の構成情報などを表示する
set 各種の設定を行う
add Windowsファイアウォールのルールを追加する
delete Windowsファイアウォールのルールを削除する
netsh firewallコマンドの例
netshコマンドには操作対象に応じて各種のコンテキストがある。Windowsファイアウォールを操作するにはnetsh firewallコンテキストに切り替えてから、showやset、addなどのコマンドを実行する。

■netsh firewallのプロファイルとの互換性
  前回述べたとおり、従来のWindowsファイアウォールには2つのプロファイルしかないが、新しいセキュリティが強化されたWindowsファイアウォールには3つのプロファイルがある。これらの間で互換性を保つため、従来のプロファイルは新しいプロファイルにマッピングされるようになっている。

従来のWindowsファイアウォールのプロファイル 新しいセキュリティが強化されたWindows Firewallのプロファイル
ドメイン・プロファイル(DOMAIN) ドメイン・プロファイル
標準プロファイル(STANDARD) プライベート・プロファイル
(該当なし) パブリック・プロファイル
現在のプロファイル(CURRENT) 現在アクティブなプロファイル
全部のプロファイル(ALL) ドメイン・プロファイルとプライベート・プロファイルの2つに対応。パブリック・プロファイルは対象にならない
ファイアウォール・プロファイルの対応
Windowsファイアウォールには「ドメイン・プロファイル」と「標準プロファイル」の2つしかないが、内部的にはこれらは新しいプロファイルのうち、「ドメイン・プロファイル」と「プライベート・プロファイル」の2つにマッピングされている。Windowsファイアウォール環境では「パブリック・プロファイル」を明示的に指定することはできない。しかし「netsh firewall」コンテキストで「CURRENT(現在のプロファイルのこと)」を指定すると、状況に応じて3つのうちのいずれかのプロファイルにマッピングされる。また「ALL(全プロファイル)」を指定しても、ドメイン・プロファイルとプライベート・プロファイルの2つにしか対象にならず、パブリック・プロファイルは参照/変更できない。

 このマッピングはnetsh firewallコンテキストでも行われているので、通常はOSによらず、Windowsファイアウォールでは従来どおり、「ドメイン・プロファイル」か「標準プロファイル」のいずれかを指定すればよい。プロファイル名として「CURRENT」を指定すると、現在アクティブなプロファイルに応じて、新しい3つのプロファイルのうちのいずれかが使用される。

 例えば次のようなコマンドを実行すると、新しく受信ポートをオープンするための定義が、現在のプロファイルに追加される。Windowsファイアウォールに対して設定を行っても、それは新しいセキュリティが強化されたWindowsファイアウォールの管理画面で内容を確認できる。

※これはWindowsファイアウォールにおいて、TCPの1313番に対し、172.16.0.0/16のネットワークからのアクセスを許可するための受信許可ルールの追加例

C:\>netsh ……netshコマンドの起動
netsh>firewall ……netsh firewallコンテキストへの切り替え
netsh firewall>add portopen tcp 1313 mynetworkservice enable custom 172.16.0.0/16 CURRENT
OK

 ただし現在のプロファイルがパブリック・プロファイルなら、追加されたルールはWindowsファイアウォール(netsh firewallコンテキスト)では確認できない。Windowsファイアウォールではパブリック・プロファイルは参照できないからだ。次に述べるnetsh advfirewallコンテキストで確認していただきたい。

「netsh firewall」と「netsh advfirewall」コンテキスト

 従来のWindowsファイアウォールでは「netsh firewall」コンテキストを使って操作していたが、セキュリティが強化されたWindowsファイアウォールでは、新しく導入された「netsh advfirewall」コンテキストを使って制御する(advfirewallはadvanced firewallの略)。まずは現在のプロファイルを表示させてみよう。

C:\>netsh ……netshコマンドの起動
netsh>advfirewall ……netsh advfirewallコンテキストへの切り替え
netsh advfirewall>? ……ヘルプ
……(中略)……
このコンテキストのコマンド:
?              - コマンドの一覧を表示します。
consec         - 'netsh advfirewall consec' コンテキストに変更します。
dump           - 構成スクリプトを表示します。
export         - ファイルに現在のポリシーをエクスポートします。
firewall       - 'netsh advfirewall firewall' コンテキストに変更します。
help           - コマンドの一覧を表示します。
import         - 現在のポリシー ストアにポリシー ファイルをインポートします。
monitor        - 'netsh advfirewall monitor' コンテキストに変更します。
reset          - ポリシーを既定のポリシーにリセットします。
set            - プロファイルごとの設定またはグローバルな設定を行います。
show           - プロファイルまたはグローバル プロパティを表示します。
……(中略)……
netsh advfirewall>show ? ……showコマンドのヘルプ
……(中略)……
このコンテキストのコマンド:
show allprofiles - すべてのプロファイルのプロパティを表示します。
show currentprofile - アクティブなプロファイルのプロパティを表示します。
show domainprofile - ドメイン プロファイルのプロパティを表示します。
show global    - グローバル プロパティを表示します。
show privateprofile - プライベート プロファイルのプロパティを表示します。
show publicprofile - パブリック プロファイルのプロパティを表示します。
show store     - 現在の対話セッションのポリシー ストアを表示します。

netsh advfirewall>show currentprofile ……プロファイルの表示

ドメイン プロファイル 設定: ……現在のプロファイルはドメイン・プロファイル
--------------------------------------------------
State                                 ON ……状態
Firewall Policy                       BlockInbound,AllowOutbound
LocalFirewallRules                    N/A (GPO ストアのみ)
LocalConSecRules                      N/A (GPO ストアのみ)
InboundUserNotification               Enable
RemoteManagement                      Disable
UnicastResponseToMulticast            Enable

ログ: ……ログ・ファイルの設定
LogAllowedConnections                 Disable
LogDroppedConnections                 Enable
FileName                              %systemroot%\system32\LogFiles\Firewall\pfirewall.log
MaxFileSize                           4096

OK

 ファイアウォールのルールの表示や追加などは、netsh advfirewall firewallサブコンテキストで行う。ルールの一覧を表示させるのは「show rule」コマンドだ。

netsh advfirewall>firewall ……firewallサブコンテキストへの切り替え
netsh advfirewall firewall>show rule name=all ……ルールの一覧の表示

規則名:                            ファイルとプリンタの共有 (エコー要求 - ICMPv6 送信)
--------------------------------------------------
有効:                                 Yes
方向:                                 Out
プロファイル:                               Domain
グループ:                             ファイルとプリンタの共有
LocalIP:                              Any
RemoteIP:                             Any
プロトコル:                                 ICMPv6
                                      Type    Code
                                      128     Any
エッジ トラバーサル:                       No
操作:                                       Allow
……(以下省略)……

 ルールの追加はadd ruleコマンド、削除はdelete rule、ルールの修正はset rule、表示はshow ruleである。従来のWindowsファイアウォールと違い、大幅に機能が強化されているので、構文も複雑になっている。以下にルールを追加する例を示しておく。

※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


※追加したルールを表示させてみる。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

 これをGUIの管理画面で確認すると、次のようになっている。このように、コマンドラインでもGUIでも同じようにファイアウォールを制御できる。netshコマンドの詳細な使い方については、netshコマンドに内蔵さているヘルプ・メッセージや、[ヘルプとサポート]ツールなどを参照していただきたい。

追加したルールの例
netsh advfirewall firewall add ruleコマンドで追加した送信のブロックのルールの例。TCPの80番(HTTP)ポートへの送信(つまりWebブラウザによる外部アクセス)を禁止してみた。このように、コマンドラインでもGUIでも同じようにファイアウォールを制御できる。
追加したルール。
ブロック対象の送信ポート番号。


 INDEX
  Vistaの地平
  第15回 進化したWindows Vistaのファイアウォール機能(後編)
    1.セキュリティが強化されたWindowsファイアウォールの管理
  2.netshコマンドによるファイアウォールの管理
    3.グループ・ポリシーによるファイアウォールの管理

 「 Vistaの地平 」


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

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間