【しんふらっどこうげき】

SYNフラッド攻撃 とは?

最終更新:
💡 未完了の接続要求で、受け付けを圧迫する

TCPの接続開始を大量に発生させ、未完了接続の状態などを圧迫するDoS攻撃。送信元偽装の条件、SYN Cookieの役割と限界、正規の混雑との違いを解説します。

📌 このページのポイント
SYNフラッド:未完了接続がたまる送信元完了するACKを返さないサーバー多数のSYNSYN-ACK未完了の状態が蓄積 → 新規接続を圧迫SYN Cookieは状態保持の負担を減らす帯域・CPUの負担までなくなるわけではない送信元偽装は使われ得るが、必須ではない
大量の未完了接続を、要求の矢印とサーバー内の状態の小箱で表しています。返らないACKは描いていません。状態保持の方法は対策と実装によって異なり、正規の混雑とも区別して調べます。
ひよこ ひよこ
SYNフラッドは、どの処理を困らせる?
ペンギン先生 ペンギン先生
TCPの接続は通常SYN、SYN-ACK、ACKのやり取りで始まるよ。SYNを大量に受けて完了しない接続の状態がたまると、正規の新しい接続を受け付けにくくなるんだ。
ひよこ ひよこ
送信元IPは必ず偽装される?
ペンギン先生 ペンギン先生
偽装が使われる場合はあるけれど、必須ではないよ。接続を完了させない大量の要求が問題になる。送信元が実在するかだけで、正規の利用と攻撃を完全に分けられるわけではないんだ。
ひよこ ひよこ
SYN Cookieなら、メモリがゼロで済む?
ペンギン先生 ペンギン先生
未完了接続ごとの状態を保持する代わりに、検証できる情報をSYN-ACKのシーケンス番号へ符号化する方法だよ。有効なACKが来たときに接続状態を作る。ただしサーバー全体のメモリや計算が不要になるわけではない。
ひよこ ひよこ
最近のOSなら、自動的に完全防御?
ペンギン先生 ペンギン先生
実装と設定を確認しよう。Linuxのtcp_syncookiesは、対応しているカーネルで接続待ちがあふれたときのフォールバックとして使う設定がある。すべてのOSで常時同じ動作、という意味ではないよ。
ひよこ ひよこ
防御のために接続待ちを大きくすればよい?
ペンギン先生 ペンギン先生
増やすだけで解決するとは限らないよ。回線の帯域やCPUも圧迫され得るし、正規のアクセス増加で混雑している場合もある。機器やOSの対策、必要に応じた上流での防御を組み合わせ、正規の接続に影響がないか確認するんだ。
もっと詳しく知りたい人へ

SYN Cookieは通信内容の暗号化?

違います。未完了接続の状態を保持せず、応答に対するACKを検証するための情報を符号化する仕組みです。TLSのようにアプリケーションの通信内容を秘密にする機能ではありません。

SYN floodの警告があれば、攻撃と断定できる?

正規の接続数が多くて接続待ちがあふれる場合もあります。Linuxの公式資料も、正規の高負荷への対処をSYN Cookieだけに任せないよう説明しています。接続率や資源の状態、運用上の変化などと合わせて原因を調べます。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SYNフラッド」って出てきたら「TCPの接続開始を大量に起こして未完了接続の状態などを圧迫する攻撃」と思えばだいたいOK!
📖 おまけ:英語の意味
「SYN flood attack」 = SYNによる洪水攻撃
💬 SYNはTCPでシーケンス番号を同期する制御フラグ、floodは大量に送りつけることです。最初の接続要求で使うSYNを、サービス妨害に悪用します。

参考資料

← 用語集にもどる