• 検索結果がありません。

IP フラグメンテーションの扱い

第 3 章 レイヤ 7 NIDS/NIPS のための TCP ストリーム再構成機構 22

3.3 Store-through 方式

3.3.5 IP フラグメンテーションの扱い

順番が入れ替わったパケットと同様にして,IPフラグメントされたパケットも,

転送を止めることはしない.IPフラグメントされたパケットが到着した場合,そ の時点で全てのフラグメントされたパケットが集まったならば,TCPストリーム 再構成機構はそれを再構成してセンサに渡す.一方,もしまだ抜けているパケッ トがあった場合,TCPストリーム再構成機構はそのパケットをコピーした後,す ぐに最終的な宛先に転送する.ここでも先ほどと同様に,メモリ枯渇を防ぐため に,コピーするパケットの量の最大値を設定している.

表3.1: MFフラグ,フラグメント・オフセット(FO)とフラグメントの関係 MFフラグ FO フラグメント 元の位置

0 0 No –

not 0 Yes 最後

1 0 Yes 最初

not 0 Yes 途中

フラグメントされたパケットについて

IPフラグメントされたパケットの順番整理も,TCPのシーケンス番号と同様に,

IPヘッダに付加された情報を用いて行うことができる.IPヘッダにはIPフラグメ ントされたパケットが受信側で再構築できるように,識別子(identification),MF

(more fragment)フラグ,フラグメント・オフセットの3つの情報が付加されてい

る.フラグメントされたデータ全てに同じ識別子がつき,これによって元のデー タを識別することができる.MFフラグは,それが最後のフラグメントではないこ とを示す.そして,フラグメント・オフセットは,そのフラグメントがもとのデー タのどの位置にあったのかを示す.

パケットがフラグメントされたものかどうかは,MFフラグとフラグメント・オ フセットの値を見れば分かる.その関係を表3.1に示す.もし,パケットがフラグ メントされていなければ,前節で述べたコネクション管理とパケットの順序管理 を行う.フラグメントされていた場合の管理について以下で述べる.

パケットの順序および再構築

IPフラグメントされたパケットの順番および再構築は,識別子,MFフラグ,フ ラグメント・オフセットの3つを利用して行う.MFフラグが立っていればまだフ ラグメントされたパケットがあるということを意味する.識別子は,フラグメン トされたデータ全てに同じ値がつくので,これによって元のデータを識別できる.

また,フラグメント・オフセットは,もとのデータのどの位置にあったかを示す.

これより,次のように今届いたパケットから次のパケットの値を予測することで,

パケットの順番を知ることができる.具体的には,以下のように次の識別子とフ ラグメント・オフセットを予測できる.ここで,フラグメント・オフセットは8バ イト単位,データ長はバイト単位であることに注意する.

フラグメントされた中の最初のパケットであれば,次のパケットの識別子と フラグメント・オフセット(FO)は,

次の識別子=識別子, (3.4) 次のF O =データ長/8. (3.5)

途中のパケットであれば,

次の識別子=識別子, (3.6)

次のF O=F O+データ長/8. (3.7)

最後のパケットであれば,

次の識別子 識別子+ 1, (3.8)

次のF O = 0. (3.9)

ここで,データ長はIPヘッダに含まれる全データ長とIPヘッダ長から求め る.全データ長はバイト単位,ヘッダ長は4バイト単位であることに注意す ると,

データ長=全データ長ヘッダ長4 (3.10)

コネクション管理

IPフラグメントされたパケットのうち, 2番目以降のパケットにはTCPヘッダが 含まれていないため,ポート番号を知ることができない.すなわち,第3.3.4節で 述べたコネクション情報の識別ができない.そのため,フラグメントされたパケッ トが全てそろってから,それらを1つのパケットに構成しなおした後,対応する コネクション情報を求めて処理する.IPフラグメントされたパケットが全てそろ うまでは,双方のIPアドレスとプロトコル番号のみの3つを用いて識別し,IPフ ラグメントされたパケットの管理等を行う.