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

5.パケット・フィルタの設定(1)

デジタルアドバンテージ
2001/01/17


 今回も、前回と同様のポリシーに基づいてセキュリティ対策を施すことにする。ネットワーク環境としては、前回の「3.ネットワーク環境について」と同様に、インターネットへ接続している側のLANインターフェイス名を“インターネット 接続”、ローカルネット側のLANインターフェイス名を“ローカルネット 接続”とする(文字列の途中に半角の空白が1文字分入っていることに注意)。インターネット側のLANカードのIPアドレスやサブネットマスクなどはDHCPによってプロバイダから割り当てられ、ローカルネット側はWindows 2000 Professionalの接続共有機能によって、192.168.0.1が割り当てられているものとする。

要求されるパケット・フィルタ設定

 要求されるネットワークのセキュリティ・ポリシー(運用方針)としては、前回と同等か、それよりも安全に(厳格に)なるように設定することにする。前回は、TCP/IPのプロトコル・スタックが持つパケット・フィルタの機能制限により、UDP側のポートをブロックすることはできなかったが(UDPを全部ブロックしてしまうと、DNSなどが引けなくなってしまうため)、今回はよりセキュアな設定を行うことにする。つまり、Windowsのファイル共有などのサービスをインターネット側からはアクセスできないようにし、かつ、Windows 2000マシンやローカルネット側からはインターネット側のサービスをすべて利用できるようにするのである。

 このような環境を実現するには、基本的には、インバウンドのTCP接続要求をすべて禁止し、(インバウンドの)UDPについても、必要なもの以外はすべてブロックするようにすればよい。ただしTCPについては、FTPのデータ・ポートだけは着信ができるようにしておこう(こうしないと、FTPがパッシブ・モードでしか利用できなくなる)。

 ICMPについても、これらを(積極的に)許可する理由は特にないので、すべてブロックしてしまってもよいだろう。ただしインバウンドのICMPを本当にすべて禁止すると、pingの応答すら受け取れなくなってしまうので、これについては許可することにする。

 以上の設定をまとめると、次のようになる。

プロトコル
設定
TCP
インターネット側からの接続要求はデフォルトですべて禁止。ただしftpのデータ・ポートからの接続要求(ソース・ポート番号=20)だけは許可。内部からインターネット側へのパケット(アウトバウンドのパケット)は許可
UDP
インターネット側からの接続要求はデフォルトですべて禁止。ただしDNSの応答パケット(ソース・ポート番号=53)、DHCPの応答パケット(ソース・ポート番号=67、宛先ポート番号=68)、NTP(ソース・ポート番号=123)の3種類だけは許可。内部からインターネット側へのパケット(アウトバウンドのパケット)は許可
ICMP
インターネット側からのインバウンド・パケットはデフォルトですべて禁止。ただしpingパケットで使われるICMP Echo(type=8、code=0)/Echo Reply(type=0、code=0)だけは許可。内部からインターネット側へのパケット(アウトバウンドのパケット)は許可
設定するパケットの制御ポリシー
「インターネット 接続」側のインターフェイス・カードに対して設定するフィルタリング・ポリシー。基本的に内部からインターネット側へ送信されるパケットはそのまま通すが、外部からの接続要求はすべて禁止する。ただし、内部からインターネット側へ送ったパケットに対する応答だけは通すようにする。

RRASのパケット・フィルタリング機能

 ここでRRASの持つパケット・フィルタリングの機能についてみておこう。RRASのパケット・フィルタでは、前回紹介したTCP/IP組み込みのものと違って、ソースと宛先のIPアドレスおよびポート番号の組み合わせでルールを記述できるようになっている。そのため前回は実現できなかった、TCPやUDPの応答パケットに対するフィルタ・ルールも設定することができる。IPアドレスも指定することができるが、実際にはインターネット側のIPアドレスはDHCPで割り当てられるので、これはあまり使う機会はないかもしれない。

RRASのパケット・フィルタリング

RRASのパケット・フィルタリング機能では、ネットワーク・プロトコルの各階層において、パケット中の特定の部分の値が、あらかじめ指定された値にマッチするかどうかに基づいて、パケットの通過/破棄を決める。RRASのパケット・フィルタでは、のソースIPアドレスと宛先IPアドレス、のプロトコル(TCP/UDP/ICMP)、のソース・ポート番号と宛先ポート番号のそれぞれに条件を指定することができる。パケットの向きは、各インターフェイスのインバウンドとアウトバウンドのそれぞれで区別される。

各プロトコル別フィルタ設定の詳細

 以上のような機能を念頭において、各プロトコル別のフィルタ設定について詳しくみておこう。

■TCPの設定について

 TCPの通信では、どちらが最初に待ち受けをしているかによって、「サーバ側」と「クライアント側」の2つに分かれている。一般に、インターネット上のサーバはクライアントからの接続を待っている状態(待ち受け状態。「パッシブ・オープン」状態ともいう)にあり、そこへクライアント側からオープン要求を送信する(これを「アクティブ・オープン」という)ことによってTCP接続が開始される。今回のネットワーク環境の例でいえば、Windows 2000 Professionalマシン側から、「インターネット 接続」インターフェイスを経由してインターネット側へオープン要求(アクティブ・オープン要求)が送出される。このようなパケットについては制限する必要はないため、TCPのフィルタ設定では、アウトバウンドは基本的にすべてそのまま通るようにすればよい。

 インバウンドのTCPパケットについては、インターネット側からの接続要求(アクティブ・オープン要求)をすべてブロックすればよい。前回のパケット・フィルタリングの記事でもこのように設定していた。しかしこれだけでは通常のFTPが正しく動作しないという問題がある。というのは、FTPではTCPのポート21番のほかに、データ用のコネクションとしてTCPのポート20番を別途使っているからである。これはFTPのputやgetコマンドでデータを送受信するときだけでなく、lsやdirコマンドでも利用されている。

 このTCPコネクションでは、FTPサーバの側がポート20番、FTPクライアントの側がランダムなポート番号となっている。そして、FTPサーバの側(ポート20番の側)からオープン要求を送ってくる(FTPサーバ側がアクティブ・オープンを行う)。このパケットを通すようにするためには、「ソース・ポート番号が20」で「宛先ポート番号が任意」というTCPコネクションを許可する必要がある。もしこの設定を行わないのなら、FTPはパッシブ・モードで利用しなければならない(パッシブ・モードでは接続の向きは逆になる)。

■UDPの設定について

 UDPは、TCPのような状態を持たないプロトコルなので、どのパケットがどのパケットに対する応答であるかということを知るのは難しい。UDPパケットを使ったアプリケーションでは、受け取った要求に対してなんらかの返事を出すものもあるし、まったく無視するもの(情報を受け取るだけ)、送るだけのもの(情報を送るだけ)と、さまざまなタイプがある。そのためTCPの場合と違って、UDPのパケットを受け取りたい場合は、プロトコルの種類(UDPパケットの使われ方。特にポート番号の使われ方)を考慮してフィルタ設定を行う必要がある。今回のフィルタ設定では、DNSとDHCP、NTPの3つのプロトコルについて通すように設定し、それ以外のUDPパケットはすべてブロックするようにしてみる。ただし時刻設定のためのプロトコルであるNTP(SNTP)については、特に需要がなければ通す必要はないので、各自の判断で対応していただきたい。

 DNSにおけるUDPのポート番号(53番)の取り扱いについては前回述べたが、ソース・ポート番号と宛先ポート番号のフィールドが、DNSの要求と応答で入れ替わっている。そのため、DNSの応答パケットを正しく受け取るためには、ソース・ポート番号が53番のパケットを通るようにする必要がある(宛先ポート番号は毎回ランダムに変わる)。同様にNTP(123番)も、ソース・ポート番号と宛先ポート番号のフィールドが入れ替わってパケットが到着するので、ソース・ポート番号が123番のパケットを通すようにすればよい。

 DHCP(BOOTPの機能を拡張したもの。使用するポート番号は同じ)はDNSなどと違って、常に固定的なポート番号が使われるという特徴がある(DHCPやBOOTPはシステム起動前の限られたリソースで動作しなければならないので、プロトコルの処理を軽くするためにこのようになっているようである)。DHCP(BOOTP)のサーバ側のポート番号は常に67番、クライアント側は常に68番となっている。DHCPを有効にするためには、このポート番号を持つUDPパケットのみを通過させればよい。

■ICMPの設定について

 ICMPは、TCP/IP通信において、補助的な情報(エラーなどの情報)をやり取りするために使われるプロトコルである。pingコマンドでは、このICMPを使って診断用データを送受信しているので、pingコマンドを利用できるようにするためには、ICMPのパケットが送受信できるようにしておく必要がある(ネットワークのトラブルシューティング作業などのためには、ぜひともこのpingが使えるようにしておくべきである)。

 ICMPで送受信されるパケットには、“type”と“code”という補助的なフィールドがある。pingで使われるICMP Echoとその応答であるICMP Echo Replyパケットでは、typeフィールドの値はそれぞれ「8」と「0」なので、pingの応答を受け取ることができるようにするには「type=0」のICMPパケットを通すようにする必要がある。また他のマシンからのpingに対して応答できるようにするには(必ずしも外部からのpingに応答する必要はないが、自分のマシン環境をインターネット側からチェックしたりする場合に、これが可能だと便利である。テストが終われば閉じてしまってもよいだろう)、「type=8」のICMPパケットを通すようにする必要がある(codeの値は0)。

パケット・フィルタ以外のセキュリティ設定について

 今回はRRASのパケット・フィルタの設定について述べているが、それ以外のセキュリティ設定についてはここでは言及しない。よって、前回の「4.セキュリティ対策その1:インターネット側のファイル共有サービスを禁止する」および「5.セキュリティ対策その2:NBTを禁止する」については、あらかじめ設定を済ませておいていただきたい。だがその後にある「6.セキュリティ対策その3:パケット・フィルタを設定する(1)」からのパケット/フィルタの設定は不要である。もしそれらのパケット・フィルタの設定を行うと、2種類のパケット・フィルタ機能が同時に働いてしまい(RRASを有効にしても、TCP/IPプロトコル・スタック組み込みのパケット・フィルタ機能は無効にならない)、意図しない動作を引き起こす可能性がある。

関連記事(Windows 2000 Insider内)
前編
3.ネットワーク環境について
前編
4.セキュリティ対策その1:インターネット側のファイル共有サービスを禁止する
前編

5.セキュリティ対策その2:NBTを禁止する

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

 INDEX
  [運用]常時接続時代のパーソナル・セキュリティ対策(第2回)
    1.Routing and Remote Accessサービスとその使い方(1)
    2.Routing and Remote Accessサービスとその使い方(2)
    3.Routing and Remote Accessサービスとその使い方(3)
    4.Routing and Remote Accessサービスとその使い方(4)
  5.パケット・フィルタの設定(1)
    6.パケット・フィルタの設定(2)
    7.パケット・フィルタの設定(3)
    8.パケット・フィルタの設定(4)
    9.パケット・フィルタの設定(5)
   10.パケット・フィルタの設定(6)
 
 運用


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

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間