Linux服务器DDoS防御需四层协同:内核调优(如tcp_syncookies=2、tcp_max_syn_backlog=2048)、iptables限速与连接管控、Web层Nginx限流及fail2ban自动封禁、架构层接入高防CDN并隐藏源站IP,单点无效,组合方可应对真实攻击。

Linux 服务器 DDoS 防御不能只靠一层手段,得从内核、防火墙、应用层和架构四层同步加固。单点配置效果有限,组合使用才能应对真实攻击场景。
内核参数调优(抗 SYN Flood 和连接耗尽)
默认内核参数对 DDoS 极不友好:SYN 半开超时长、重试次数多、队列小、TIME_WAIT 回收慢。直接修改 /etc/sysctl.conf:
- 启用强效 SYN Cookie:net.ipv4.tcp_syncookies = 2(比 =1 更严格,支持更复杂伪造场景)
- 缩短握手重试:net.ipv4.tcp_syn_retries = 2 和 net.ipv4.tcp_synack_retries = 2
- 扩大半连接队列:net.ipv4.tcp_max_syn_backlog = 2048(中小业务够用,高并发可设为 4096)
- 复用 TIME_WAIT 连接:net.ipv4.tcp_tw_reuse = 1(需确保 NAT 环境可控)
- 限制 UDP 内存占用:net.ipv4.udp_mem = 65536 131072 262144(防 UDP Flood 耗尽内存)
执行 sysctl -p 生效,无需重启。
iptables 限速与连接管控(拦截高频恶意流量)
在内核之上加一道实时过滤层,重点防 IP 级洪水:
- 限制每秒新建 TCP 连接(如 Web 端口):
iptables -I INPUT -p tcp --dport 80 --syn -m limit --limit 10/s -j ACCEPT
iptables -A INPUT -p tcp --dport 80 --syn -j DROP - 限制单 IP 并发连接数(防扫描和慢速攻击):
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 --connlimit-mask 32 -j DROP - 封禁异常 ICMP/UDP 流量:
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p udp -m length --length 0:20 -j DROP(拦空包)
规则加完记得保存:iptables-save > /etc/iptables/rules.v4(Debian/Ubuntu)或 service iptables save(CentOS)。
Web 层限流与自动封禁(针对 HTTP Flood 和 CC)
内核和 iptables 拦不住合法但恶意的 HTTP 请求,需在 Nginx 或 Apache 上做精细控制:
- Nginx 中配置请求速率限制:
limit_req_zone $binary_remote_addr zone=http:10m rate=15r/s;
location / { limit_req zone=http burst=30 nodelay; } - 缩短连接超时,释放慢速连接:
client_header_timeout 15;
client_body_timeout 15;
keepalive_timeout 30; - 部署 fail2ban 监控日志:
自动识别 Nginx 404/444 高频访问、SSH 多次失败登录,触发 iptables -A INPUT -s [IP] -j DROP
架构与外部协同(防大规模攻击兜底)
单台服务器再怎么调优,也扛不住 Tbps 级流量。必须配合外部防护:
- 接入高防 CDN(如 Cloudflare、阿里云全站加速),所有流量先过清洗节点
- 隐藏源站 IP:DNS 使用 CNAME 指向 CDN,禁用 A 记录直连;后端只允许 CDN 回源 IP 访问
- 云平台开启基础防护:Azure 启用 DDoS Protection Standard,AWS 启用 Shield Advanced
- 关键服务做负载均衡+多可用区部署,避免单点打穿


















