昨日に引き続きNetScreenとTCPの話。
netscreenにはシーケンスチェックの機能がある。
いやTCPには全て存在するので、
正確には「TCPシーケンス番号予測攻撃に対して自動防御機能がある」である。
それが「TCP Out of Sequence」だそうです。
よー分からんので少し解説。
以下、wikipediaより抜粋
受信者は送信者の送信データ長+シーケンス番号=ACK番号で返す。
仮に送信者のデータ長1000でシーケンス番号990000だった場合、
データ:1000 + シーケンス番号:990000 = 991000となり
受信者の返信Ack番号は「991000」を返す。
受信者のAck番号を受けた送信者は次のシーケンス番号を「991000」で送信する
この時のデータ長が再度1000だった場合は1000+991000=99200となり
受信者は返信Ack番号99200を返す。
――っとこれがTCPのシーケンス番号とACK番号の流れになる。
これって予測出来るんじゃね?
とゆーのが「シーケンス番号を予測」
別の端末が偽TCP Ackを返答出来る(かも)とゆーことらしい。
当然TCPの通信に割り込める ≒ 通信に介入出来る -> 乗っ取れるかもしれね
とゆー話になる。
NetScreenはその防止機能として送信者シーケンス番号と返信者Ack番号を監視し、
一致しないTCPパケットは防御(破棄)されてしまう。
T破棄されたTCPは、シーケンス番号のパケットを求めて再送信要求が
何度も行われる事になり
結果、当然のように速度が低下する。
不安定なWAN回線を利用している場合、通信速度に著しい増減がある場合、
あるいは行きと帰りのルートが異なる場合に発生することがあるらしいので
その場合は注意が必要となる。
set flow no-tcp-seq-check unset flow no-tcp-seq-check