(1)确定站群规模:统计独立域名、VPS数量与公网IP,例如:50台VPS、90个域名、70个公网IP。
(2)资源清单:记录操作系统(Ubuntu 20.04)、内核版本(5.4.0-XX)、CPU/RAM(4核/8GB)与带宽上限(1Gbps)。
(3)风险分类:列出高风险服务(开放22、80、443、53端口)、弱口令、未打补丁的CMS插件、过期证书等。
(4)攻击面评估:统计暴露的接口、API、爬虫入口与登录页,分析可被滥用的点。
(5)优先级排序:按影响范围与恢复成本排序,优先保证DNS、反向代理(Nginx)与数据库的可用性和隔离。
(1)开启SYNCookies:net.ipv4.tcp_syncookies=1,可缓解SYN洪泛攻击。
(2)调整连接跟踪:net.netfilter.nf_conntrack_max=262144,配合/proc/sys/net/netfilter/nf_conntrack_count监控。
(3)优化半连接与队列:net.ipv4.tcp_max_syn_backlog=4096,net.core.somaxconn=1024,避免连接队列被撑满。
(4)限制ICMP与广播:net.ipv4.icmp_ratelimit=1000,避免ICMP放大滥用。
(5)示例命令:echo 262144 > /proc/sys/net/netfilter/nf_conntrack_max;并在/etc/sysctl.conf写入持久化配置。
(1)分层策略:默认拒绝入站,允许必要端口(22限管理IP、80/443给反向代理)。
(2)速率限制:iptables recent 或 nftables limit 实现 100 conn/分钟 的登录保护,针对 SSH 做白名单。
(3)自动封禁:部署fail2ban,配置 sshd、nginx-login、wp-login 等 jail,默认 maxretry=5、bantime=86400。
(4)连接控制:使用connlimit模块限制单IP并发连接,例如 --connlimit-above 50 且 drop。
(5)日志与规则示例:iptables -A INPUT -p tcp --dport 22 -s 管理网段 -j ACCEPT;其余通过 DROP 及限速策略处理。
(1)Nginx限流:limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;limit_req zone=one burst=20 nodelay。
(2)连接与请求控制:limit_conn_zone $binary_remote_addr zone=addr:10m;limit_conn addr 20。
(3)CDN与WAF:接入全球/台灣节点的CDN(注意回源IP白名单),启用WAF规则屏蔽常见SQLi、XSS、恶意UA。
(4)证书与HSTS:强制HTTPS,使用Let’s Encrypt或付费证书,配置 HSTS max-age=31536000。
(5)缓存策略:静态资源走CDN缓存,动态接口设置短TTL并加缓存键,减轻源站负载。
(1)上下游支持:与台湾或国际带宽商签订DDoS清洗 SLA,明确触发阈值(例如 1Gbps 或 100k pps)。
(2)BGP黑洞与FlowSpec:在遭受大流量攻击时使用BGP黑洞或flowspec将攻击流量引向清洗中心。
(3)本地防护:结合硬件ACL、tc(队列控制)及eBPF进行速率限制与包过滤。
(4)监测触发:启用FastNetMon或ntop监控,设置阈值(例如:入接口流量 > 800Mbps 或 pps > 100k 触发告警)。
(5)清洗流程:检测→路由切换到清洗→流量净化→白名单回切,记录时间线并优化阈值与过滤规则。
(1)指标采集:部署Prometheus+Alertmanager,采集带宽、pps、连接数、CPU/内存、nf_conntrack_count 等。
(2)告警阈值:bandwidth_in > 700Mbps 持续 > 10s 触发 P1,pps > 80k 触发高优先级。
(3)自动化策略:使用脚本或Ansible自动下发iptables/nftables规则并通过API通知上游清洗。
(4)演练与回放:每季度进行一次故障演练(包含清洗链路切换),记录RTO与RPO。
(5)日志聚合:集中 ELK/EFK 平台存储访问日志,结合WAF日志分析攻击特征并更新规则。
(1)案例背景:2025-01-10,一台湾站群遭UDP放大攻击,峰值流量达800Mbps,pps约120k,影响多个站点可用性。
(2)初始响应:FastNetMon检测到pps>100k并触发Webhook,70s内通过AS级BGP将流量引至清洗中心。
(3)清洗效果:净化后回流到源站的攻击流量降至<20Mbps,源站CPU平均负载由 6.2 降至 0.8。
(4)源站配置示例:VPS 配置为 4 vCPU、8GB RAM、Ubuntu 20.04, nginx 1.18, fail2ban + nftables + sysctl 如上调整。
(5)结果与改进:可用性恢复率提升95%,并将触发阈值从原来的500Mbps下调为300Mbps以提前响应。
| 指标 | 攻击峰值(前) | 清洗后(后) |
|---|---|---|
| 带宽(Mbps) | 800 | 18 |
| 包速率(pps) | 120,000 | 4,500 |
| 源站CPU负载(avg) | 6.2 | 0.8 |
| 恢复时间(秒) | -- | 70 |