ルータのフィルタについて

こんばんわ。
ふと疑問に。。。。

よく、IPTABLESやルータの設定で、

INPUT DROP
OUTPUT ACCEPT
FORWARD DROP
-A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

とか見かけます。
「INPUT」、「OUTPUT」、「FORWARD」これはまだ分かる。

「INPUT」、「FORWARD」の状態オプション
「RELATED」・・・関連パケット
「ESTABLISHED」・・・接続済みパケット

これだけか無いように見えるけど、外部との通信は出来る。

アウトパケットはいいけど、インパケットは「接続済みしか許可されてない」はずなのになんで?

3Wayハンドシェイクの戻りパケットはどうなるの?

TCPで考えたら、
3ウェイハンドシェイクでやり取りするとき、

ローカル・・・SYN→・・・サーバ
ローカル・・・←SYNACK・・・サーバ
ローカル・・・ACK→・・・サーバ

これをクライアント目線で見ると、「SYN」は「OUTPUT ACCEPT」で良いとして、
サーバからの戻り「SYNACK」パケットについては「ESTABLISHED」に状態遷移する前だから
「INPUT DROP」されてしまうのではないか、と思ってた。

これを可能にしているのが、
ステートフルパケットインスペクション
(Web猫さんありがとうございました!!)

出ていくパケットと戻ってきたパケットを追跡、状態を保持しておくとことで
不正な戻りパケットではないよ、と内部で処理してくれる機能。
これのおかげでサーバからの「SYNACKパケット」は、「INPUT DROP」されずに、
「FORWARD」されてクライアントに届けられることになります。

特に、こういった機能が搭載されていると明記されているものがあまり見たことが無いですが、
IPTABLESやルータには実際の機能として搭載されています。

なので、
ESTABLISHED・・・接続済み
RELATED・・・関連パケットパケット
INVALID・・・無効パケット

をフィルタとして設定すれば良いことになります。
NEW」(新規パケット)は、サーバを外部に公開するときなど
外部から内部にパケットを通すときに指定します。

[tegaki]すごく勉強になった![/tegaki]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Enter code * Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.