運用
システム管理者のためのXP SP2展開計画

第2回 Windowsファイアウォールの管理

3.netshによる設定

デジタルアドバンテージ
2004/09/30

 GUIではなく、コマンドラインでWindowsファイアウォールを操作するには、netshというシェルを利用する。まずnetshを起動後、firewallコンテキストに切り替え、各種のコマンドを実行する。具体的には以下のようにすればよい。

C:\>netsh
netsh>firewall …firewallコンテキストへの切り替え
netsh firewall>? …ヘルプの表示

使用できるコマンドは次のとおりです:

netsh コンテキストから引き継いだコマンド:
…(中略)…
このコンテキストのコマンド:
?              - コマンドの一覧を表示します。
add            - ファイアウォールの構成を追加します。
delete         - ファイアウォールの構成を削除します。
dump           - 構成スクリプトを表示します。
help           - コマンドの一覧を表示します。
reset          - ファイアウォールの構成を既定値に戻します。
set            - ファイアウォールの構成を設定します。
show           - ファイアウォールの構成を表示します。

コマンドのヘルプを表示するには、コマンドの後にスペースを入れ、
? と入力してください。

netsh firewall>

 このfirewallコンテキストで利用できるコマンドとしては、ファイアウォールのルールを追加/削除するaddやdeleteコマンド、定義されたルールや動作モードを切り替えるsetコマンド、そして状態を確認するshowコマンドがある。

 例えば、TCPのポート番号1313番でリッスン(待ち受け)するネットワーク・サービス(mynetworkservice)があったとすると、次のようなコマンドを発行すれば、受信を許可することができる。

netsh firewall>add portopening tcp 1313 mynetworkservice
OK

 設定された例外ルールの状態を確認するには、netsh上で「show config」もしくは「show config enable(より詳細な表示を行うコマンド)」を実行すればよい。

netsh firewall>show config

DOMAIN のプロファイルの構成 (現在): …現在使用中のプロファイル
…(省略)…
DOMAIN のポートの構成: …ドメイン・プロファイルの例外ルール
Port   Protocol  Mode     Name
-------------------------------------------------------------------
1313   TCP       Enable   mynetworkservice
…(以下省略)…

 この設定をGUIベースのダイアログで確認するには、[コントロール パネル]の[Windows ファイアウォール]−[例外]タブをオープンすればよい。

netshで定義した例外ルール
netshで定義したWindowsファイアウォールの例外ルール。コマンド・プロンプト上で定義したルールもすぐにGUI画面で確認することができる。
  新しく定義したルール。
  XP SP2導入時のデフォルトのルール。「リモート アシスタンス」は有効、そのほかは無効。ただしXP SP2導入前にファイル共有が有効になっていると、「ファイルとプリンタの共有」が有効になるなど、システムによって異なる場合もある。

 新しく定義されたmynetworkserviceの行をダブルクリックすると、ルールの詳細が表示される。

定義したルール
TCPのポート番号1313番でリッスン(待ち受け)するネットワーク・サービス、mynetworkserviceを定義したところ。
  サービス(ルール)の名称。
  ポート番号。
  TCPプロトコルを指定。
  スコープは特に指定していないため、送信元IPアドレス指定は「*(すべて)」となっている。

スコープの指定

 上の例では「スコープ」、つまり送信元IPアドレスの指定は行っていないため、任意のIPアドレスからの通信が許可されるが、特定のネットワークからの通信だけを許可するには次のようにする。

netsh firewall>add portopen tcp 1313 mynetworkservice enable custom 172.16.0.0/16,192.168.0.0/24,LocalSubnet
OK

 先ほどのaddコマンドの例と比べると、「enable custom ……」以降が新しく追加されたパラメータ部分である(ここではaddで新規追加しているが、すでに定義されているルールを修正する場合は、addではなくsetを使用すること)。add/setコマンドの詳細な使い方はnetshのヘルプ・メッセージを参照してほしいが(add portopen/set portopenとだけ入力するとヘルプが表示される)、「enable」は定義したルールを有効にすることを、「custom ……」は許可するIPアドレスのリストをそれぞれ表している。複数のネットワークIPアドレスが存在する場合は「,」で区切って並べればよい。また「LocalSubnet」という表記は、現在のネットワーク・インターフェイスに割り当てられているネットワーク・アドレス(現在のIPアドレスとネット・マスクから導出されるネットワーク・アドレス)を表す。これらを使って、組織内のネットワークIPアドレスだけに限定しておけば、安全性が高くなる。

アドレス指定の例 意味
ALL すべてのIPアドレスからの通信を許可。デフォルト
SUBNET 現在のインターフェイスの属しているネットワーク全体。以下の「CUSTOM LocalSubnet」と同じ
CUSTOM 192.168.0.2 単一のIPアドレス。「,」で複数結合可
CUSTOM 192.168.0.0/24 ネットワーク・アドレスとサブネット・マスク指定。「,」で複数結合可
CUSTOM LocalSubnet 現在のインターフェイスの属しているネットワーク全体。「,」で複数結合可
アドレス指定の方法

追加するプロファイルの指定

 ルールを追加するためのスコープを指定するには、先のコマンド列に続けて、次のようなプロファイル指定のための文字列を使用する。デフォルトは「CURRENT」であり、現在有効なプロファイルにしか追加されないので注意が必要である。

プロファイル指定 意味
CURRENT 現在のプロファイルにのみ追加
DOMAIN ドメイン・プロファイルに追加
STANDARD 標準プロファイルに追加
ALL 両方のプロファイルに追加
ルールを追加するプロファイルの指定

 先のコマンド例に対して、標準プロファイルへの追加を指定すると、次のようになる。

netsh firewall>add portopen tcp 1313 mynetworkservice enable custom 172.16.0.0/16,192.168.0.0/24,LocalSubnet STANDARD
OK

例外プログラムの追加

 以上はポート・ベースのファイアウォール制御の例であったが、プログラムに対する例外ルールを追加する場合は次のようになる。

netsh firewall>add allowedprogram "C:\Program Files\My Program\myprogram.exe" myprogram enable custom 172.16.0.0/16,192.168.0.0/24,LocalSubnet STANDARD
OK

 「portopen <プロトコル> <ポート番号>」が「allowedprogram <プログラム名>」に変わっただけで、あとは同じである。

標準サービスに対するポートの許可

 ファイル共有やリモート・デスクトップ接続、リモート・アシスタンスなどはOSの基本的なサービスであり、Windowsファイアウォールでもあらかじめ例外ルールの設定が組み込まれている。ユーザーは必要に応じてチェック・ボックスをオンにするだけでこれらのサービスへ外部からアクセスすることができるが、netshによる設定でも、特別なコマンドが用意されている。

 これらの基本サービスをnetshで設定するには、set serviceコマンドを利用する。基本的なコマンドの構文はいままでのsetコマンドと同じであるが、サービスの名前があらかじめ次のように決められている(「リモート管理」については次ページの最後の項目を参照)。

setの表記 サービス
FILEANDPRINT ファイルとプリンタの共有
REMOTEADMIN リモート管理
REMOTEDESKTOP リモート デスクトップ
UPNP UPnP フレームワーク
ALL 上記のサービスすべて
setコマンドにおけるサービス名の表記方法

 これらのサービス名を使って、例えばローカルのネットワークと特定のネットワークだけにファイル共有とリモート・デスクトップ接続を許可するには、次のようにする。

set service FILEANDPRINT enable custom 172.16.0.0/16,LocalSubnet STANDARD
set service REMOTEDESKTOP enable custom 172.16.0.0/16,LocalSubnet STANDARD

ICMPサービスに対する通信の許可

 ICMPを許可するには、set icmpsettingコマンドを利用する。このコマンドでは、パラメータとしてICMPプロトコル中のコード番号を指定して、それぞれをenable/disableするが、それぞれ、次のような意味を持つ。

番号 機能
3 あて先不達(destination unreachable)
4 ソース・クエンチ(source quench、送信元抑制)
5 リダイレクト要求(redirect、経路変更要求)
8 エコー要求(echo request)
9 ルータ通知(router advertisment)
11 時間超過(time exceeded)
12 パラメータ異常(parameter problem)
13 タイムスタンプ要求(timestamp request)
17 アドレス・マスク要求(address mask request)
ICMPプロトコルのタイプ番号
これらはICMPの受信でのみ使用されるタイブ番号。Windowsファイアウォールでは着信方向のみを規制するので、受信にかかわるもののみが指定できる。発信するICMPパケットについてはフィルタリングできない。

 これらのうち、組織内における一般的なクライアントでは、3/5/8などが通るようになっていれば問題ないだろう(pingでは8番を使用しているので、最低限、これだけでも通すようにした方がよい)。例えばこれら3つのICMPパケットを通すには、次のようなnetshのコマンドを使えばよい。

set icmpsetting 3 enable
set icmpsetting 5 enable
set icmpsetting 8 enable

 なおWindowsファイアウォールでは、ポート445番(ファイルとプリンタ共有で利用されているポート。Windows TIPS「ポート445(ダイレクト・ホスティングSMBサービス)に注意」参照)を通るようにすると、8番の「エコー要求」も自動的に連動してオンになるので、ファイル共有を利用している場合は個別に指定する必要はない。


 INDEX
  [運用]システム管理者のためのXP SP2展開計画
  第2回 Windowsファイアウォールの管理
    1.Windowsファイアウォールの管理方法
    2.INFファイル/レジストリによる設定
  3.netshによる設定
    4.グループ・ポリシーによる設定

 運用


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

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間