Computer >> Hướng Dẫn Máy Tính >  >> Kết Nối Mạng >> An Ninh Mạng

SYN Flooding trong an ninh mạng: Nguyên lý, tấn công, phòng thủ

SYN Flood là gì?

SYN Flood (còn gọi TCP SYN Flood, Half-Open Attack) là kiểu tấn công Denial-of-Service (DoS/DDoS) khai thác quy trình thiết lập kết nối TCP 3-way handshake. Kẻ tấn công gửi lượng lớn gói SYN giả mạo (spoofed source IP) đến server, khiến server cấp phát tài nguyên cho nửa kết nối (half-open) cho đến khi cạn kiệt (backlog queue đầy), không thể phục vụ kết nối hợp pháp.

Cơ chế TCP 3-Way Handshake & Lỗ hổng

  1. Client → Server: SYN (seq=x) – Yêu cầu kết nối.
  2. Server → Client: SYN-ACK (seq=y, ack=x+1) – Đồng ý, cấp phát TCB (Transmission Control Block) trong backlog queue.
  3. Client → Server: ACK (seq=x+1, ack=y+1) – Xác nhận, kết nối ESTABLISHED.

Lỗ hổng: Server cấp phát TCB (bộ nhớ kernel) ở bước 2, trước khi xác thực client. Nếu client không gửi ACK (hoặc IP giả không nhận được SYN-ACK), entry ở trạng thái SYN_RECEIVED trong backlog queue. Backlog có kích thước hữu hạn (mặc định thường 128-1024 entry). Lấn át backlog = từ chối dịch vụ.

Các biến thể tấn công

  • Direct SYN Flood: Kẻ tấn công dùng IP thật (dễ trace).
  • Spoofed SYN Flood: IP nguồn giả ngẫu nhiên (khó trace, backscatter).
  • DDoS SYN Flood: Botnet (Mirai, Meris, Mantis) phối hợp từ hàng trăm nghìn bot.
  • SYN-ACK Flood (Reflection): Kẻ tấn công gửi SYN đến reflector (server mở) với source IP = victim IP. Reflector reply SYN-ACK ngập victim. (Ít phổ biến hơn UDP reflection).
  • TCP Fragmentation / Overlap attacks: Kết hợp fragment để bypass IDS/IPS.

Phòng thủ & Giảm thiểu (Mitigation) SYN Flood

1. Kiến trúc & Cấu hình Host/OS (Server-side)

  • SYN Cookies (Kernel feature): Không cấp phát TCB ở SYN-ACK. Mã hóa thông tin kết nối vào Initial Sequence Number (ISN). Chỉ cấp TCB khi nhận ACK hợp lệ. Bật mặc định trên Linux modern: net.ipv4.tcp_syncookies = 1 (sysctl).
  • Tăng Backlog Queue: net.ipv4.tcp_max_syn_backlog (Linux), TcpNumConnections (Windows registry). Nhiều RAM hơn.
  • Giảm SYN-ACK Retries: net.ipv4.tcp_synack_retries (mặc định 5 → giảm xuống 2-3) để giải phóng slot nhanh hơn.
  • TCP Fast Open (TFO) với Cookie: Cho phép data trong SYN (client đã có cookie) – giảm handshake nhưng cần deploy cẩn thận.

2. Network Perimeter / Infrastructure

  • DDoS Scrubbing Service (Cloud/ISP): Cloudflare, Akamai, AWS Shield, Google Cloud Armor, Azure DDoS Protection, Radware, Arbor. Redirect traffic khi bị tấn công.
  • Firewall / IPS / Load Balancer Rate Limiting: Giới hạn SYN/s từ một IP hoặc tổng thể (token bucket).
  • SYN Proxy / TCP Intercept (Cisco, F5, Palo Alto, FortiGate): Thiết bị trung gian hoàn thành 3-way handshake thay server, chỉ forward kết nối ESTABLISHED hợp lệ.
  • Anycast / Load Balancing: Phân tán traffic tấn công đến nhiều PoP.

3. Application / Service Level

  • Connection Limits per IP: Application server (Nginx: limit_conn_zone, limit_req_zone), HAProxy, Envoy.
  • Early Drop / Challenge: JavaScript challenge, CAPTCHA, TLS Client Certificate (mTLS) trước khi tốn tài nguyên backend.
  • Stateless Design: Giảm stateful session trên server (JWT, token-based), dễ scale horizontal.

4. Phát hiện (Detection)

  • NetFlow/sFlow/IPFIX Analysis: Spike SYN packets, high SYN/ESTABLISHED ratio, many unique src IP.
  • SIEM / NDR Correlation: Rule: count by src_ip where tcp.flags.syn==1 and tcp.flags.ack==0 > threshold in 1min.
  • Host Metrics: netstat -s (segments received: SYN, SYN_RECEIVED queue overflow), ss -s, /proc/net/netstat (TcpExt: TCPReqQFullDoCookies, TCPReqQFullDrop).
  • eBPF/BCC Tools: tcplife, tcpconnect, tcpretrans, custom tracepoint cho tcp_v4_rcv/tcp_v6_rcv.

So sánh: SYN Flood vs Các DoS/DDoS khác

Loại tấn côngGiao thứcCơ chếPhòng thủ chính
SYN FloodTCPLấn át backlog half-openSYN Cookies, SYN Proxy, Rate-limit, Scrubbing
ACK FloodTCPNgập ACK packets (stateful FW phải check state table)Stateful FW, SYN Proxy, Scrubbing
UDP FloodUDPNgập bandwidth/packet rateRate-limit, Scrubbing, Anycast
UDP Amplification (DNS/NTP/CLDAP...)UDPReflection + Amplification (spoofed src= victim)BCP38 (ingress filtering), Disable open resolvers, Rate-limit, Scrubbing
HTTP Flood (Layer 7)TCP (HTTP/HTTPS)Legitimate-looking request ngập app serverWAF, Rate-limit, JS Challenge, CAPTCHA, CDN caching, Bot Management
Slowloris / Slow ReadTCP (HTTP)Giữ kết nối mở lâu nhất có thể (partial request)Timeout settings, Reverse proxy (Nginx), Event-driven server (Node, Go, Async)

Kiểm tra hệ thống có bật SYN Cookies không (Linux)

sysctl net.ipv4.tcp_syncookies
# Output mong muốn: net.ipv4.tcp_syncookies = 1
# Bật vĩnh viễn: echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.d/99-syncookies.conf && sysctl --system

Kết luận

SYN Flood là tấn công DoS/DDoS cổ điển nhưng vẫn cực kỳ hiệu quả nếu không có phòng thủ. SYN Cookies (kernel) + Perimeter Scrubbing/Rate-limit + Application-level connection limits là chiến lược defense-in-depth bắt buộc. Giám sát liên tục (NetFlow, eBPF, SIEM) để phát hiện sớm và kích hoạt mitigation tự động (SOAR playbook).