TCP SYN flood 攻撃対策
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
とすれば良いみたい。