Windows TIPS
[Network]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

ファイアウォールの空白時間に注意

デジタルアドバンテージ
2003/11/22
 
対象OS
Windows XP
Windows Server 2003
Windows OS内蔵のファイアウォール機能には、システム起動時にサービスが開始するまで若干のタイムラグがある。このタイムラグの間にワームなどに感染する危険性があるので注意する。
これを避けるためには、外部ルータを使ってパケットをフィルタするのがよい。
システムのインストールやパッチの適用などは、インターネットから隔離された安全な場所で行うこと。
 
解説

 Windows XPやWindows Server 2003には、外部からの不正なネットワーク・アクセスを禁止するために、簡単ながらもファイアウォール機能が備えられている。具体的には、IPやTCP、UDPレベルで外部からのアクセスを拒否する、パケット・フィルタの機能が用意されている。Windows XPでは、これを「ICF(Internet Connection Firewall、インターネット接続ファイアウォール」と呼んでいる。

 またWindows Server 2003では、同様の機能として、Windows XPと同様のICFのほか、さらに高度な機能を持った「ベーシック ファイアウォール」機能も持っている。「ベーシック ファイアウォール」は、Server OS用の高度なネットワーク・ルーティング機能である「ルーティングとリモートアクセス(RRAS)」の1つの機能として実装されている。ICFと比較すると、より高度なフィルタリングやルーティング機能などを備えているが、単に外部からのパケットを禁止するという目的からみると、機能にそう大きな違いはない。

 ICFやWindows Server 2003のベーシック・ファイアウォールを利用すると、例えばBlasterワームのような、インターネットに接続するだけで感染するワームなどに対して効果があるとされている。実際、外部からの不正なアクセスはすべて禁止できるのだが、ほんの少しだけ注意しなければならない点がある。それは、システム起動時に、わずかではあるが、ファイアウォールが無効になっている期間が存在するのである。

システムの再起動時に注意

 これらのファイアウォールは、Windows OSのサービスとして実装されている。具体的には、ICFは「Internet Connection Firewall (ICF) / Internet Connection Sharing (ICS)」というサービスで実装されており、Windows Server 2003のベーシック・ファイアウォールは「Routing and Remote Access」サービスで実装されている。いずれのサービスも、ネットワーク・インターフェイスがアクティブになってから(ネットワーク・インターフェイスに対してIPアドレスなどが割り当てられてから)、ファイアウォール・サービスが開始されるように設計されている。ネットワーク・インターフェイスが先にアクティブになっていないと、ファイアウォールがどのインターフェイスで動作するかなどを決定できないからだろう。

 このような事情のため、システム起動時においてファイアウォール・サービスが起動するまでのわずかな時間は、ネットワーク・インターフェイスが有効なものの(IPアドレスが割り当てられているものの)、ファイアウォール機能が無効という期間が存在することになる(注:これはネットワーク・インターフェイスで直接ICFを設定している場合の話である。インターネット接続のためにPPPoE接続を利用する場合は、PPPoE接続のプロパティでICFを設定するので、これが問題になる可能性は少ない。通常PPPoE接続は、システム起動後にユーザー自身でアクティブにするからだ)。

 この具体的な空白時間については、システムの構成などに依存するので常に何秒であるとはいえないが、例えばpingコマンドを使えば簡単に測定することができる。

ping -n 10000 192.168.1.123

 これは、192.168.1.123というホストに対して、pingを連続して実行するというコマンドだ。「-n 10000」は、1万回繰り返せという指示である。これを実行すると、デフォルトでは1秒間隔でping用のパケットを送信し、応答があれば「Reply from ……」というメッセージが戻ってくる。しかしファイアウォールでブロックされていると、「Request timed out.」というメッセージが戻ってくる。実際に実行してみると、次のようになる。通信先の相手は、ICF機能を有効にしたWindows XP Professionalマシンであり、pingの実行直後にシステムを起動させている。ICFを有効にすると、デフォルトではTCPやUDPだけでなく、pingが使用しているICMPもブロックされるので、常に「Request timed out.」となると予測される。

C:\>ping -n 10000 192.168.1.123

Pinging 192.168.1.123 with 32 bytes of data:

Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Reply from 192.168.1.123: bytes=32 time<10ms TTL=128
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
(以下省略)

 pingコマンドの最初の十数個は、「Request timed out.」となって、pingが失敗していることが分かる。この間は、システムが起動中であり、ネットワーク・インターフェイスがアクティブになっていない(IPアドレスなどが割り当てられていない)から、当然であろう。

 だがその後、22回ほどpingからの応答があり、その後また無応答になっていることが分かる。最後に「Request timed out.」となるのは、ICFが起動したからだが、その前の22回は、ICFが機能していない(実際の期間はシステム構成によって変わる)。つまり、ICFを有効にしているにもかかわらず、外部からの攻撃を受けてしまう可能性がある。

 これを同じ実験をWindows Server 2003マシンに対して実行すると、ICFならば約10秒間、ベーシック・ファイアウォールなら約3秒間、同じようにpingに応答する期間が確認された(この値も手元の実験マシンでの結果であり、システムによって変わる可能性があるので注意していただきたい)。

 このように、ICFやベーシック・ファイアウォールには、システム起動時(システムの再起動時も含む)に数秒から十数秒間の無効な期間が存在するので、注意する必要がある。いまやインターネット上には常にワーム・パケットが満ちあふれている。そのため、システム起動時のわずかな間でもワーム・パケットを受信すると、ワームに感染してしまうことになる。実際、MSBlastワームが猛威を振るっていたときは、システム再起動の隙に感染してしまうという事例も多くあったようだ(ピーク時には、数秒に1回とか、それ以上の頻度でワーム・パケットが流れていた)。

 具体的な対策としては、以下のようなものが考えられる。

■外部ルータでのパケット・フィルタリング
 インターネットに接続する場合は、外部のルータで必ずパケット・フィルタリングを行い、不要なパケットを受信しないようにする。特に、各マシンにグローバルIPアドレスを付けてインターネットへ接続しているような環境では、インターネット接続用のルータで必ず不要なパケットをフィルタリングするべきである。

■セキュリティ・パッチの適用の徹底
 Blasterなどのワームに対しては、すでにパッチが提供されているので、必ずこれらを適用しておく。そうすれば、たとえファイアウォールが一時的に機能しなくても、システムが感染することはない。ICFやベーシック・ファイアウォールは、ワームを防ぐための万能の手段ではなく、パッチと併用するべきものである。

■システムの再起動時には、インターネットへの接続を一時的に遮断しておく
 インターネットへ直接接続されたシステムでは、システムの再起動時には、インターネットへの接続を切断しておけば、ワームの攻撃を回避することができる。ただしイーサネットのネットワーク・カードからケーブルを外してしまうと、ネットワーク・アダプタのアクティブ化そのものが行われなくなるので、さまざまなネットワーク・サービスが起動できなくなってしまう可能性がある。イーサネットのハブへは接続するものの、その先のインターネット接続回線を外すようにする。

■システムのインストールやセキュリティ・パッチの適用はファイアウォール内で行う
 例えばインターネット向けのサーバだからといって、インターネットに直接接続して、グローバルIPアドレスを付けたままシステムをインストールしたり、パッチを適用しようとすると、再起動時にワームに感染する可能性がある。必ず、イントラネットの内部で、もしくは、ルータなどのファイアウォールで隔離された環境で、パッチを適用したり、システムをインストールしたり必要がある(要するに、OS自身のファイアウォール機能だけに頼らない、ということ)。

 なお、ICFのこのような挙動は、次期Service Pack(Windows XP SP2)で修正される予定となっている。End of Article

関連記事(Windows Server Insider)
  Windows Tips:イントラネットでファイアウォールを使う(Windows XP編)
     
関連リンク
  サポート技術情報―Windows XP SP1 および Windows Server 2003 では ICF が勝手に送り付けてくるユニキャスト、マルチキャスト、およびブロードキャスト トラフィックをブロックする(マイクロソフト)
     
 
「Windows TIPS」


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

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間