1.
背景与目标概述
- 目标:在台湾 vps107 段上为业务构建安全且可控的访问白名单与流量管理体系。
- 场景:面向网站/API/游戏服务器等对来源IP有明确允许需求的业务。
- 要点:最小化误拦,防止DDoS与扫荡,保持合法用户稳定访问。
- 指标:单节点CPU阈值不超过70%,并发连接控制在5万以内(根据VPS规格调整)。
- 输出:白名单策略、限速/并发规则、CDN 与源站联动方案、监控与事故处理流程。
2.
总体架构设计(核心组件)
- 前端:选择具DDoS防护的CDN(如 Cloudflare/阿里云 CDN)作为边界防护层。
- 中间:台湾 vps107 段作为源站或反向代理节点,部署Nginx + fail2ban + iptables。
- 后端:后端应用服务器通过内网或专线与 vps107 段节点通信。
- 管控:使用集中化防火墙规则库与自动化脚本(Ansible)下发白名单。
- 监控:Prometheus + Grafana 监控流量、连接数、QPS 与CPU/内存并设置告警阈值。
3.
白名单设计原则与分级
- 原则一:最小权限,先允许业务必需的IP段或ASN,再逐步放宽。
- 原则二:多级白名单(热身、业务、管理),分别用于普通用户、合作方、运维。
- 原则三:时效性,管理白名单需支持临时/永久条目与自动过期(TTL)。
- 原则四:来源可信度,优先允许CDN回源IP、合作方固定出口IP与内部专线。
- 原则五:兼容性,白名单支持CIDR、单IP与AS号三种形式下发。
4.
具体规则示例(iptables 与 Nginx)
- iptables 白名单示例(示例IP段:203.69.107.0/24,仅示例):iptables -I INPUT -s 203.69.107.0/24 -j ACCEPT。
- iptables 限制不良流量:iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 200 -j DROP。
- Nginx 白名单配置示例:在 server 块内使用 allow 203.69.107.0/24; deny all; 控制管理端口访问。
- Nginx 限流示例:limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn addr 50; limit_req zone=req_limit burst=20 nodelay。
- 流量整形(tc)示例:tc qdisc add dev eth0 root tbf rate 200mbit burst 32kbit latency 400ms,用于细粒度带宽控制。
5.
CDN 与 DDoS 防御联动作法
- 将大流量、静态内容尽量卸载到 CDN,减轻 vps107 节点压力。
- 在 CDN 层配置源站回源白名单,仅允许 CDN IP 段访问源站,提高安全性。
- 开启 CDN 的速率限制与JS挑战功能,过滤层级攻击与bot流量。
- 当检测到大流量异常时,自动触发 BGP/黑洞或转发到清洗中心(视ISP支持)。
- 与上游 ISP 保持沟通,预设应急联系人与流量清洗 SLA。
6.
真实案例:台湾某电商在vps107段的防护实战与数据
- 场景描述:高并发促销期,攻击峰值并发连接来自海外匿名节点。
- 部署措施:对管理面白名单仅开放合作方 IP 与运维跳板;业务流量经 CDN 清洗回源;源站启用 iptables 与 Nginx 限流。
- 服务器配置示例:VPS 型号 vps107-4C8G,4 vCPU / 8GB RAM / 200GB SSD,带宽 1Gbps,操作系统 Ubuntu 20.04。
- 阈值设置:Nginx limit_req 设为 10r/s per IP,limit_conn 设为 50 conn;iptables connlimit 设为单IP不超过200。
- 结果数据(实验室复现):下表展示在模拟攻击下三种策略的效果。
| 策略 |
峰值请求/s |
CPU 峰值 |
连接数 |
成功率 |
| 无防护 |
50,000 |
98% |
120,000 |
12% |
| CDN 层清洗 + 白名单 |
20,000 |
45% |
30,000 |
85% |
| CDN + 白名单 + 源站限流 |
12,000 |
32% |
12,000 |
96% |
7.
部署清单与运维建议
- 白名单管理:使用脚本(Ansible/CI)统一下发,支持回滚与TTL自动过期。
- 监控与告警:关键指标(QPS/连接/丢包/延时)设置多级告警阈值并与值班手机/群组联动。
- 演练:定期做流量打点与DDoS演练,验证CDN与源站联动效果。
- 日志与溯源:开启Nginx访问日志与网络流量采样,保留至少7天完整日志以便溯源。
- 应急流程:明确切换到清洗/黑洞/备用节点的步骤与联络人,预演30分钟完成切换的目标。