![]() |
Copyright © 2000-2005 eazyfox. All Rights Reserved. | ||||
|
|
|||||
| Firewallの仕組みを簡単に説明していく。最先端の技術でもやっていることは同じだと思われる。詳細な内容は各社企業秘密のため、ここに記載してある記述と異なる場合もあるが、わからないんだから気にしない。パケットの通過を許可・拒否する動作をフィルタリングと呼ぶ。これは動作する内容によって3つに別れ、それぞれパケットフィルタ、アプリケーション プロキシ、ステートフル パケット インスペクションと呼ばれる。ここにOSI7層モデルという図を掲げるが、これは難しく考える必要はない。7つの役割を行うプログラムまたはハードウェアがあって、それぞれのレイヤがデータを引き取ると次ぎのレイヤに渡していく。バケツリレーのようにデータを渡していくことで最終的にインターネットにデータが流れていったり、ファイルがコピーされたりしているのだ。あとでもう少しわかりやすく説明しよう。パーソナルFirewallではアプリケーションフィルタというステートフル パケット インスペクションのさらに高度な形態があるのだ。ではFirewallに話を戻す。 |
| ・パケットフィルタ |
| OSIのデータリンク(LINK)層とネットワーク層(IP)の中間にドライバをおく。つまりネットワークドライバとして働きながら、フィルタリングを行う。データリンク層から引き取ったパケットの内容を判定する。判定の材料となるのは 1:宛先IP 2:宛先ポート番号 3:発信元IP 4:発信元ポート番号 5:Syn・Ackフラグ 6:IPフラグメントフラグ これにより 1:Syn/Ackフラグによりコネクション要求か開設済みコネクションのデータかを判定する。 さらに各IP,ポートを判定して 2:宛先を判定して許可・拒否を決定する 3:宛先となるポートを判定して許可・拒否を決定する(自提供サービスの指定) 4:相手先を判定して許可・拒否を決定する 5:相手先のサービスを判定して許可・拒否を決定する(相手サービスの指定) 6:パケットのフラグメントフラグを判定して、パケットの許可・拒否を決定する |
| ・パケットフィルタの限界 |
| パケットでフィルタリングを行うことができるのは上記の内容に限られる。最近流行のBOFアタックでは3:の判定処理(自提供サービスの指定)では正常な要求として判定される。つまり悪意のあるパケットから逃れることはできない。またトロイの木馬のように一見内部からのFTPデータの送信にみえるようなパケットや、機密データの漏洩のようにヘッダ部の判定だけではわからない不正なパケットについては無力である。このためにパケットのヘッダだけではなく、データそのものの判定が必要となっていく。このために登場したのがステートフル
パケット インスペクションでありアプリケーションフィルタだ。 |
| ・ステートフル パケット インスペクション |
| パケットフィルタはTCPのヘッダまでしか判断しないが、ステートフル パケット インスペクション(Stateful Packet
Inspection:パケット状態監視)ではパケットのデータ部の内容と宛先や方向まで監視する。簡単に言うとパケットフィルタにアプリケーションプロキシ機能を加えたようなものだ。それによりコネクションの状態やヘッダ部にあるフラグの状態に加えてプログラムの状態まで判断する。現在一般的なFirewall製品(パーソナル目的でないもの)ではこの機能を持ったものが多い。後述するアプリケーションフィルタでは「特定のプログラムが使っているコネクション」まで判断できるが、Firewall専用機で動作しているシステムではアプリケーション名まで分からないし、バッファの状態も分からないので、この機能が限界と言うか、もっとも優れた機能とされている。この機能でもトロイの木馬や不正侵入を完全に防ぐことは出来ない。木馬が一般的に使われるポート(HttpやFTPの)を使うのなら木馬とブラウザの区別がつかないからだ。 |
| ・アプリケーション プロキシ |
| これは後述するプロキシ(Proxy)と一般に呼べれているもので、プロトコルにあわせて専用の中継機能を提供する。くわしくはこちらを見て欲しい |
| ・アプリケーションフィルタ |
| ここに一軒の学生寮がある。携帯電話は使用禁止で、寮母さんの部屋に1台共有の電話がある。通常、外からかかってくる電話は寮母さんが取り、部屋まで「電話がかかっている」と呼びに来てくれる。したがって不信な人からの電話は取り次がない。これがパケットフィルタ。話の内容まではわからないが知らない人からの電話は繋がらないのだ。寮母さんはこっそり電話の内容を聞き耳立てて聞いていて、変な会話をしていると判断したら電話を切ってしまう。つまり会話の内容を電話を許可するか、強制切断するかを判断している。これがアプリケーションフィルタ。強引だが大まかに言うとこんな内容となる。アプリケーションフィルタではパケットのヘッダ情報に含まれる相手先、自局の情報だけでなく、データの内容、履歴、頻度などを判断して許可・拒否を決定する。たとえば「お父さんがIEをつかって株式情報を見ることを許可する」といった内容では 1:相手先IP 2:相手先ポート番号 3:自IP 4:自ポート といったパケットフィルタの判定のほかに 5:お父さんが操作する 6:IEを使う 7:内容は株式情報のWebを参照する といった判定材料が追加される。Firewallでは誰がいつ、どこに、なにを、どうしたといった内容を記憶している。または事前にその内容を登録しておく。そしてルールに適合する内容かを判断するのだ。現在、インターネットに128Kで接続しているとすると、1秒間にフィルタを通過するデータ量はだいたい16Kバイトとなる。文字数で言うと8000文字だ。これは現在のCPU能力からすると微々たる物である。またこの値はMax値に近く、実際には6000文字程度を毎秒判定すればいいことになる。アプリケーションフィルタによって、本来のサービスではありえないようなデータであれば拒否することができる。これによりBOFアタックから逃れることができるし、不正なコンテンツにアクセスすることを防ぐことも、不用意にクレジット番号をなまテキストで送信してしまうことを防ぐことも可能となる。 |
| ・アプリケーションフィルタは万能か? |
| Excelで作ったシートをメールで受信または送信しようとしている。Excelのデータである、メールをおくる、といった内容は日常の行動なのでアプリケーションフィルタでも拒否はされない。しかしこのシートの中にVirusが潜んでいる可能性はある。単純にデータ内容の判定だけでは対応できないことも存在する。 |