SYNフラッド攻撃
TCPの接続要求(SYN)だけを大量に送りつけ、サーバが接続の準備のために確保する資源を使い果たさせるDoS攻撃。
イマシルちゃんの解説
電話で「もしもし」とだけ言って、相手が「はい、聞こえますよ」と答えても、何も言わずに放っておく……。
これをものすごい数の電話で一斉にやられたら、本当に用事のある人からの電話がつながらなくなっちゃうよね。
SYNフラッド攻撃は、TCPの3ウェイハンドシェイクの「最初の一言」だけを大量に送って、
サーバを待ちぼうけにさせる攻撃なんだよ。
より深い解説
定義
SYNフラッド攻撃は、TCPの3ウェイハンドシェイクを悪用するDoS攻撃である。攻撃者は、SYNパケットを大量に送るが、サーバが返すSYN+ACKに対する最後のACKを送らない。
仕組み
- サーバは、SYNを受け取るたびに、コネクションの情報を保存するメモリを確保し、SYN+ACKを返す
- サーバは、最後のACKが届くまで、その接続を途中の状態(SYN-RECEIVED、ハーフオープン)のまま保持する
- 攻撃者はACKを送らず、送信元IPアドレスを偽ってSYNを送り続ける
- 途中の状態の接続が上限に達すると、正規の利用者からの接続要求を受け付けられなくなる
送信元アドレスを偽ることが多いため、送信元を特定して遮断するのが難しい。
対策
| 対策 | 内容 |
|---|---|
| SYN Cookie | SYNを受け取っても資源を確保せず、接続の情報を暗号的に計算したシーケンス番号に埋め込んでSYN+ACKを返す。正しいACKが返ってきたときに初めて資源を確保する |
| 待ち時間の短縮 | ハーフオープンの接続を保持する時間を短くする |
| 待ち行列の拡大 | 途中の状態の接続を保持できる数を増やす |
| ファイアウォール、IPS | 短時間に大量のSYNを送る送信元を検知して遮断する |
ほかのDoS攻撃との違い
| 攻撃 | 使い果たさせるもの |
|---|---|
| SYNフラッド攻撃 | TCPの接続の準備のための資源(メモリなど) |
| Slow HTTP DoS攻撃 | Webサーバの同時接続数(セッション) |
| DRDoS攻撃 | 回線の帯域 |