FE EXAM

SYNフラッド攻撃(接続要求の大量送信)

TCP接続要求を大量に送りつけてサーバの資源を枯渇させる攻撃。

INTERACTIVE VISUALIZATION
SYN
ACK
サーバ
フェーズ
idle
接続テーブル使用
1 / 8
正常利用者の接続
可能
シナリオ
ステップ1 / 6
STEP 1/6正常な接続の始まり(SYN送信)まず正常な通信の様子です。TCP接続(=信頼できる通信路を作る手続き)は3ウェイハンドシェイクという3往復のやり取りで始まります。最初にクライアントがサーバへ「接続したい」という合図(SYN)を送ります。
① SYN(接続要求)攻撃者サーバ接続テーブルハーフオープン空き空き空き空き空き空き空き
3ウェイハンドシェイクの流れ
① クライアント → サーバ:SYN(接続したい)
② サーバ → クライアント:SYN+ACK(いいですよ)※ここで接続テーブルに記録
③ クライアント → サーバ:ACK(了解)→ 正常なら接続成立
攻撃時は③を返さず、②の記録がハーフオープンのまま溜まり続ける
解説

📌
SYNフラッド攻撃とは

攻撃者SYNを大量送信サーバ資源枯渇

SYNフラッド攻撃とは、TCP接続要求(SYN)を大量に送りつけてサーバの資源を枯渇させる攻撃のことです。SYN(シン)はTCP通信を始めるための合図で、これだけを浴びせ続けて接続の準備で手一杯にさせます。

身近な例で考えると、レストランに偽の予約電話を大量にかけて席を全部押さえてしまう状態に似ています。実際には誰も来ないのに席は「予約済み」で埋まり、本当の客が予約できなくなります。SYNフラッドも「接続待ち」で席(接続テーブル)を埋め尽くす攻撃です。

上のツールで▶ボタンを押すと、正常な3ウェイハンドシェイク(=接続を作る3往復のやり取り)に続いて、攻撃者がSYNだけを送り接続テーブルが満杯になっていく流れを確認できます。

⚙️
攻撃の仕組み

攻撃者サーバ① SYN② SYN+ACK(記録)③ ACK を返さない

TCP接続は3ウェイハンドシェイクという3往復のやり取りで成立します。クライアントの①SYN、サーバの②SYN+ACK、クライアントの③ACK、の順です。SYNフラッドはこの仕組みの隙を突きます。

攻撃の手順は次のとおりです。
① SYNを大量送信:攻撃者が「接続したい」という合図を浴びせる
② サーバが記録:サーバはSYN+ACKを返し、接続待ちを接続テーブル(=接続待ちを覚えておく一覧)に記録する
③ ACKを返さない:攻撃者は最後の返事をわざと返さず放置する
ハーフオープンが残る:接続が「返事待ち」のまま消えず、テーブルが埋まっていく

このように、攻撃者はわざと接続を完成させないことでサーバに「席取り」をさせ続けます。テーブルが満杯になると、正常な利用者の接続が受け付けられなくなります。上のツールで赤いハーフオープン接続が増える様子を確認してください。

🛡️
対策(SYN cookies等)

記録して待つ→ テーブルが埋まる従来計算値で検証→ 記録しないSYN cookies

SYNフラッドへの対策の中心は、接続待ちの情報をできるだけ溜め込まない工夫です。テーブルが埋まらなければ、攻撃の効果はなくなります。

主な対策は次のとおりです。
SYN cookies:接続待ちをテーブルに保存せず、計算した値(クッキー)をSYN+ACKに埋め込んで送る。正しいACKが返ってきたときだけ接続を作るので、ハーフオープンを溜めずに済む
接続待ちの上限・タイムアウト調整:返事が来ない接続を早めに破棄して席を空ける
ファイアウォール・IPSでの遮断:異常なSYNの急増を検知してふるい落とす(IPS=侵入防止システム)

SYN cookiesは、予約を「メモ帳に書いて覚える」のではなく、合言葉を渡しておき、正しく言えた人だけ席を用意する方式に例えられます。これなら偽の予約電話で席が埋まることはありません。

💡
なぜ接続テーブルには限りがあるのか

サーバのメモリ(有限)接続テーブル(一定枠)メモリが多くてもテーブルの枠はOS設定で決まる→ 埋まれば終わり

SYNフラッドが効く根本の理由は「接続テーブルの枠が有限である」ことです。なぜ有限なのかを理解しておきましょう。

サーバはTCPの接続待ち(ハーフオープン)をOS(=コンピュータ全体を管理するソフトウェア)のメモリに記録します。記録には容量が必要なため、管理できる同時接続数には上限があります。これは「メモリが足りない」というより、OS設計として「接続待ちテーブルの最大サイズ」が設定値で決まっているためです。

身近な例で言うと、受付係の手帳に書けるページ数に限界があるのと同じです。ページが埋まった受付係は新しいお客さんの名前を書けなくなります。SYNフラッドはこの「手帳が埋まった状態」を人為的に作り出す攻撃です。上のツールの接続テーブルが全マス埋まる瞬間を確認してください。

🎭
IPスプーフィングとの関係

攻撃者偽の発信元IPサーバ無関係な相手追跡できない

SYNフラッド攻撃には、IPスプーフィング(IP spoofing)という手口がよく組み合わされます。IPスプーフィングとは、通信パケット(=データの小包)に偽の発信元IPアドレスを書き込んで送ることです。

なぜ組み合わされるかというと、攻撃者にとって2つの利点があるためです。
追跡を困難にできる:発信元IPが偽物なので、サーバのログから本当の攻撃者を特定しにくくなる
SYN+ACKの返事を受け取らずに済む:偽のIPアドレスへ返事が飛ぶため、攻撃者の手元にはSYN+ACKが届かない。つまり攻撃者のネットワーク帯域(=通信の太さ)を消費せずにSYNを大量送信し続けられる

この手口のアナロジーは、偽名と偽の返信先住所で大量の注文書を送りつけることです。お店(サーバ)は注文書の処理で手一杯になり、返事を偽の住所へ送り続けても誰にも届かず、注文者は追跡できません。SYNフラッドはこうした巧妙な仕掛けが組み合わさっているため、防ぐのが難しいのです。

🤝
TCPとハンドシェイク ― なぜ3往復が必要か

クライアントサーバ① SYN「接続したい」② SYN+ACK「いいよ」③ ACK「了解」→ 成立

SYNフラッドを理解するには「なぜTCPは3往復しないと接続が始まらないのか」を押さえる必要があります。

TCP(Transmission Control Protocol)とは、データを確実・正確に届けるためのルールのことです(プロトコル=通信のルール)。確実に届けるため、接続を始める前に「本当に通信できる状態かどうか」を相互に確認する手順が決められています。それが3ウェイハンドシェイク(3回の握手)です。

なぜ1往復でも2往復でもなく3往復なのかというと、両方向の通信ができることを確認するためです。
・①SYNだけでは「クライアントが送れること」しか分からない
・②SYN+ACKで「サーバが受け取れて、かつ返せること」が分かる
③ACKで「クライアントがサーバからの返答を受け取れること」まで確認できる

身近な例で言うと、電話をかけるとき「もしもし(①)→ はい(②)→ 聞こえますか?(③)→ 聞こえます(成立)」のように、双方向に確認し合って初めて会話が始まるのと同じです。SYNフラッドはこの手続きの「③を返さない」という点を悪用しています。

📊
DoS・DDoS・SYNフラッドの位置づけ比較

DoS攻撃(サービス妨害攻撃の総称)DDoS攻撃(多数の端末から分散して行うDoS)SYNフラッド攻撃(TCPのSYNを悪用。DoS/DDoS両方で使われる)

SYNフラッドはDoS攻撃の一種であり、DDoSで使われることもあります。3つの関係を整理すると次のようになります。

用語意味攻撃元使う技術
DoS攻撃サービスを止める攻撃の総称主に1台SYNフラッド・UDPフラッドなど様々
DDoS攻撃多数の端末から分散して行うDoS多数のボット同上(規模が大きい)
SYNフラッドSYNを悪用してテーブルを埋める1台でも多数でもTCPの3ウェイハンドシェイクの隙

つまりDoS・DDoSは「攻撃元の数」に注目した分類で、SYNフラッドは「どんな技術を使うか」に注目した分類です。1台の攻撃者がSYNフラッドを行えばDoS攻撃、多数のボットでSYNフラッドを行えばDDoS攻撃になります。これら3つを混同しないように整理しておきましょう。

練習問題

🎯
基本情報技術者 練習問題

Q1.SYNフラッド攻撃の説明として最も適切なものはどれか。
A.辞書の単語を順に試してパスワードを破る攻撃
B.TCPの接続要求(SYN)を大量に送り、サーバの資源を枯渇させる攻撃
C.通信を盗聴して内容を解読する攻撃
D.正規利用者になりすまして送金を指示する攻撃
Q2.SYNフラッド攻撃で「ハーフオープン接続」が溜まる理由はどれか。
A.サーバが最初のSYNを無視するから
B.攻撃者が3ウェイハンドシェイクの最後のACKを返さないから
C.正常な利用者が接続を切らないから
D.サーバがSYN+ACKを返さないから
Q3.SYNフラッド攻撃への対策として用いられるものはどれか。
A.SYN cookies(接続情報を一時保存せず計算で検証する仕組み)
B.利用者全員のパスワードを定期的に変更する
C.通信をすべて暗号化する
D.ファイルのバックアップを毎日取る

関連コンテンツ