syn cockieって相手に必要な情報を返してしまっていると思うのですが、サーバはそれを持っていません。 それって大丈夫なの? |
|
|
まず結論から言うと、あなたの違和感は正しくて、そこは設計上かなり工夫されています。 1. 何が問題に見えるのか通常のTCP 3ウェイハンドシェイク:
普通はサーバは SYNを受けた時点で接続情報をメモリに保存します。 でもSYN flood攻撃では
→ サーバのメモリ(接続キュー)が埋まる 2. SYN Cookieの発想ここがポイントです。 「じゃあ状態を保存しなければいい」 つまり
代わりにどうするか? → 必要な情報をSYN/ACKのシーケンス番号(ISN)にエンコードする 3. 「情報を返してしまっているのでは?」への答え確かに見た目は
ように見えますが、実際はこうです:
つまり ISN = ハッシュ(クライアント情報 + サーバ秘密情報 + 時刻など) 4. なぜ安全なのかポイントは3つです: ① 改ざんできないクライアントは
→ 偽装ACKは通らない ② サーバは復元できるACKが返ってきたとき
→ 状態を保存してなくても正当性を確認できる ③ 必要最低限しか入れてない実はSYN Cookieでは
→ 完全な状態ではなく「最小限の検証情報」 5. つまり何が起きているかあなたの疑問を正確に言い直すと:
答えは 「そのまま信用しているのではなく、改ざんできない形(ハッシュ)にしているから大丈夫」 6. 本質SYN Cookieは
仕組みです。 7. 注意点(実務的)完全に万能ではなく
なので → 通常時は使わず |
|
|

この記事へのコメント