SYN flood と負荷増大の見分け方

  • URLをコピーしました!

Linux サーバで、

  • SYN-RECV が大量に溜まっている
  • 新規接続が遅い
  • サーバ負荷が上がっている

この状態を見ると、

「SYN flood 攻撃では?」

と疑いがちです。

しかし実際には、

正当な高負荷と SYN flood はまったく別物

であり、見誤ると

  • 無駄な遮断
  • サービス停止

につながります。

本記事では、

  • SYN flood の特徴
  • 通常負荷との違い
  • 実務的な見分け方

を段階的に整理します。

目次

SYN flood とは何か

SYN flood は、

  • SYN を大量送信
  • ACK を返さない

ことで

サーバの半接続キューを枯渇させる攻撃

です。

結果として、

  • SYN-RECV が減らない
  • 新規接続が受け付けられない

状態になります。

見分けの最重要ポイント

結論から言うと、

「ACK が返っているかどうか」

が最大の判断軸です。

判断指標①:SYN-RECV の挙動

確認コマンド

ss -ant | grep SYN-RECV | wc -l

正常負荷の場合

  • 増えるが時間とともに減る
  • ピーク後に落ち着く

SYN flood の場合

  • 常時大量
  • 減らない

判断指標②:再送(retransmission)の有無

確認コマンド

netstat -s | grep -i retrans

読み取り

  • 正常負荷:再送はほぼ増えない
  • SYN flood:再送が増え続ける

SYN-ACK が返らず再送されていることを示します。

判断指標③:接続元IPの分布

確認コマンド

ss -ant | grep SYN-RECV | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head

判断

  • 特定IPに偏る → 攻撃疑い
  • 広範囲に分散 → 正常負荷の可能性

判断指標④:CPU / softirq の状態

確認コマンド

mpstat -P ALL

読み取り

  • SYN flood:softirq が異常に高い
  • 正常負荷:CPU 使用率が徐々に上昇

判断指標⑤:アプリケーションログ

以下を確認します。

  • accept エラー
  • connection timeout

ログが出ない=攻撃とは限らない点に注意します。

対処を分ける判断表

指標正常負荷SYN flood
SYN-RECV一時的常時大量
再送少ない多い
送信元IP分散偏り・ランダム
softirq通常異常高

やってはいけない誤対応

  • 即座に tcp_max_syn_backlog を増やす
  • 根拠なく IP を遮断
  • アプリ側を疑わない

正しい初動対応

  • 指標を確認して分類
  • 攻撃疑いなら FW / LB 側で制御
  • 正常負荷ならアプリ / キャパシティ見直し

「解決した」と判断する基準

  • SYN-RECV が自然に減る
  • 新規接続が正常化
  • 再送が増え続けない

まとめ

  • SYN flood は挙動で見分ける
  • SYN-RECV の「減らなさ」が重要
  • 誤対応が一番のリスク

SYN flood かどうか迷ったら、

「ACK が返っているか」を軸に判断

これが最短で安全な見分け方です。

目次