1.
概述与目标
目标:构建在
台湾VPS上能抵抗常见DDoS与应用层攻击的高可用架构。
范围:VPS主机、域名解析、CDN、WAF、清洗/清洗中心、边缘ACL。
指标:最大可承受攻击峰值设计为200Gbps(基于上游清洗能力),主机保护后可维持1Gbps可用业务带宽。
约束:单机VPS网络口通常为1Gbps或10Gbps,需结合上游防护与Anycast/CDN分流。
输出:提供可直接复制的sysctl、iptables/nftables与CDN策略模板。
复原策略:当清洗触发,自动切回只读或降级静态页面以保证核心功能可用。
2.
架构与组件设计
边缘层:使用CDN(Anycast)进行流量缓存与初级丢弃。
清洗层:上游ISP或云厂商提供的DDoS清洗,阈值示例200Mbps/1Gbps/10Gbps。
防火墙层:云端ACL + VPS主机防火墙(nftables/iptables)双重过滤。
应用层:WAF(ModSecurity/Nginx+Lua)对HTTP请求速率与签名拦截。
监控与告警:Netdata/Prometheus + Grafana + L4/L7流量告警阈值设置。
DNS与域名:使用二级DNS与短TTL策略,攻击时可快速切流量到清洗点。
3.
内核与系统调优(示例值)
conntrack:net.netfilter.nf_conntrack_max=262144,适用于并发连接高峰。
SYN保护:net.ipv4.tcp_syncookies=1,net.ipv4.tcp_max_syn_backlog=2048。
文件句柄:fs.file-max=200000,ulimit -n 65536。
网络缓冲:net.core.somaxconn=1024,net.core.rmem_max=16777216,net.core.wmem_max=16777216。
反射限制:net.ipv4.icmp_echo_ignore_broadcasts=1,关闭无意义ICMP广播回应。
示例命令:sysctl -w net.netfilter.nf_conntrack_max=262144 等,重启服务后验证。
4.
多层防火墙规则模板
云端ACL:仅放行TCP 80/443 与必要管理端口(SSH 只允许管理IP)。
iptables示例:允许已建立与相关连接:iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT。
速率限制:iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j REJECT。
SYN限制:iptables -A INPUT -p tcp --syn -m limit --limit 25/s --limit-burst 100 -j ACCEPT。
Fail2ban:基于nginx/ssh日志自动封禁异常IP,典型策略ban 1h,最大6h等级递增。
WAF规则:阻断明显SQLi/XSS与异常UA,结合速率阈值如同IP 10s 内 >200 请求触发封禁。
5.
CDN 与流量清洗策略
起始策略:把域名指向CDN,Origin仅接受CDN回源IP访问。
缓存策略:静态资源缓存TTL 1d,HTML 缓存 5m(可按页面类型调整)。
速率控制:CDN边缘配置每IP每秒请求限制(示例 10 req/s),超过则挑战或限流。
清洗触发:当上游检测到异常流量峰值(示例 >200Mbps)自动导流到清洗中心。
回源保护:使用HTTP签名或自签Header校验,避免直接绕过CDN攻击源VPS。
6.
配置模板与数据演示(含表格)
示例VPS:Taiwan-VPS-01: 4 vCPU / 8GB RAM / 160GB SSD / 网口1Gbps,清洗阈值由ISP 200Mbps。
典型sysctl:net.ipv4.tcp_syncookies=1;nf_conntrack_max=262144;somaxconn=1024。
iptables规则片段:见上文模板,可根据服务端口复制。
性能观测:攻击前后TCP连接数、CPU、带宽变化示例见下表。
表格说明:表中“清洗后带宽”单位为Mbps,均为示例观测数据。
| 指标 |
攻击前 |
触发清洗 |
清洗后 |
| 入站带宽 |
1200 Mbps |
1200 Mbps |
40 Mbps |
| VPS CPU |
10% |
95% |
12% |
| 并发连接 |
3,200 |
1,800,000 |
5,400 |
7.
真实案例与运维建议
案例:某台湾电商遭遇L7+L3混合攻击,峰值1200Mbps并发180万连接,CDN与上游清洗介入后,回源流量稳定在约40Mbps。
处理步骤:1) 立即切换CDN为防护模式;2) 上游启用清洗并临时DNS切换;3) VPS启用iptables快速丢弃非CDN回源IP。
配置数据:对该站点最终使用的阈值为:conntrack_max 524288,tcp_max_syn_backlog 4096,fail2ban shortban 3600s。
建议:常态下进行压测演练并将监控告警门槛设为流量正常峰值的1.2倍。
备份与演练:定期演练「清洗切换」流程,并在域名注册商、DNS、CDN处保存紧急联系人与切换权限。
来源:vps台湾云空间高防御与多层防火墙结合的最佳实践与配置模板