トップページ サービスの概要 セキュリティ情報 購読の申し込み
HotFix Report
/セキュリティTIPS/

■Netfw.infを使ったWindowsファイアウォールの設定
 これまで、「Windows XP SP2のインストール時にWindowsファイアウォールを無効にする方法」「Windowsファイアウォールの『例外』の設定方法」の2回に分けて、Windows XP SP2のファイアウォールの設定方法について解説してきた。第3回目として、設定ファイル「Netfw.inf」を使って、Windowsファイウォールの設定を変更する方法を紹介する。

 Windowsファイアウォールを無効にする設定をせずに、Windows UpdateやAutomatic Update(自動更新)によってWindows XP SP2がインストールされてしまうと、グループ・ポリシーを使わない限り、リモートでWindowsファイアウォールの設定を変更することができなくなる。そのような場合、Netfw.infを含むバッチ・ファイルをファイル・サーバやメールを使って配布し、それをユーザーに実行させることでWindowsファイアウォールを適切に設定することが可能だ。ただし、Netfw.infによる設定変更には管理者権限が必要になるので注意したい。

 まず、Netfw.infを用意する。Netfw.infの書き方は、以下のドキュメントを参考にしていただきたい。

・ダウンロード・センター(Microsoft Windows XP Service Pack 2 における Windows ファイアウォール用 INF ファイルの使用):
http://www.microsoft.com/downloads/details.aspx?FamilyID=eb982f8c-2391-429e-9b26-31e88edfcdf9&DisplayLang=ja

 まず、基本となるNetfw.infを用意する。Windows XP SP2を適用したコンピュータの%WinDir%\INF\Netfw.infをコピーして作業をするのが楽だろう。

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

[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"

 [ICF.AddReg.DomainProfile]はドメインに参加しているコンピュータに、[ICF.AddReg.StandardProfile]はドメインに非参加(ワークグループやスタンドアロン)のコンピュータに対して適用される項目である(このリストでは、「リモート アシスタンス」が例外プログラムとして登録される。不要な場合は削除しても構わない)。どちらにも同じ設定をしておけばよいだろう。なお、[ICF.AddReg.DomainProfile]は途中が「\DomainProfile\」、[ICF.AddReg.StandardProfile]は「\StandardProfile\」になる点は間違えないようにしたい。ここでは、主な[ICF.AddReg.DomainProfile]側の設定を例として紹介する。必要なリストを上のNetfw.infに追加すればよい。

・Windowsファイウォールを有効にし、例外を許可する(Windowsファイアウォールのデフォルト設定)
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\
DomainProfile","DoNotAllowExceptions",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\
DomainProfile","EnableFirewall",0x00010001,1

・Windowsファイウォールを有効にし、「例外を許可しない」をチェック
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\
DomainProfile","DoNotAllowExceptions",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\
DomainProfile","EnableFirewall",0x00010001,1

・Windowsファイウォールを無効
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\
DomainProfile","EnableFirewall",0x00010001,0

・ポートを「例外」に指定

HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\
DomainProfile\ GloballyOpenPorts\List","port number:protocol",0x00000000,
"port number:protocol:scope:mode:name"

項目 説明 設定 設定例
port number ポート番号 例:135
protocol プロトコル TCPまたはUDP 例:TCP
scope 例外を適用する範囲 *:任意
LocalSubNet:自身が存在するサブネットのみ
IPアドレス:カスタム設定 
IPアドレスの例:
192.168.0.1
192.168.0.1/255.255.255.0
mode 有効か無効か 有効:Enabled
無効:Disabled
例:Enabled
name [例外]タブに表示する名前 英数字による名前 例:135TCP

 例外プログラムとして、事前にWindowsファイアウォールに登録済みの「ファイルとプリンタの共有」をチェックした状態にしたい場合は、以下のリストを追加する。

HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\
DomainProfile\GloballyOpenPorts\List","137:UDP",0x00000000,"137:UDP:LocalSubNet:Enabled:
@xpsp2res.dll,-22001"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\
DomainProfile\GloballyOpenPorts\List","138:UDP",0x00000000,"138:UDP:LocalSubNet:Enabled:
@xpsp2res.dll,-22002"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\
DomainProfile\GloballyOpenPorts\List","139:TCP",0x00000000,"139:TCP:LocalSubNet:Enabled:
@xpsp2res.dll,-22004"
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\
DomainProfile\GloballyOpenPorts\List","445:TCP",0x00000000,"445:TCP:LocalSubNet:Enabled:
@xpsp2res.dll,-22005"

 このほか、「UPnPフレームワーク」や「リモート デスクトップ」をチェックしたい場合は、Windowsファイアウォールの[例外]タブでチェックを行い、結果を以下のレジストリ・キー以下で確認すると分かる。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\

 Netfw.infが編集できたら、このファイルを%WinDir%\INF\にコピーし、コマンド・プロンプトで以下のコマンドを実行する。これでWindowsファイウォールにNetfw.infが読み込まれ、設定が完了する。

netsh firewall reset

 Netfw.infをファイル・サーバなどに置き、ユーザーに自分のコンピュータにコピーさせて実行させたい場合は、同時に以下のバッチ・ファイルを配布し、Netfw.infを置いたローカル・フォルダから実行させるとよいだろう。Netfw.infがINFフォルダにコピーされ、netshコマンドが実行される。

@echo off
move %WinDir%\INF\Netfw.inf %WinDir%\INF\Netfw.bak
cd
copy .\Netfw.inf %WinDir%\INF\Netfw.inf
netsh firewall reset
echo on

 
 
Copyright (C) Digital Advantage Corp.
無断で複製・再配信などを行うことはできません。

HotFix Reportでは、細心の注意を払って情報提供を行っておりますが、本サービスにおける情報の正確性、最新性、適切性などについて、明示的又は黙示的な保証を行いません。また本サービスの停止や欠陥、それらに起因して発生する損失や損害について、一切責任を負いません。