ここでは引き続き、ファイアウォール機器が実装しているステートフルインスペクション機能について説明します。
以下、2人の会話をご覧ください。
![]() |
せんぱ~い (^ー^*) スッキリしました? |
![]() |
うん、スッキリした。(*´v`*) |
![]() |
話している途中にモジモジしていたから、何かな~って思ってたんですよ~ヾ(・ε・。) |
![]() |
まぁ、気にするな。 |
![]() |
じゃ、さっきの続きから始めましょうか。 |
![]() |
えーっと、まず、ステートフルインスペクションではフィルタのリストを動的に更新する、というところまではイイよね? |
![]() |
はい、さっきの話ではそうでした。 その機能があれば、もう十分じゃないかと思うんですが。。。 |
![]() |
確かにそうだね。 ちなみに、「性善説」っていう言葉を聞いたことある? |
![]() |
えっ、なんか突然ですね。(@_@;) 簡単に言うと、「もしみんなが善人だったら?」っていう考え方ですよね? |
![]() |
そう。逆に、「性悪説」は「もしみんなが悪人だったら?」ということになるね。 |
![]() |
はい。 でも、それがどうかしました? |
![]() |
これは考え方の問題なんだけど、ファイアウォールという機器は「性悪説」の考えに立って設置するものなんだ。 |
![]() |
う~ん。前に言ってた、「半分は気持ちの問題」ってやつですか。(・_・) みんながお行儀良くルールを守って通信してくれるとは限らない、ということですか? |
![]() |
そのとおり。確かにTCP/IPのルール通りに振舞っている人たちはフィルタで防げる可能性が高いんだけど、ルールを守らず通信の妨害を目的に考えている人たちからのパケットは防げないかもしれない。 |
![]() |
う~ん、じゃあチェックを厳しくすれば、、、。あ~、そういうことですか(・0・☆) ファイアウォールとして設置するなら、規則が守られることを前提にした制御じゃ不十分なわけですね。 |
![]() |
「チェックを厳しく」って言葉で言うのは簡単なんだけど、じゃあ何をもって正しいと判断するのか、が問題なんだ。 |
![]() |
人間がチェックする場合のように、「不審人物」「挙動不審」「怪しい奴」みたいな曖昧な表現は使えませんよね。。。(ー'`ー;) どうしたらいいんでショ? |
![]() |
さっきの「3-WAYハンドシェイク」を思い出してみそ。 |
![]() |
えっ、またコレですか?(..) |
![]() |
そう、コレ。( ゜゜) さっき、「お互いにこのルールを守っているから、通信が成り立つ」と言っていたよね? |
![]() |
はい。 相互で同じ仕組みになっていないと、会話が成立しませんから。 |
![]() |
ということは、どこかにTCP/IPについてのルールが書いてあって、みんながそれを参照していることになるね。 |
![]() |
あ~、そういえばそうですね。 もしかして、Webで公開されてるとか? |
![]() |
そう、実は公開されているんだ。 IETFっていう組織が管理しているもので、「RFC(Request for Comments)」っていうんだよ。 |
![]() |
へぇ~(*´ー`)/∩ へぇ~(*´ー`)/∩ |
![]() |
そこには大量のドキュメントがあって、みんながその内容に従ってプログラムや製品を作っているんだよ。だから、理論的には誰が作ったものでもお互いに通信が出来るはずなんだ。 |
![]() |
なるほど~(・〇・) つまり、それが「みんなの正しいルール」っていうことですね! |
![]() |
そう( ̄ー ̄) もちろん、公式な文書はRFCだけじゃなくて、他にもあるけどね。 |
![]() |
その中のTCPに関する仕様と照らし合わせて、正しい手順のパケットかどうかチェックするんですね。 |
![]() |
そうそう( ̄ー ̄)( ̄ー ̄) |
![]() |
でも、例えばどんなことをチェックするんですか? |
![]() |
いろいろチェックしているんだけど、一番分かりやすいのがフラグとシーケンス番号ね。 |
![]() |
フラグは、SYNとかACKとかいうやつですよね。 えーっと、シーケンス番号は、、、パケットの通し番号? |
![]() |
さっきの3-WAYハンドシェイクのようにフラグには役割があって、例えばSYNフラグはハンドシェイクの時しか使われないとか、使われるフラグの順番とか、チェックの材料になるものが多いんだよ。 |
![]() |
初めて来たパケットにSYNフラグが立っていなかったら拒否する、みたいな感じ? |
![]() |
そうそうそう( ̄ー ̄)( ̄ー ̄)( ̄ー ̄) |
![]() | じゃ、シーケンス番号は? |
![]() |
シーケンス番号は通し番号だから、途中で変なパケットが入って来たら通し番号と合っていないことが分かるので、「正しくない」という判断が出来るんだよ。 |
![]() |
な、なるほど~(*・o・) フラグとシーケンス番号をチェックすれば、悪意を持って変なパケットを割り込ませようとしても、検出できるんですね~! |
![]() |
そうそうそうそう( ̄ー ̄)( ̄ー ̄)( ̄ー ̄)( ̄ー ̄) 要は「みんなの正しいルール」と照らし合わせて、違っているものは正しくないと見なすんだよ。 |
![]() |
ここまでやれば、「性悪説」な人たちが来ても大丈夫ですね! |
![]() |
そうだね。 でも、便利なことばかりじゃないんだよ~ (゚Д゚ ) |
![]() |
マ、マジですか(; ̄0 ̄)ノ まさか、ここまで持ち上げといて「実は使い物になりましぇ~ん!ヽ(●´Д`●)ノ」なんて言うんじゃ。。。? |
![]() |
なんじゃそりゃ?(^-^; いや、そこまでひどい問題じゃないよ。 |
![]() |
はぁ、よかった。ε=(・o・*) |
![]() |
じゃ、続きは明日ね。 さて、そろそろ帰ろうっとヽ(´ー`)ノ |
![]() |
じゃ、わたしも帰ろうっとヽ(´ー`)ノ |
以下、「ステートフルインスペクション-その3」につづく。。。
ネットワークセキュリティ関係者の部屋 > ネットワークセキュリティ実践劇場 > ステートフルインスペクション-その2