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

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

2.INFファイル/レジストリによる設定

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

 INFファイルを使ったWindowsファイアウォールの設定は、XP SP2のインストール時に行えるので、XP SP2の導入に伴って起こる、(外部からアクセスできなくなるなどの)さまざまなトラブルを避けられる可能性があるという点で、ほかの方法よりもやや優れている。また、グループ・ポリシーを使う方法と違って、ドメイン環境でなくても利用できるのもメリットであろう。

 だがこの設定は最初に1度行われるだけなので、XP SP2インストール後に構成を変更するために利用することはできないし、あらかじめINFファイルを仕掛けたXP SP2の配布モジュールを使用しないと、設定を行うことができない。自動更新やWindows Update、XP SP2のCD-ROMなどを使ったインストール場面では、標準のINFファイルが使われるからだ。この方法は、XP SP2の導入をある程度コントロールできる、(Active Directoryがまだ完全には展開されていないような)企業に向いた導入・設定方法といえる。

INFファイルによるWindowsファイアウォールの設定とは?

 Windowsファイアウォールの設定をINFファイルで行う方法というのは、簡単に言えば、ファイアウォール関連のレジストリ値の設定をXP SP2のインストール時にあらかじめすませておくという方法にほかならない。

 ほかのどの方法を使っても結果はほぼ同じであるが、Windowsファイアウォール関連の設定を行うと、その結果はレジストリ値に反映され、ファイアウォール・エンジンはその値を見て動作するようになる。INFファイルによる設定とは、XP SP2のインストール直後のレジストリの初期値を決めるための操作のことである。

Windowsファイアウォールとレジストリ
Windowsファイアウォールは、自身の設定をレジストリか読み込んでいるので、レジストリさえ設定しておけば、動作を制御することができる。

 Windowsファイアウォールの動作を決めるINFファイルの名称は「netfw.inf」といい、XP SP2のインストール・ファイル群の中に含まれている。ネットワーク・インストール版のXP SP2のイメージ・ファイル(XPSP2.EXE、サイズ273Mbytes)を/xオプションを付けて実行・展開すると、\i386\icと\i386\ipフォルダの中に「netfw.in_」というファイルが含まれている(いずれも同じ)。これは圧縮されたファイルなので、「expand -r netfw.in_ c:\」などとして展開すると、c:\にnetfw.infというファイルが得られる。具体的には次のような内容になっている。

[version]
Signature      = "$Windows NT$"
DriverVer      =07/01/2001,5.1.2600.2180

[DefaultInstall]
AddReg=ICF.AddReg.DomainProfile …ドメイン・プロファイル
AddReg=ICF.AddReg.StandardProfile …標準プロファイル

[ICF.AddReg.DomainProfile] …ドメイン・プロファイルの初期値
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\
FirewallPolicy\DomainProfile\AuthorizedApplications\List",
"%windir%\system32\sessmgr.exe",0x00000000,"%windir%\system32\
sessmgr.exe:*:enabled:@xpsp2res.dll,-22019"

[ICF.AddReg.StandardProfile] …標準プロファイルの初期値
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\
FirewallPolicy\StandardProfile\AuthorizedApplications\List",
"%windir%\system32\sessmgr.exe",0x00000000,"%windir%\system32\
sessmgr.exe:*:enabled:@xpsp2res.dll,-22019"

 ここには、「リモート アシスタンス」を許可するためのルール(レジストリ設定)だけが定義されている。2つ定義されているように見えるが、それぞれドメイン・プロファイル用と標準プロファイル用なので、実質的には同じものである。XP SP2をインストールすると、このルールだけがデフォルトで例外リストに登録されているのに気付くだろうが、それは、このようなINFファイルを使用しているからである。

 デフォルトのルールを変更したければ、このファイルに追加のルールを記述し、変更したnetif.infファイルを、展開したオリジナルのnetfw.in_(2カ所)に上書きし、そのイメージを使ってXP SP2をインストールする。これで、XP SP2のインストール直後からカスタマイズしたルールが有効になる。

 すでにXP SP2をインストールしてしまっている場合は、新しいnetfw.infファイルで現在実行中のXP SP2コンピュータの%windir%\inf\netfw.infファイルを上書きする。そしてnetshコマンドでresetコマンド(ファイアウォール関連の設定をすべて初期化するコマンド)を実行する。

C:\>netsh …netshの起動
netsh>firewall …firewallコンテキストへの切り替え
netsh firewall>reset …ファイアウォールの設定を初期化する
OK

netsh firewall>exit …netshの終了

 これにより、Windowsファイアウォールの設定がnetfw.infの内容に基づいて初期化される。

INFファイルのカスタマイズ

 INFファイルに書き込む内容については、以下のドキュメントが詳しいので参照してほしい。

 基本的には、ここで設定できる内容はGUI画面で設定できる内容とほぼ同じである。1つの例外ルールごとに1つのレジストリ定義を作成し(2つのプロファイルに対応する場合は2つのレジストリ定義)、それを順にINFファイルに書き加えていけばよい。ただしこのINFファイルによる設定では、ログ・ファイルに関する設定(ログを記録するかどうか、ログ・ファイル名やそのサイズなど)や、各インターフェイスごとのポート設定/ICMP設定は行うことはできない。これらが必要な場合は、ほかの手段を考慮する必要がある。

Windowsファイアウォールで変更するレジストリ

 上の設定ファイルを見ると分かるように、Windowsファイアウォールのためのレジストリは、以下の場所にある。

  • ファイアウォール関連のレジストリ
     HKEY_LOCAL_MACHINE の SYSTEM\CurrentControlSet\Services にある SharedAccess\Parameters\FirewallPolicy

 この中にファイアウォール全体の設定、およびドメイン・プロファイルと標準プロファイルのためのレジストリ設定が含まれている。

Windowsファイアウォール関連のレジストリ
Windowsファイアウォールのレジストリは、HKEY_LOCAL_MACHINESの下にある(ユーザーごとではなく、コンピュータごとに設定される)。どれか1台のコンピュータ上で設定をすませ、れをほかのコンピュータにコピーしてもよい。
  Windowsファイアウォールのレジストリ
  ドメイン・プロファイル。
  標準プロファイル。

 レジストリ値をいちいち設定するのが面倒ならば、先にGUIベースの画面で設定を行ったり、もしくはnetshで設定をすませてから、その後レジストリ値を書き出して調査してもよいだろう。複雑な例外ルールの定義が必要な場合や、カスタム・アプリケーションの例外設定などが多数ある場合は、レジストリのツリーをエクスポートして、ほかのコンピュータへインポートすればよい。


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

 運用


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

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間