TCP SYN flood 攻撃対策についてメモ。

SYN flood攻撃とは、TCP接続:3ウェイ・ハンドシェイクの仕組みを悪用し、サーバーのメモリ領域を飽和させダウンさせる仕組みらしい。

3ウェイ・ハンドシェイクの以下の部分。

・サーバーは、クライアントから SYN パケットを受け取った際、クライアントの情報を記憶するメモリを確保する。
・サーバーは、クライアントに ACK パケットを返した後、数十秒間クライアントの ACK 応答を待つ必要がある。

ここを悪用しているみたい。つまるところ。

クライアントが、サーバーからの ACK パケット を無視し、かつ短時間に大量に SYN パケット送信を行うと、
サーバーは、クライアントの情報をメモリに確保し続け、最終的に使用できるメモリがなくなる。

その結果、正常に繋ごうとする人が繋げなくなり、ダウンしたように見える。(システムによってはクラッシュまで)

対策として、SYN cookies といった手法がある。

簡単に把握した感じでは、クライアントからの SYN パケット時にメモリを確保せずにシーケンス番号を送り、
クライアントから帰ってきた ACK パケットを元にシーケンス番号の照合を行い、メモリを確保する。

ただしこの対策は、通常時に行われると弊害が多いので、SYN flood 状態時のみ行われる。

なるほどー。

設定的には、

# sysctl -w net.ipv4.tcp_syncookies=1
net.ipv4.tcp_syncookies = 1

とすれば良いみたい。

関連エントリー:

Outbound Port25 Blocking

MTA (sendmail, qmail, Postfix)

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> <pre lang="" line="" escaped="" highlight="">