Windows XP Service Pack 2(SP2)がまもなく一般公開されます。そこで今回は,SP2のWindowsファイアウオールを取り上げます。一口にファイアウオールといっても,いろいろな意味がありますから,今回は,ファイアウオールが備える「例外」に焦点をおきます。それでは早速,本論に入りましょう。

Windowsファイアウオールの復習

 Windowsファイアウオールは,私たちのインターネット活動を監視し,インターネット側からの,予期しない接続要求信号の受け取りを無効にしてくれるソフトウエアです。Windowsファイアウオールはあくまでもソフトウエアの1つにすぎませんから,メモ帳などのソフトウエアと同じように,自分が動作するための情報を必要とします。Windowsファイアウオールの動作情報は,これまたメモ帳などと同じく,Windowsシステム・レジストリに格納されています。

 それでは,Windowsファイアウオールが備える「例外」とは何でしょうか。この疑問への回答もきわめて簡単です。「例外」とは,インターネット側からの予期しない信号の受け取りを,私たちの指示に従って例外的に有効にする,Windowsファイアウオールの機能の1つといえるでしょう。「例外」機能に私たちが与える指示もWindowsシステム・レジストリに格納されています。

 「例外」機能に指示を与えるのは私たちですから,与える指示の意味をきちんと理解しておく必要があるのはいうまでもありません。ちなみに,私たちが与える指示は,「例外リスト」として管理されます。

 以上で,Windowsファイアウオールと「例外」機能の概要が分かりました。Windowsでは,ソフトウエアの動作を制御するための情報は,中央データベースやシステム・データベースと呼ばれる,Windowsシステム・レジストリに格納されます。そこで,今回は,Windowsファイアウオールの制御情報がどのようにWindowsシステム・レジストリに格納されているのかを確認してみることにします。

 Windowsシステム・レジストリを眺めることは決して楽しい作業ではないのですが,ITプロフェッショナルとしては,1度は経験しておくすべき作業の1つです。自分のWindowsシステムにSP2を適応するということは,Windowsシステム・データベースの一部を書き換えることです。これは客観的に見て,意味のあることではあっても,たいへん危険なことです。

図1●Windowsファイアウオールの設定画面
図2●システム・レジストリ内のファイアウオール設定情報
図3●Windowsファイアウオールの「例外」タブ画面
図4●システム・レジストリに記述された追加プログラム
図5●サンプル・プログラムの実行結果

コントロールパネル操作とWindowsシステム・レジストリ

 まずは,コントロールパネル内のWindowsファイアウオールの設定画面を確認しておきましょう。筆者の「Windows XP SP2(RC2)環境では,図1[拡大表示]のようになっています。この画面はSP2といってもRC2のものですが,正式版でもおそらく変化はないでしょう。Windowsファイアウオールは,デフォルトで有効となっています。このデフォルト設定情報は,Windowsシステム・レジストリ内に図2[拡大表示]のように格納されています。

 サードパーティ製ファイアウオールや自作ファイアウオールを使用したい場合には,Windowsファイアウオールを無効にする必要がありますが,残念ながら,コントロールパネルからは無効にできないようになっています。しかし,レジストリの該当値を直接変更すれば,Windowsファイアウオールを無効にすることができます。また,後で紹介する「netfw.inf」という名称のファイルに必要情報を追加することにより,Windowsファイアウオールを無効にすることもできます。

 それでは次に,「例外」タブ画面を見てみましょう。筆者の環境では図3[拡大表示]のようになっています。この画面情報は,SP2(RC2)をインストールした状態の様子を示しています。正式版でどのように変更されるのか楽しみなところです。プログラムの追加やポートの追加などを行う各種の操作ボタンが用意されています。これらのボタンはすべてシステム・レジストリ(システム・データベース)を操作するために用意されています。例えば,追加されたプログラムは,システム・レジストリ内に図4[拡大表示]のように記録されます。

 「例外」タブ内には,「プログラムおよびサービス」という項目があります。この項目は,プログラムとサービスを例外リストに追加できることを示しているのですが,エンド・ユーザーは,おそらく,この項目の意味を理解できないでしょう。「プログラムおよびサービス」の「プログラム」は,「プログラムの追加」ボタンを指している,と考えてください。一方,「プログラムおよびサービス」の「サービス」は,「ポートの追加」ボタンを指していると考えてください。

 米Microsoftの公開資料を読んでみると,ポートを追加する場合,「プログラムの追加」ボタンを使用し,間接的にポートを追加することを薦めています。このため,慣れないうちは,「プログラムおよびサービス」の「サービス」という文字列は無視しておいたほうがよいと思います。

Windowsファイアウオールのインストール・ファイルとレジストリ

 コントロールパネルを操作すれば,システム・レジストリ内のWindowsファイアウオール情報を更新できます。通常はこれで十分なのですが,システム管理者やソフトウエア開発者の方は「ソースコードを書くように,Windowsファイアウオールを操作できないか」と望むものです。もちろん,そのような操作は可能です。

 SP2をインストールすると,「netfw.inf」というセットアップ・ファイルもインストールされます。このファイルに変更対象となるレジスト情報を書き込み,INFファイル・インストールを実行すれば,その場で,必要な変更を行うことが可能です。極端な例ですが,例えば,Windowsファイアウオールを無効にしたい場合(コントロールパネルからは無効にできない),次のような情報をinfファイル内に設定します。

[ICF.AddReg.DomainProfile]
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess
\Parameters\FirewallPolicy\DomainProfile","EnableFirewall",
0x00010001,0x00000000

[ICF.AddReg.StandardProfile]
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess
\Parameters\FirewallPolicy\StandardProfile","EnableFirewall",
0x00010001,0x00000000

 「netfw.inf」ファイルとファイル内に設定できる情報に関する詳しいことは,こちらからドキュメントをダウンロードするとよいでしょう。それほど大きなドキュメントではありませんから,ドキュメントをダウンロードし,自分なりの「netfw.inf」ファイルを作成してみるとよいと思います。筆者は数回INFファイルの作成とインストール実験を繰り返したおかげで,Windowsファイアウオールに関する情報が頭の中で整理され,たいへん有意義でした。

今回のサンプル・プログラム

 こちらからダウンロードできる今回のサンプル・プログラムを実行すると,筆者の環境では図5[拡大表示]のような情報が返されます。

 コントロールパネルからWindowsファイアウオールを操作していると,その背後でどのようなことが行われているのか分かりません。今回のサンプル・プログラムは,コントロールパネル操作の背景で活動するスレッドとプロセス情報を表示しています。表示される情報を見れば,どのプロセスがどの程度のスレッドを作成しているかが分かります。

 コントロールパネルを操作すると,「rundll32.exe」というプロセスが多数作成されます。コントロールパネルから一部情報を変更すると,「SVCHOST.EXE」プロセスはスレッドを新たに作成し,(必要な場合には)その変更の悪影響を警告してきます。「rundll32.exe」と「SVCHOST.EXE」は従来からあるプロセスです。新規に投入されるWindowsファイアウオールは,すでにある技術に支えられいるわけです。新しい技術や機能に接するときには,その背後で応用されている既存技術の存在もしっかりと確認しておきたいものです。

今回のまとめ

  • SP2をインストールすることはWindowsシステム・データベースを更新することである
  • Windowsファイアウオール情報はWindowsシステム・データベースに格納されている
  • GUI操作の背景を知っておくべきである
  • 新しい機能は既存技術に支えられている

 今回は以上で終了です。次回またお会いいたしましょう。ごきげんよう!