[運用]
常時接続時代のパーソナル・セキュリティ対策
(第1回)

6.セキュリティ対策その3:パケット・フィルタを設定する(1)

デジタルアドバンテージ
2000/12/23

パケット・フィルタを設定する

 Windows 2000のTCP/IPプロトコル・スタックには、簡易ながら、パケット・フィルタリング機能が用意されている。パケット・フィルタとは、ネットワーク・パケットに含まれる特定のフィールドの内容に基づいて、パケットを通したり、破棄したりする機能のことである。例えば、HTTP(TCPの80番)はそのまま通すが、Telnetやftp(それぞれ、TCPの23番と20/21番)のパケットは通さない(拒否する)などというふうに使う。パケット単位で通過させるかどうかを判断するので、処理が簡単で素早いのが特徴である。ネットワーク・プロトコル的に見ると、プロトコルの各階層におけるヘッダ部分をチェックして、あらかじめ指定した条件にマッチしたものだけを通過させたり、破棄したりする。ヘッダ部分は(たいていの場合)固定長なので、比較が簡単であり、素早く処理できる。

ネットワークのパケット・フィルタリング
パケット・フィルタリングでは、ネットワーク・プロトコルの各階層において、パケット中の特定の部分の値が、あらかじめ指定された値にマッチするかどうかに基づいて、パケットの通過/破棄を決める。これはTCP/IPプロトコル階層の例。各階層のパケットは、固定長のヘッダ部分と可変長のデータ部分(ペイロード部分)からなっており、比較はヘッダ部分に対して行われる。一般的には、IPアドレスやポート番号、プロトコル番号などに基づいてフィルタリング条件を決める。例えば、のプロトコル番号が「6(TCP)」で、の宛先ポート番号が「80(HTTP)」のものは受け付けないなどとすると、HTTP要求をすべて拒否することができる。Windows NT/2000のTCP/IPプロトコルに組み込まれているパケット・フィルタリング機能では、のIPのプロトコル番号と、のTCP/UDPの宛先ポート番号だけしか条件として利用できない。

Windows 2000で利用できる、2つのパケット・フィルタリング機能

 Windows 2000では、2種類のパケット・フィルタリング機能が利用できる。1つは、Windows NTの時から用意されている、TCP/IPプロトコル・スタックに組み込まれているパケット・フィルタリング機能である。このパケット・フィルタは非常に限定的な機能しか持っていないが、Windows NTでも利用できるし、GUIベースで設定・管理できるので、取り扱いが容易であるという特徴を持っている。

 もう1つのパケット・フィルタリング機能は、「Routing and Remote Access Service(以後、RRASと省略)」に組み込まれているものである。RRASサービスは、当初はWindows NTの追加オプションとして無償で提供されていたものであり、Windows NTのリモート・アクセス・サービス(RAS)とネットワークのルーティング機能を統合して、より高機能なネットワーク・サービスを提供するために開発されたものである。Windows 2000にはこのRRASサービスが組み込まれており、その中の1つとしてパケット・フィルタリング機能が利用できる。こちらのほうが、先ほどのTCP/IPプロトコル・スタック組み込みのパケット・フィルタよりも高機能で柔軟性もあるが、Windows 2000 Professionalの場合はコマンドラインで管理する必要がある(Windows 2000 Server以上では、コマンドラインでも利用できるし、GUIの管理ツールも利用できる)。今回は、前者のTCP/IPプロトコル・スタック組み込みのパケット・フィルタについて解説し(この記事中で単に「パケット・フィルタ」というときは、こちらを指す)、RRASのパケット・フィルタについては次回取り扱うことにする。

TCP/IPプロトコル・スタック組み込みのパケット・フィルタ

 Windows 2000(もしくはWindows NT)のTCP/IPプロトコル・スタックに組み込まれているパケット・フィルタリング機能は、専用ルータのそれと比べると非常に限定的である。指定できる条件は、IPの「プロトコル番号(図中の)」と、TCP/UDPの「宛先ポート番号(図中の)」のみである。さらに利用できるアクションとしては、「指定されたフィールドの値が、あらかじめ与えられた条件にマッチするものだけを通す」、というものしかない。この逆のアクション、つまり「指定された値を持つパケットだけを拒否する」という指定はできない。デフォルトでは、これらのパケット・フィルタ機能はまったく働かないようになっているので、すべてのパケットが通過する。

 以上をまとめると、次のような3つのアクションを行うことができる。

  • すべてのパケットを通す
  • (IP、TCP、UDPごとに)指定された一部のパケットのみを通す
  • (IP、TCP、UDPごとに)まったく通さない

 念のために繰り返しておくが、

  • (IP、TCP、UDPごとに)指定された一部のパケットだけを拒否する

ということはできない。

 なおこのフィルタリングは、インターフェイス・カードに到着したパケットにのみ適用される。技術的に言うと、「インバウンド(inbound、マシンに向かって入ってくる方)」のトラフィックにのみ適用され、「アウトバウンド(outbound、マシンから出て行く方)」のトラフィックには適用されない。

ルーティングとNATとパケット・フィルタリング

 ところでこのパケット・フィルタリング機能であるが、Windows 2000の接続共有機能(NAT)やルーティングとは、独立していることに注意されたい。接続共有機能を有効にしたWindows 2000マシンに対して何らかのネットワーク・パケットが届く場合、その宛先などに応じて、次の3つの種類が考えられるが、それぞれ異なる動作をする。

 1つ目は、宛先が自分宛になっているパケットである。装着しているネットワーク・カードに付けられたIPアドレスや、ブロードキャスト・アドレス、マルチキャスト・アドレスに向けて送信されたパケットがこれに相当する。もともとこれらのパケットは、自分自身でマシンの内部へ取り込んで処理しなければならないものであるが、パケット・フィルタリングは、このようなパケットに対して「のみ」機能する。つまり、自分宛のパケットに対しては、まずパケット・フィルタリングが適用され、それを通過したパケットのみがさらに内部で処理される。

 2つ目のパケットとしては、ルーティングされて、(他の)インターフェイスからまた再送信される(IPパケットをフォワードするという)パケットがある。このようなパケットに対しては、Windows 2000のパケット・フィルタリング機能は適用されない。つまり、ルーティング(IPフォワード)時には、フィルタリング処理は行われない。

 3つ目のパケットとしては、接続共有機能のために、NAT(IPマスカレード)されるパケットがある。これらのパケットもルーティングと同じく、単にマシンを通過していくだけである。このようなパケットもやはり同様に、パケット・フィルタリングは適用されない。

フィルタリングの設定

 以上のような仕様を念頭において、接続共有設定しているマシンに対するパケット・フィルタを設定してみよう。

 いちばん望ましいのは、Windows 2000マシンに対するインターネット側からのパケットをすべてのブロックして、NAT(やルーティング)で通過するパケットのみを通すようにすることだ。この動作は、ちょうど上記の仕様と一致しているので、単にすべてのフィルタリング機能を有効にするだけでよいように思える(実はこれは正しくないのだが、詳細は後で)。以下のようにして、パケット・フィルタリングを有効にしてみよう。

パケット・フィルタリング機能を有効にする
まず[ネットワークとダイヤルアップ接続]ダイアログ中にある[インターネット接続]を右クリックして、[プロパティ]メニューを起動する。そして「インターネット プロトコル(TCP/IP)」の[プロパティ]をクリックし、表示されたダイアログボックスの[詳細設定]をクリックする。そして[オプション]タブを表示させる。パケット・フィルタリングを設定するには、この「オプション設定」から、「TCP/IPフィルタリング」を選ぶ。
  [オプション]で、オプション設定を表示させる。
  パケット・フィルタを設定するには「TCP/IPフィルタリング」を選ぶ。
  [プロパティ]をクリックする→
 
[TCP/IPフィルタリング]の設定(間違い編)
ここでパケット・フィルタリングの設定を行う。パケット・フィルタリングを有効にすると、すべてのインターフェイスでパケット・フィルタリングが有効になる。のチェックボックスはインターフェイスごとに存在するが、どこか1カ所でチェックすると、ほかのインターフェイスのパケット・フィルタリングも有効になる。つまりパケット・フィルタリング機能はTCP/IPのプロトコル・スタック全体に作用し、各インターフェイスごとに個別に有効/無効にすることはできない。いったんパケット・フィルタリング機能を有効にしたら、次は各プロトコルごとに通過/禁止する条件を指定する。この場合は、自分宛のパケットはすべてブロックさせたいので、「一部許可する」を選んで、その下の数値フィールドは空にしておけばよい。なお、これらの変更を行った後はシステムをリブートするようにメッセージが表示されるので、メッセージ通りにシステムをリブートさせる。
  これをチェックすると、パケット・フィルタリング機能が有効になる。ここでチェックを入れると、そのマシンに装着されている全インターフェイスで同様に有効になる。デフォルトはチェックされていないので、パケット・フィルタリングはいっさい無効になっている。
  これをオンにすると、すべてのTCPプロトコルが通過することになる。デフォルト状態はこちら。
  これをオンにすると、すべてのTCPプロトコルがブロックされることになる。ただしに数値を記入すると、そのポート宛のパケットだけは通過させることができる。
  通過させたいTCPの宛先ポート番号のリストをここに入力する。数値の範囲を指定することはできず、複数のポートがある場合は、それらをすべて1つずつ入力しなければならない。
  宛先ポート番号を追加する場合は、これをクリックする。
  宛先ポート番号を削除する場合は、のリストから数値を選んで、これをクリックする。
  これをオンにすると、すべてのUDPプロトコルが通過することになる。デフォルト状態はこちら。
  これをオンにすると、すべてのUDPプロトコルがブロックされることになる。ただしに数値を記入すると、そのポート宛のパケットだけは通過させることができる。
  通過させたいUDPの宛先ポート番号のリストをここに入力する。
  これをオンにすると、すべてのIPプロトコルが通過することになる。デフォルト状態はこちら。
  これをオンにすると、TCPとUDPとICMP以外のすべてのIPプロトコルがブロックされることになる。ただしに数値を記入すると、そのプロトコル番号を持つIPパケットだけは通過させることができる。
  通過させたいIPのプロトコル番号のリストをここに入力する。
  IPプロトコル番号を追加する場合は、これをクリックする。
  IPプロトコル番号を削除する場合は、のリストから数値を選んで、これをクリックする。
 
更新履歴
【2000.12.25】当初「RRASの持つ高度なパケット・フィルタリング機能はWindows 2000 Professionalでは利用できない」としておりましたが、Windows 2000 Professionalでも利用できることが分かりましたので、これについての記述を追加しました。


 INDEX
  [運用]常時接続時代のパーソナル・セキュリティ対策(第1回)
    1.ネットワークの「接続共有」機能とは
    2.セキュリティ対策の必要性
    3.ネットワーク環境について
    4.セキュリティ対策その1:インターネット側のファイル共有サービスを禁止する
    5.セキュリティ対策その2:NBTを禁止する
  6.セキュリティ対策その3:パケット・フィルタを設定する(1)
    7.セキュリティ対策その3:パケット・フィルタを設定する(2)
    8.セキュリティ対策その3:パケット・フィルタを設定する(3)
    9.セキュリティ対策その3:パケット・フィルタを設定する(4)

 「運用 」


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

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間