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

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

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

TCPを利用したサービスの公開について

 以上の設定例では、TCPプロトコルはすべてブロックしてしまったので、もしこのマシンで何らかのTCPを使ったサービスを実行したとしても、それをインターネット側からアクセスすることはできない(UDPサービスの場合はフィルタリングしていないので、利用可能である。またローカル接続のLAN側からはいずれのサービスも制限なく利用可能)。たとえばInternet Information Service(IIS)をインストールして、Webサービスを提供する場合、HTTPプロトコルで使用するTCPのポート80番を通過するようにしておく必要がある(ポートを空けておかなくても、サービス自体は正常に起動するが、外部からの通信はできない)。

Webサービスを提供する場合のフィルタ設定
インターネット側に公開したいサービスがある場合、そのサービスで利用するポート番号だけは通過するように、フィルタを設定する。これはHTTP(TCPのポート80番)を通過させる例。
  パケット・フィルタリング機能は有効にする。
  TCPプロトコルはすべてブロックする。
  通過させるポート番号のリストに80をセットする。
  HTTPポートを追加するには、このボタンをクリックして、「80」を入力する。

 このような設定を行えば、インターネット側からWebサービス(HTTPプロトコル)にアクセスできるようになっているはずである。

 ところでこのフィルタ設定では、TCPのポート80番以外はすべてブロックするように設定している。とするとUDPの場合と同様に、すべての通信が不可能になってしまうような気がしないだろうか。だが実際には、外部からのHTTPアクセスは可能だし、Windows 2000マシンから外部のTCPを使ったサービス(Web、メール、Telnet、ほか)へは問題なくアクセスすることができる(注意:ftpクライアントは、パッシブ・モードでのみ利用可能。通常のftpクライアントでは、クライアント側の待ち受けデータ・ポート番号がランダムに変わるため、固定的にポートを空けておくことができない。パッシブ・モードでは、ftpクライアント側からしかTCP接続をオープンしないので、ポートを空けておく必要がなくなる)。

 このような結果になるのは、TCPとUDPではフィルタリングのメカニズムが異なっているからである。UDPでは、無条件に宛先ポート番号が指定条件にマッチすればフィルタリングされていた。しかしTCPの場合は、インバウンドのSYNパケットのみがフィルタリングの対象になっているので、このような結果になる。

 TCPは、「ステートフル(stateful、状態を持つ)」なプロトコルである。2台のマシンがTCPプロトコルで通信をする場合、そのコネクションが確立するまでにはきちんとした手順が決められている。

TCPコネクションの確立
TCPはステートフルな(状態を持つ)通信プロトコルである。サーバ側とクライアント側の2つがきちんと区別されており、どちらから接続要求を出すかによってサーバになったり、クライアントになったりする。サーバ側では、あるポートに対して待ち受け(リッスン)しており、そこにクライアント側から接続要求を送ることによって通信が開始される。また、全二重通信をサポートしているので、SYNを送ってACKを待つのは、両方の側から行う必要がある。Windows 2000のTCPのパケット・フィルタリングは、のパケットにのみ作用する。
  クライアントからサーバに対して、SYNを送って、TCP接続の開始を要求する。
  サーバ側はSYNに対してACKを送り、受け付けたことを表明する。と同時に、サーバ側からクライアント側へのSYNも送る。
  クライアント側からサーバ側へ、SYNに対するACKを送る。この3回のやり取りで、TCPの接続が確立する。

 TCPの通信では、まず最初にどちらかが相手の待ち受けポートに対して、接続要求を送ることから始まる。このとき、要求を待ち受けしている側がサーバ、要求を送るほうがクライアントとなる。

 接続要求のパケットには「SYN」という特別なフラグが付けられている。サーバ側ではそれに対して「ACK(Acknowledge)」付きのパケットを返すことにより、接続要求を受け付けたことを表す。さらにTCPでは双方向の全二重通信を行うので、逆にサーバ側からもSYNを送って(サーバ側からのACKと同時に送られる)、それに対してクライアント側からACKを返す。以上のように、都合3回のパケットのやり取りをして、始めてTCPの接続が確立することになる(これを「3ウェイ・ハンドシェイク」という)。以後は相互にデータを送って通信を行う。

 Windows 2000のTCPのパケット・フィルタリングではこれらのパケットのうち、一番最初に送られる、クライアントからサーバ側へのSYNパケットにのみ作用するようになっている(図中ののパケット)。それ以外の(後続の)パケットにはこのフィルタリング機能は効かず、すべて通過するようになっている。しかし一番最初のSYNパケットがブロックされてしまえば、正常なTCP接続の確立は行えないわけであり、結果的に外部からのTCPの通信要求は拒否されることになる。

 以上のような仕様になっているため、許可するポートのリストに、1つも値を入れておかなくても、外部への通信が可能となっているのである。たとえばWindows 2000マシンからインターネット上のWebサーバへアクセスする場合、最初にSYNパケットを送るのはWindows 2000マシンの側である。そのため、パケット・フィルタリング機能でブロックされることなく通信が行われる。

IPアドレスなどを使ったより高度なセキュリティ機能

 インターネット側に対してWebのようなサービスを提供する場合、Windows 2000のTCP/IPプロトコル・スタックの持つパケット・フィルタリング機能だけでは十分なセキュリティを確保することはできない。たとえばソースIPアドレスやドメイン名などでアクセス制限を行う機能が用意されていないからだ。このような場合は、上位のアプリケーション側(IIS側など)が備えるアクセス制限機能を使って、セキュリティを確保する必要がある。

最後に

 今回は、Windows 2000の持つパケット・フィルタリング機能を中心にして、家庭やSOHOにおけるセキュリティ対策について見てきた。かなり限定的な機能しか持たないが、このような対策を施すだけでも、かなり安全性を増すことができるので、ぜひとも活用していただきたい。

 次回の中編では、Windows 2000のRRAS機能の持つパケット・フィルタリング機能について解説する。後編では、市販のパーソナル・セキュリティ製品を使って、より安全な環境を構築する方法についてみていく。End of Article

更新履歴
【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 記事ランキング

本日 月間