*ステートフルインスペクション-その1*


ここでは、ファイアウォール機器が実装しているステートフルインスペクション機能について説明します。
パケットフィルタリングのアクセス制御に加え、主に以下の2つの情報をチェックします。

以下、2人の会話をご覧ください。


後輩 せんぱ~い (^ー^*)
資料は見つかりました?
先輩 う~ん、ない。(・_・)
というわけで、今日はもう終わり。
後輩 え~、そんなぁ。。。(TεT;)
先輩 わ、分かったから泣くなっつーの。
だいたい覚えているので、ダイジョブダ。(´・ω・`)b
後輩 わーい、ヤッタ(-^ー^-)
先輩 えーっと、まず、パケットフィルタリングでは静的にアクセス制御を設定するので、必要と思われるポートを事前に全て空けておかないといけない、というところまではイイよね?
後輩 はい、さっきの話ではそうでした。
先輩 これをどうにかしたいよね、と。
後輩 はい。
そこで、「ステートフルインスペクション」っていうやつが登場するんですよね?
先輩 そう。でもその前に、TCP/IPについて多少の知識が必要だね。
まず、TCPの「3-WAYハンドシェイク」は分かる?
後輩 TCP/IPの基本は習ったので、だいたい分かります。
こんなやつですよね(..)

Filter図3

先輩 そうだね( ゜゜)
終わりの部分は通信の内容や状況によって違うけど、どんなTCPの通信でも始まりの部分は必ずこうなるはずだ。
後輩 はい、お互いにこのルールを守っているから、通信が成り立つんだと思います。
先輩 そう。ところで、これはTCPの通信だから送信元と送信先のポート番号があるはずだよね?
後輩 送信先のポート番号は、送信先となるサーバの待ち受けポート番号ですね。
例えば、HTTPだったら80/tcpとか。
先輩 じゃ、送信元ポート番号は?
後輩 えっと、送信元ポート番号は通信を開始するときに1024番以上の未使用ポート番号を任意に使うので、通信が始まるまで分からないと思いますけど。。。 (;´Д`)
先輩 そう。でも送信元が通信を開始した時点では決まっているはずなので、最初のSYNパケットの中身を見れば送信元ポート番号が分かるよね?
後輩 まぁ、理論上はそうですね。
先輩 つまり最初のパケットを見れば、送信元のIPアドレスとポート番号、送信先のIPアドレスとポート番号が分かるわけだ。
後輩 はい。
先輩 ということは、下図のような処理フローになっていれば、最低限必要なポートだけを空けるようなフィルタリング処理が可能になるわけだ。(..)

Filter図4

後輩 えっ?(゚〇゚;)
最初のパケットが来てから、そのパケットの情報を見てフィルタをその都度作るっていう事ですか?
先輩 そうだよ。
これなら、不要なポートを空けておかなくて済むだろう?
後輩 理論的にはそうですけど。。。
こんなの、現実的に出来るわけないじゃないですか~¬(  ̄ー ̄)┌
先輩これを自動的に処理する機能が、ステートフルインスペクションには実装されているんだよ。
後輩 (!_!)
先輩 この機能により、ファイアウォールには単に「ホストAからホストBへのHTTPを許可」と書いておくだけで、開始された通信に関連するパケットだけを許可するようなフィルタが自動的に完成するというワケ。
後輩 は~~~(・〇・)
先輩 どうだ、まいったか?( ̄^ ̄)
後輩 ま、まいりました~ヽ(  ̄д ̄;)ノ
先輩 これだけでも結構イイ感じなんだけど、ステートフル(状態を)インスペクション(検査する)というぐらいなので、他にも検出機能があるんだよ。
後輩 えっ、どんなのですか (・・?
先輩 あと、いろんな情報をチェックするだけあって、使うときの注意事項もあるんだけど。。。
後輩 えっ、どんなのですか (・・?
先輩 。。。
後輩 ど、どうしました?
先輩 。。。
その前に、トイレ行ってもいい?(*μ_μ)
後輩 な、なんだ。はは、、、。
じゃ、わたしも行って来ます(*μ_μ)

以下、「ステートフルインスペクション-その2」につづく。。。

ネットワークセキュリティ関係者の部屋 > ネットワークセキュリティ実践劇場 > ステートフルインスペクション-その1