読者です 読者をやめる 読者になる 読者になる

TCP SYN flood 攻撃対策

Linux 自宅サーバ

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  

とすれば良いみたい。