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
- Client → Server: SYN (seq=x) – Yêu cầu kết nối.
- Server → Client: SYN-ACK (seq=y, ack=x+1) – Đồng ý, cấp phát TCB (Transmission Control Block) trong backlog queue.
- 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ông | Giao thức | Cơ chế | Phòng thủ chính |
|---|---|---|---|
| SYN Flood | TCP | Lấn át backlog half-open | SYN Cookies, SYN Proxy, Rate-limit, Scrubbing |
| ACK Flood | TCP | Ngập ACK packets (stateful FW phải check state table) | Stateful FW, SYN Proxy, Scrubbing |
| UDP Flood | UDP | Ngập bandwidth/packet rate | Rate-limit, Scrubbing, Anycast |
| UDP Amplification (DNS/NTP/CLDAP...) | UDP | Reflection + 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 server | WAF, Rate-limit, JS Challenge, CAPTCHA, CDN caching, Bot Management |
| Slowloris / Slow Read | TCP (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).