1. 风险评估与准备清单
在部署前列出资产与风险:记录 VPS IP、网络带宽、服务端口(如 80/443/22)、可用快照、ISP/托管商技术支持连络方式。准备:控制台登录、ssh key、备份快照、另一个临时可用 IP、联系人清单(托管商与上游运营商)。
2. 建立监控与告警基线
安装并配置流量/连接监控:使用 vnStat 或 iftop 做带宽基线;使用 netstat/ss 监测并发连接;Prometheus + Grafana 采集指标并设定阈值(例如 70% 带宽、连接数突增 300%)。同时配置短信/邮件/Slack 告警渠道。
3. 检测与确认攻击(操作步骤)
当告警触发,按步骤确认:1) 查看 iftop/vnstat 瞬时带宽;2) ss -s 与 ss -antp 检查 TCP 连接态;3) tcpdump -n -c 1000 -i eth0 'tcp' 保存样本;4) 用 tshark 分析来源 IP、目的端口、协议(UDP/ TCP/ICMP)。若源 IP 分布广,可能是放大或分布式攻击。
4. 立即应急第一步:临时限流与封锁
优先在 VPS 本机做速断:使用 iptables 或 nftables 做速率限制与黑名单。示例 iptables(TCP SYN 限制):
iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
或使用 conntrack 与 nf_conntrack_max 调低并设置超时:sysctl -w net.netfilter.nf_conntrack_max=131072,视内存调整。
5. Web 层限流与应用保护
对 Nginx 添加限流与连接限制:在 http 或 server 块加入
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 10;
limit_req_zone $binary_remote_addr zone=req:10m rate=5r/s;
limit_req zone=req burst=20 nodelay;
同时启用 keepalive_timeout 调低,增加 worker_rlimit_nofile 与 worker_connections 配合。
6. 使用 Fail2Ban 与 WAF 规则
安装 fail2ban 针对暴力登录和异常请求(自定义 jail),并把高频攻击 IP 加入 ipset 以提高匹配效率。部署 ModSecurity + CRS 或云 WAF(见第8 节)来拦截异常 HTTP 请求与 SQL 注入、爬虫泛滥。
7. 上游与云端清洗策略
若本机手段不够,立即联系托管商/ISP 请求流量清洗或 BGP 下发黑洞。步骤:1) 提供攻击流量样本(tcpdump);2) 请求临时流量清洗/转发到清洗中心;3) 若需,申请 BGP 黑洞路由(通知要黑洞的前缀)。优先选择云清洗服务(Cloudflare、Akamai、阿里云清洗)并提前配置好 DNS 切换流程。
8. 自动化与规则库维护
建立规则与自动化脚本:1) 用脚本把高频攻击 IP 导入 ipset,并定期清理;2) 用 Prometheus Alertmanager+Webhook 在阈值触发时执行脚本(如触发上游清洗请求);3) 保存每次事件的规则与效果用于事后复盘。
9. 恢复与验证步骤
减缓后按步骤恢复:1) 先在测试服务上逐步恢复连接/限流规则;2) 监控 24 小时确认没有再爆发;3) 将防护措施(如 WAF 规则、iptables)固化并写入基线配置;4) 做一次演练脚本模拟低强度攻击验证规则。
10. 长期硬化与演练
长期策略包括:定期更新规则库、与 ISP 签订 DDoS 响应 SLA、在不同区域部署备用 VPS 做流量切换、使用 Anycast 或负载均衡分散流量。按季度演练应急流程并记录时间线与恢复步骤。
11. 常用命令与配置示例汇总
快速命令参考:ss -antp|head;tcpdump -i eth0 -w attack.pcap;iptables -I INPUT -m recent --name BAD --rcheck --seconds 60 -j DROP;ipset create ddos hash:net maxelem 100000;将 ipset 与 iptables 联动以高效封锁。
12. 事件记录与法律/合规
每次 DDoS 事件要记录时间线、流量样本、被封锁 IP、上游响应以及恢复时间。必要时保存 pcap 交给托管商或警方,依据台湾相关网络安全法规进行后续调查与通报。
13. Q1: 当 VPS 被大量 UDP 放大攻击时,我先做什么?
在确认为 UDP 放大(如 DNS/SSDP)后,立即在主机层用 iptables/nftables 丢弃可识别的放大源端口(如 53/1900),并尽快联系上游要求流量清洗或 BGP 黑洞,同时将受影响服务(DNS)迁移到受保护的托管/云服务。
14. Q2: 如何避免防护规则误伤正常用户?
先在灰度环境或写入低优先级规则并监控误报率;使用速率限制代替绝对封禁;对高价值 IP 列入白名单;收集正常访问日志构建基线,定期调整阈值并进行回放测试以验证。
15. Q3: 我是否需要提前购买云清洗服务?应该如何选择?
建议预先评估并签署有 SLA 的 DDoS 清洗服务,比较节点覆盖(台湾/亚洲区)、清洗带宽、切换延时、费用模型(按流量或按峰值)。选择支持快速 DNS 切换或 Anycast 的提供商,并把联系人与切换步骤写入应急手册。
来源:应对DDoS风险为台湾vps大流量制定合理的防护与应急流程