• 締切済み

ステートフルインスペクション

最近、ウィルススキャンなどに搭載されているファイアウォールはステートフルインスペクションという技術を用いて動的にポートの開閉を行っているようですが、実際にプログラムレベルでどのようにして実現しているのでしょうか? 常時LISTENしているわけでもないのに...。 すごく疑問です。 知っている方がいらっしゃれば教えてください。 プロキシ開発のセキュリティ回りで応用できるかもしれないので。

みんなの回答

回答No.1

簡単に言うとIPアドレスやポート番号毎でルールを決める静的ファーウォールとは違い 通信状態を制御するセッション情報を見て受けるか捨てるかして動的ファイヤーウォールの事です。 つまり、必要な時に必要な通信だけを透過し不必要となれば閉じると言う事です。 プログラムレベルでは、パケット毎に通信記録を取ります。 パケット情報には(送信元IPとポート番号、送信先IPとポート番号のほかに通信状態とシーケンス番号のやり取りがあります) 通常、静的ファイヤーウォールだとIPやポート番号、それと通信状態で縛りますが IPなど偽造されると透過されます。 しかしシーケンス番号はランダムに発行されますので、直接通信する者同士しか分かりません。 それらの情報を台帳管理する事により来たパケットが 必要なのか不必要なのかわかります。 また、突然 通信相手が偽造工作をしてきたとしても こちら側で管理している台帳には載っていないので拒否されますので安全なのです。 (とは言え台帳に載っている情報にマッチする工作の場合透過されますが まず むずかしでしょう)

noname#11716
質問者

お礼

なるほど。シーケンスの整合性ですか。 思いつきませんでした。 また、プロキシのセキュリティレベルを向上させるに充分効果がありそうですね。 実装のサンプルはあまり見かけませんが、回答頂いた仕掛けならなんとか実装できそうです。 回答が遅れましたが大変助かりました。 感謝します。