SYN攻撃を防ぐサーバー設定、SYN Recv接続を遮断
5,321 0
今朝起きてすぐサーバーを確認したところ、突然 CPU 使用率が 99% まで跳ね上がっていることに気付きました。しばらく調査した結果、CC 攻撃を受けていることが分かりました。ネットワーク接続に大量の SYN 接続が発生し、すべてのリソースを占有していたため、フロントエンドからウェブサイトを開けない状態になっていました。長い時間をかけて、ようやく解決策を見つけました。それは、SYN 接続を遮断することです。これにより、攻撃の大部分を隔離できます。以下では、私の考え方を共有します。
解決策
SYN 攻撃は TCP/IP プロトコルの 3 ウェイハンドシェイクの原理を悪用し、大量の接続確立用ネットワークパケットを送信しますが、実際には接続を確立しません。最終的に、攻撃を受けたサーバーのネットワークキューが満杯になり、正常なユーザーがアクセスできなくなります。
SSH でコマンド sysctl -a | grep syn を実行すると、次の内容を確認できます:
Plain Text Plain Text
net.ipv4.tcp_max_syn_backlog = 1024net.ipv4.tcp_syncookies = 0net.ipv4.tcp_synack_retries = 5net.ipv4.tcp_syn_retries = 5tcp_max_syn_backlogは SYN キューの長さです。tcp_syncookiesは、SYN Cookie 機能を有効にするかどうかを指定するスイッチです。この機能により、一部の SYN 攻撃を防止できます。tcp_synack_retriesとtcp_syn_retriesは、SYN の再試行回数を定義します。
SYN キューの長さを増やすと、接続待ちのネットワーク接続をより多く収容できます。SYN Cookie 機能を有効にすると、一部の SYN 攻撃を阻止できます。再試行回数を減らすことにも、一定の効果があります。
推奨値:
Plain Text Plain Text
net.ipv4.tcp_max_syn_backlog = 2048net.ipv4.tcp_syncookies = 1net.ipv4.tcp_synack_retries = 3net.ipv4.tcp_syn_retries = 3これらのパラメータを設定すると、SYN 接続による CC 攻撃を効果的に隔絶できます。

コメント
(0)まだコメントはありません