SYNフラッドとは、TCPの特性を利用したDoS/DDoS攻撃の一種です。TCPがセッションを確立する時に行う3-wayハンドシェイクを悪用し、サーバのリソースを枯渇させることで、攻撃対象をサービス停止に追い込みます。
TCPにおけるセッション開始は、以下の手順で行われます。
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フラッドを受けた場合でも、メモリリソースの逼迫を回避できます。