シンフラッド・アタックの原理

5月 02, 202515 mins read

SYNフラッド攻撃の原理と種類、サーバーへの被害について深く理解し、SYNクッキー、トラフィック制限、負荷分散など、さまざまな防御策をマスターすることで、企業がDDoS攻撃に効果的に抵抗し、ネットワークセキュリティを確保するための強固な防御システムを構築できるようにします。

下図のように、クライアントがサーバにSYNパケットを送信した後、サーバからのSYN+ACKメッセージに応答しなくなると、ハーフコネクションキューのコネクションをフルコネクションキューに転送できなくなり、ハーフコネクションキューがオーバーフローして、その後の正常なコネクションが入らなくなる。これがシンフラッド攻撃と呼ばれるものであるが、DDOS攻撃のより一般的な手段でもある​

fffsd02170310

 SYN Cookieの仕組み
リソースを割り当てずにSYNハンドシェイクを完了するとき、SYN Cookieの中核となる考え方がある。SYNパケットを受信した後、サーバーは現在の状態(確立されたコネクションの数、シーケンス番号、タイムスタンプ、その他の情報)に基づいてCookie値を計算し、SYN+ACKパケットに入れてクライアントに送信します。クライアントのACKパケットを受信した後、クッキー値が取り出されて検証され、検証に成功した後にのみ接続が確立される。
​​232FDSDC233232F
 

0:syncookiesがオフであることを示す1:SYNハーフコネクションがオーバーフローしたときのみ有効であることを示す[デフォルト値]2:デフォルトでオンであることを示す。​

Synプロキシ
Synプロキシは、一般的にTCPプロキシ層で使用されます。通常のロジックは、TCPプロキシデバイスが直接バックエンドサーバーにSYNパケットを転送することです、シンプロキシ機構は、TCPプロキシは、クライアントがACKメッセージを受信するまで、3つのハンドシェイクのためのクライアントの最初になります、それは、接続を確立するためにサーバーと、クライアントのSYNメッセージをシミュレートします。

SYNPROXY機能は、netfilterフレームワークとコネクション・トラッキング・モジュールに基づいて実装されたLinux 3.13カーネルでもデフォルトでサポートされています。

ラボテストのヒント

​​iptables -t raw -A PREROUTING -i ens33 -p tcp --dport 8080 --syn -j NOTRACK
3iptables -A INPUT -i ens33 -p tcp --dport 8080 -m state --state UNTRACKED,INVALID -j SYNPROXY --sack-perm --timestamp --mss 1480 --wscale 7 --ecn
4echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose

クライアントはパケットを送信する:

# --flood 赤字の契約解除
4# IPアドレスは、私のテスト可能な環境のIPです。
5hping3 -S -p 8080 --flood 192.168.162.134

テストの観察

上で追加したiptablesルールの有無にかかわらず、SYN_RECVの数とSYNパケットがドロップされるかどうかを観察する。
​​

# SYN_RECVの数
2netstat -anpt |grep SYN_RECV | wc -l
3
4# SYNパケットがドロップされるかどうかを観察する。
5netstat -s |grep -i 'syns to listen sockets dropped'

SYN Flood 攻撃に対する対策

ネットワーク入口に高防御機器を配置する
DDoS 攻撃トラフィックをフィルタリングし、正常なリクエストのみを通過させる高防御機器(DDoS 流量清掃装置)をネットワークの入口に配置します。

SYN+ACK の再送回数を減らす
デフォルトでは 2 回の再送が行われますが、大規模な攻撃時には効果が薄くなるため、再送回数を 1 回に設定します。以下のコマンドを使用します:
bash
コピーする編集する
sysctl -w net.ipv4.tcp_synack_retries=1
SYN Cookies を有効にする
SYN Flood 攻撃に対する耐性を高めるために、SYN Cookies を有効にします。以下のコマンドを使用します:
bash
コピーする編集する
sysctl -w net.ipv4.tcp_syncookies=1
TCP プロキシ環境(LVS プロキシ環境)で SYNPROXY を有効にする
LVS(Linux Virtual Server)などの TCP プロキシ環境では、SYNPROXY を有効にして、SYN Flood 攻撃を効果的に防御します。

 

Image NewsLetter
Icon primary
Newsletter

私たちのニュースレターを購読する

ボタンをクリックすることで、私たちの利用規約に同意したことになります