このページの本文へ

初心者歓迎!ネットワークセキュリティ入門 第1回

ネットワークの脅威と対策を一から学ぼう

不正アクセスを防ぐファイアウォールの仕組み

2009年08月12日 09時00分更新

文● 大谷イビサ/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

通信を識別するパケットフィルタリング

 これまで紹介してきたパケットフィルタリングは、IPアドレスやTCP/UDPのポート番号などヘッダに書き込まれた制御情報を条件に用いたアクセス制御の方法である。Webやメールといった代表的なインターネットサービスはTCPを用いており、しかもあらかじめ決まったウェルノウンポート※5でサーバが待ち受けることになる。そのため、こうしたサービスはモデル化しやすく、ポリシーを容易に作成できる。

*5:ウェルノウンポート TCP/UDPで使われるポート番号のうち、よく使われるアプリケーションに割り当てられた0~1023番のポート。クライアントが指定するために、サービスごとに標準のポート番号が決まっている。

 しかし、ヘッダのみの情報では、攻撃を完全に捕捉することはできない。アプリケーションが解釈するデータを転送しやすいように小分けにしたパケットは、単体では正常な通信か攻撃かを判別することが難しいのだ。そこで登場したのが、通信を識別するよりインテリジェントなパケットフィルタリングである。

 従来のパケットフィルタリングでは、HTTPであれば80番ポート、SMTPであれば25番ポートといった具合に、アプリケーション(サービス)に合わせてポートを固定的に開放していた。このポートの開け閉めを動的に行なえるようにしたのが、「ダイナミックパケットフィルタリング」である

ダイナミックパケットフィルタリングの動作

 現状のパケットフィルタリングでは、単に外側から着信したTCPのコネクション開始のパケットは、攻撃の兆候とみなされることが多い。一方で、ACKフラグの付いたTCPのパケットはLANのクライアントの応答と解釈され、無条件で通過してしまう。

 一方で、ダイナミックパケットフィルタリングでは、TCPのコネクションを管理し、動的にポートを開け閉めする。Webでの通信の例を見てみよう(図6)。

図6 動的にポートの開け閉めを行なうダイナミックパケットフィルタリング

 まずLAN内のクライアントから、インターネット上のWebサーバに対してTCPのコネクション開始のリクエストが送られる。次にはWebサーバから応答のパケットを受け取ったクライアントは、サーバとコネクションを確立する。これに対し、ダイナミックパケットフィルタリングでは、このTCPのパケットの流れをログとして記録しておき、ポートを開け閉めする。つまり、いったん家人が出かけた限りは、そのことをドアが覚えているので、締め出されることもないわけだ。もちろん家人が帰ってきたら、自動的にドアが開き、家に入ることができるのである。

 また、通常のパケットフィルタリングのように外向きと内向きの2つのルールを生成することもない。ダイナミックパケットフィルタリングでは、サービスに対して1つルールを作っておけば、応答のパケットは自動的に通過させてくれる。

 現在はダイナミックパケットフィルタリングを拡張したものとして、IPやTCPの情報だけではなく、アプリケーション層の情報まで捉えてアクセス制御を実現する「ステートフルパケットインスペクション(SPI)」という方法を採用している(図7)。各層の制御情報を、アプリケーションごとの特徴を登録したデータベースと照らし合わせることで、精度の高いアクセス制御が実現する。

図7 各層の情報を統合したステートフルインスペクション

 これにより、たとえばFTPのように1つのファイルのやりとりに対して2つのコネクションを構築する通信や、IP電話で用いるSIP(Session Initiation Protocol)のように利用するポート番号を動的に決定するような通信でも、確実に制御できるわけだ。

(次ページ、「アプリケーションゲートウェイとは?」に続く)


 

カテゴリートップへ

この連載の記事