TCP 自從 1974 年被髮明出來之後,歷經 30 多年發展,目前成為最重要的網際互聯網基礎協議,但 TCP 協議中也存在一些缺陷。
SYN 攻擊就是利用 TCP 協議的缺陷,來導致系統服務停止正常的響應。
SYN 攻擊原理
TCP 在傳遞資料前需要經過三次握手,SYN 攻擊的原理就是向站羣服務器傳送 SYN 資料包,並偽造源 IP 地址。
站羣服務器在收到 SYN 資料包時,會將連線加入 backlog 佇列,並向源 IP 傳送 SYN-ACK 資料包,並等待 ACK 資料包,以完成三次握手建立連線。
由於源 IP 地址是偽造的不存在 WordPress 主機 IP,所以站羣服務器無法收到 ACK 資料包,並會不斷重發,同時 backlog 佇列被不斷被攻擊的 SYN 連線佔滿,導致無法處理正常的連線。
SYN 攻擊處理
針對 SYN 攻擊的幾個環節,提出相應的處理方法:
方式 1:減少 SYN-ACK 資料包的重發次數(預設是 5 次):
sysctl -w net.ipv4.tcp_synack_retries=3
sysctl -w net.ipv4.tcp_syn_retries=3
方式 2:使用 SYN Cookie 技術:
sysctl -w net.ipv4.tcp_syncookies=1
方式 3:增加 backlog 佇列(預設是 1024):
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
方式 4:限制 SYN 併發數:
iptables -A INPUT -p tcp –syn -m limit –limit 1/s -j ACCEPT –limit 1/s