Windows ファイアウォールの設定がきえた~?!(Windows XP)
みなさん、こんにちは!
既に多くの環境では Windows Vista が主流になっているかと思いますが、今回はまだまだお問い合わせの良くある Windows XP の Windows ファイアウォールに関する情報をご紹介いたします。
ドメイン環境の Windows Server 2003 や Windows XP の端末において、Windows ファイアウォールを無効に設定していたり、特定のポートなどに関しての例外を設定していたのに、ある日突然 Windows ファイアウォールが有効になった、または例外設定が消えていたなどという問題は無かったでしょうか。また、その後、いつの間にかその設定が元通りに戻り、例外設定が復活していたりして、「どうして??」 と思うことがあるかもしれません。
1. このような現象が発生している理由
====================================
この問題が発生している場合、実際には設定が消えていたり、変更されているわけではなく、読み込まれているプロファイルが切り替わったことが原因である場合がほとんどです。
Windows ファイアウォールには [ドメイン プロファイル]、[スタンダード プロファイル] という二つのプロファイルが存在します。
ドメインに参加しており、ドメインにログオンした場合にはドメイン プロファイルが読み込まれ、そのプロファイルに設定されている項目が反映されます。
ドメインのメンバーでない場合や、ドメインのメンバーでもドメイン コントローラーと通信できないなどの理由で、キャッシュ ログオンをした場合などには、スタンダード プロファイルが読み込まれます。
もし、設定していた Windows ファイアウォールの例外設定が消えたと思ったら、その時にどちらのプロファイルが読み込まれているかを確認してみてください。
片方のプロファイルでしかファイアウォール無効や例外設定がされていなかった場合、もう片方のプロファイルが読み込まれていたことが原因で、設定自体が削除されたように見えてしまうことがあります。
2. どちらのプロファイルが読み込まれているかを確認する方法
===============================================================
どちらのプロファイルが読み込まれているのかを確認するには、現象が発生している端末にて、コマンド プロンプトから以下のコマンドを実行します。
図1
これを正常時と現象発生時で比較し、プロファイルが異なっている場合には、読み込まれたプロファイルが異なることが原因で現象が発生していることがわかります。
また、レジストリを確認することでも 各プロファイルにて Windows ファイアウォールが有効になっているか、例外設定がされているかを確認することができます。
Windos XP や Windows Server 2003 の場合、Windows ファイアウォールの設定はレジストリに格納されているので、レジストリ エディタを開き、下記レジストリ キーを確認することで、それぞれのプロファイルの設定を確認することができます。
・ドメイン プロファイルの設定情報
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile
・スタンダード プロファイルの設定情報
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile
図2
例えば、レジストリ EnableFirewall の値が 1 の場合は Windows ファイアウォールが有効になっており、0 の場合には無効になっていることがわかります。
3. この問題を回避する方法について
====================================
問題を回避する方法は至ってシンプルです。読み込まれるプロファイルが異なることが原因なので、どちらが読み込まれてもいいように、二つのプロファイルの設定を同一にするのです。どちらも設定が同じなので、読み込まれるプロファイルによって例外の設定が消えたり、Windows Firewall の有効 / 無効が切り替わることは無いはずです。
これを実現する一つの方法として、既に例外設定などを片方のプロファイルで設定している場合、netsh コマンドを使用して、設定が行われていないプロファイルに例外設定を一つ一つ追加する方法があります。しかし、多数の例外設定が設定されている場合、かなりの工数が必要になることが予想されます。
* netshコマンドを使用したファイアウォールの管理方法の詳細については下記リンクをご参照ください。
ヘルプ : Netsh を使用して Windows ファイアウォールを管理する
https://technet.microsoft.com/ja-jp/library/cc776229(WS.10).aspx
その場合、既に設定されているプロファイルのレジストリをエクスポートし、別のプロファイル用に内容に変更を加えた上で、レジストリをインポートすることで、工数を減らすことができます。
以下では設定がスタンダード プロファイルにのみされている場合に、その設定をドメイン プロファイルにインポートする方法を記述いたします。
1) まず最初に、スタンダード プロファイルの設定をエクスポートします。
レジストリ エディタの左ペインから Standard Profile のレジストリ キーを右クリックし、エクスポートを選択することで、レジストリ値をエクスポートすることができます。
図3
エクスポートを選択すると、ファイル名、保存先を選択するウィンドウが表示されるので、適当な場所に保存します。
2) エクスポートした情報をドメイン プロファイル用に変更します。
エクスポートした reg 形式のファイルを右クリックし、編集を選択すると、テキスト形式でファイルが開きます。
図4
ここに記録されているのがスタンダード プロファイルの設定の全てです。
これをドメイン プロファイル用に変更するには、単純に [] で囲まれているレジストリ キーに含まれる StandardProfile という文字を DomainProfile に書き換えるだけです。
図5
変更後、メニュー バーにあるファイルから名前をつけて保存を選択し、reg 形式で保存します。
* 例えば、domain.reg という名前で保存します。
3) ドメイン プロファイル用のレジストリをインポートする。
これは至って簡単で、 2) で作成した reg 形式のファイルをダブル クリックするだけです。
ダブル クリックすると以下のメッセージが表示されるので、”はい”を選択します。
正常にレジストリにインポートされると以下のメッセージが表示されます。
レジストリ エディタを開き、ドメイン プロファイルの設定を確認すると、スタンダード プロファイルと全く同じ設定になっていることが確認できます。
これにより、ドメイン プロファイル、スタンダード プロファイルのいずれが読み込まれても、ファイアウォールの有効/無効が切り替わったり、例外設定が消えるといった問題は発生しなくなります。
「コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。」