F5 GLOSSARY

SYNフラッド

SYNフラッドとは、TCPの特性を利用したDoS/DDoS攻撃の一種です。TCPがセッションを確立する時に行う3-wayハンドシェイクを悪用し、サーバのリソースを枯渇させることで、攻撃対象をサービス停止に追い込みます。

TCPにおけるセッション開始は、以下の手順で行われます。

  1. まずクライアント側が「SYN」パケットを送信します。
  2. SYNパケットを受け取ったサーバ側が「SYN/ACK」パケットをクライアント側に返します。この時サーバは、セッション情報を保持するための接続テーブル上に、接続に必要なリソースを確保し、「ハーフオープン」の状態になります。
  3. SYN/ACKパケットを受け取ったクライアント側は「ACK」パケットをサーバ側に返します。
  4. ACKパケットをサーバ側が受け取った時点でセッションが確立されます。

SYNフラッド攻撃は、最初にSYNパケットを送信する際に、送信元IPアドレスを詐称した状態でパケットを送り出します。これを受け取ったサーバは詐称されたIPアドレスに対してSYN/ACKパケットを返しますが、当然ながらこれに対するACKパケットは返ってきません。サーバはセッションがハーフオープンの状態で、タイムアウトするまで接続用リソースを維持し続けます。このようなSYNパケットを大量に送りつけることで、サーバは接続用リソースを大量に維持する必要が生じ、接続テーブルまたは利用可能メモリが飽和した段階で、正規のTCP接続を受け付けられない状態に陥ります。

F5が提供する「F5 BIG-IP」はフルプロキシとして動作し、SYNパケットをサーバに送る前にチェックすることで、SYNフラッドを防止します。またBIG-IP自らが多量のSYNパケットを受信した場合の保護のために、SYN Cookieという機能も装備しています。これは、MD5で算出した番号(これをCookieと呼びます)をSYN/ACKパケットのTCPシーケンス番号に設定し、これに対するACKパケットの内容から再度Cookieを算出するという手法です。これによってSYN/ACKパケット送出時点で接続情報を記憶する必要がなくなるため、SYNフラッドを受けた場合でも、メモリリソースの逼迫を回避できます。


< Return to the glossary