伺服器配置防止 SYN 攻擊,封鎖 SYN Recv 連線

5,324 0

今天早上一起床,就上伺服器看了一下,猛然發現 CPU 飆升至 99%。排查了一會兒,發現是遭到 CC 攻擊了。網路連線中出現大量 SYN 連線,佔用了所有資源,導致前端無法開啟網站。經過許久,我終於找到了解決方案:封鎖 SYN 連線。這樣可以隔絕大部分攻擊。下面分享一下我的思路。

解決方案

SYN 攻擊是利用 TCP/IP 協定 3 次握手的原理,傳送大量建立連線的網路封包,但不實際建立連線,最終導致被攻擊伺服器的網路佇列被佔滿,無法被正常使用者存取。

在 SSH 中使用命令 sysctl -a | grep syn 可以看到以下內容:

Plain Text
net.ipv4.tcp_max_syn_backlog = 1024net.ipv4.tcp_syncookies = 0net.ipv4.tcp_synack_retries = 5net.ipv4.tcp_syn_retries = 5
  • tcp_max_syn_backlog 是 SYN 佇列的長度。
  • tcp_syncookies 是一個開關,用於是否開啟 SYN Cookie 功能。該功能可以防止部分 SYN 攻擊。
  • tcp_synack_retriestcp_syn_retries 定義了 SYN 的重試次數。

加大 SYN 佇列長度可以容納更多等待連線的網路連線數;開啟 SYN Cookie 功能可以阻止部分 SYN 攻擊;降低重試次數也有一定效果。

推薦值:

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 攻擊了。

SYN 攻擊

評論

(0)

暫無評論,來說兩句吧

發佈評論