連載
» 2001年06月19日 00時00分 公開

ファイアウォール運用の基礎(2):サーバの要塞化とTCP/IPの基礎知識 (2/3)

[田原祐介,株式会社ラック/不正アクセス対策事業本部]

サービスとポート番号

 パケットフィルタリングは、送信先アドレスと送信元アドレスをもとにパケットのフィルタリングを行います。ここでいう“アドレス”とは、IPアドレスと、サービスのポート番号から成ります。IPアドレスはインターネット上のホストを特定しますが、ポート番号は、そのホスト上でパケットを送受信するアプリケーションを特定します。

図2 ホスト間で“ポート”を介して通信が行われる仕組み。通信するアプリケーション(サービス)に対して相手先のポートは決まっているため番号が明示されているが、送信元のポートはその場に応じて決められるため「xxx」「zzz」としている

 IPアドレスが住所だとすると、ポート番号は各サービスの窓口のようなものです。例えば、SMTPは25番、POPは110番というふうに、主要なサービスには「well-knownポート」と呼ばれるポート番号が割り当てられています(図2)。これはサーバ側のポートですが、クライアント側ではOSが適当に割り当てるポート(通常、1023番より大きいポート番号が割り当てられる)が使用されます。このように、IPアドレスとポート番号の組み合わせを使用することによって、クライアントとサーバ間で、お互いのアプリケーションに確実にパケットを届けることができるのです。

 さらにTCPでは、データのやりとりを始めるまでに、「3ウェイ・ハンドシェイク」と呼ばれる手順で接続を確立する必要があります。3ウェイ・ハンドシェイクでは、「SYN」「SYN+ACK」「ACK」という3種類のフラグがセットされたパケットがやりとりされます(図3)。

図3 クライアント〜サーバ間では、TCP/IP通信が行われるまでに、上記のようなやり取りが発生する

 ここで、(1)のSYNフラグが立ったパケット(接続要求)を待ち受けている状態は、サーバ側のポートが「LISTEN」状態にあるといいます。また、(3)の接続が確立された状態を「ESTABLISHED」な状態にあるといいます。

 例えば、標準的な構成でインストールされたSolaris 8のポートの状態を調べると、以下のようになっています(リスト1)。

リスト1 Solaris 8のインストール直後のポートの状態

 ここで、(1) (2)はそれぞれサーバ側とクライアント側のIPアドレスとポート番号、(3)が接続の状態を表しています。特に、(3)でLISTENとなっているポートは、ポートが開いている状態、つまり接続を受け付ける状態にあることを表しています。ここで、ポートを開いているのは、サービスを提供しているプロセス(アプリケーション)です。つまり、ポートがLISTEN状態にあるということは、そのポートを開いているプロセスが必ず存在します。この状態で、起動しているプロセスを調べると、以下のようになっています(リスト2)。

リスト2 起動中のプロセスの一覧

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。