ファイアウォールの設定を自動化する(Windows XP)

久しぶりにバッチファイルを書いてみました。
今回はXPのファイアウォールの設定をするためのバッチファイルです。Vistaの場合はまた書き方が違うのでほぼXPのSP2でしか使えないのですが、とても便利です。

@ECHO OFF

SET ConfigFile=%~dp0FWSetup.log

:// 最初の設定を取得
ECHO ※変更前の設定 > %ConfigFile%
netsh firewall show config >> %ConfigFile%
ECHO -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- >> %ConfigFile%
ECHO. >> %ConfigFile%

:// 設定をいったんリセット
ECHO 環境を初期化
netsh firewall reset

://************************** 通信ポート設定(ここから) ****************************//
:// IIS接続許可
ECHO IIS接続許可
netsh firewall add portopen tcp 80 HTTPSERVER ENABLE ALL

:// netbios接続設定
ECHO netbios接続設定
netsh firewall delete portopening ALL 137
netsh firewall delete portopening ALL 138
netsh firewall delete portopening ALL 139
netsh firewall add    portopen    TCP 139  NETBIOSセッション ENABLE ALL

:// ダイレクトホスティング接続
ECHO ダイレクトホスティング接続設定
netsh firewall delete portopening ALL 445
netsh firewall add    portopen ALL 445 SMBDirect ENABLE ALL
://************************** 通信ポート設定(ここまで) ****************************//

://************************** ICMP設定(ここから) ****************************//
ECHO ICMPの設定
:// destination unreachable
netsh firewall SET ICMPSETTING 3 ENABLE

:// redirect
netsh firewall SET ICMPSETTING 5 ENABLE

:// echo request
netsh firewall SET ICMPSETTING 8 ENABLE

://↑ echo requestはport445を有効にした段階で自動で有効化されるが、明示的に
://   許可している事を示す為に8を有効化する
://************************** ICMP設定(ここまで) ****************************//

:// その他(ブロック時の通知をしない)
ECHO ブロック時の通知をしないよう設定
netsh firewall  set notifications DISABLE

ECHO ※変更後の設定 >> %ConfigFile%
netsh firewall show config >> %ConfigFile%

:// 結果を表示
notepad %ConfigFile%

ECHO 作業完了
PAUSE > NUL


買ったばかりのパソコンはVistaなのでそのうちVista版も公開します。