1. 预先准备:高防架构与联络清单
- 预置步骤:在正常期与3香港高防(或IDC)签署清洗/转发SLA,获取应急联系人、API密钥与BGP/Anycast配置说明。
- DNS与TTL:将域名TTL设为60秒或更低,便于慌忙切换到清洗线路。
- 备份策略:准备备用源站IP、二级域名和证书(TLS)以确保切换后业务可用。
2. 实时监控与告警规则配置
- 监控项:必须监控带宽(in/out)、连接数、SYN/UDP包速率、HTTP请求率和错误率。
- 告警阈值:例:带宽>70%带宽峰值或5秒内连接数增长10倍触发;SYN包速率>10000pps触发。
- 工具与接入:部署Prometheus+Grafana或Zabbix,配置短信/电话/钉钉告警并加速通道联动。
3. 立刻响应流程(发现暴涨后0-1分钟)
- 步骤1:立即切换低TTL并通知3HK启动清洗/流量重定向;通过API或电话确认策略。
- 步骤2:在边界路由或负载均衡器上启用“只允许白名单端口/地址”的临时规则,阻止非必要端口流量。
- 步骤3:开启tcp_syncookies:sysctl -w net.ipv4.tcp_syncookies=1,降低SYN队列耗尽风险。
4. 内核与TCP栈快速调优(命令级操作)
- 立即执行(示例命令,需root权限):
sysctl -w net.core.somaxconn=4096
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
sysctl -w net.netfilter.nf_conntrack_max=262144
sysctl -w net.ipv4.ip_local_port_range="1024 65535"
- 长期写入:将上述配置追加到 /etc/sysctl.conf 并 sysctl -p。
- 注意:根据内存与CPU调整 conntrack_max 与 somaxconn,避免OOM。
5. 边界防护:iptables与nginx限流实操
- iptables快速限连接(示例):
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 80 --connlimit-mask 32 -j DROP
iptables -A INPUT -p tcp --dport 80 -m limit --limit 2000/sec --limit-burst 500 -j ACCEPT
- nginx限速(示例配置):在 http{} 中添加:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
在 server{}:limit_req zone=one burst=20 nodelay; limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn addr 20;
- WAF/规则:启用mod_security或云WAF,立即将可疑IP加入黑名单并启用JS/Challenge校验。
6. CDN/负载均衡与清洗中心协同步骤
- 切换到CDN:将流量先导向CDN/高防Anycast,确保静态资源走缓存减少源站压力。修改A/CS记录指向CDN提供的IP。
- BGP与清洗:请求3HK启动BGP转发到清洗机房(提供要切换的IP),并在确认清洗通过后逐步放量。
- 负载均衡器:在负载均衡上启用健康检查与权重降级,避免已被耗尽的后端继续接流。
7. 事后恢复与根因分析
- 缓慢恢复:把TTL恢复为常规值后,逐步从清洗线路撤回,监控关键指标30分钟无异常再完全回切。
- 日志保存:导出网络包(tcpdump)、nginx访问日志和系统指标,保存至少7天用于取证与调整策略。
- 根因分析:统计攻击类型(SYN/UDP/HTTP层)、攻击IP/ASN分布,调整IP黑名单、WAF规则和长期容量规划。
8. 问:短时暴涨发现后我应该先做什么?
回答:第一时间启动已建立的应急联络(3香港高防或IDC),将DNS TTL降到最低并请求BGP/清洗转发;同时在本地启用tcp_syncookies、增加somaxconn与tcp_max_syn_backlog并用iptables临时限制高连接/速率IP,最后把业务尽量引至CDN/高防线路。
9. 问:怎样用nginx和iptables快速缓解HTTP层攻击?
回答:在nginx层配置 limit_req_zone 和 limit_conn_zone 控制每IP请求速率与并发连接,设置合理的burst值;在内核层用iptables做连接数限制(connlimit)和速率限制(-m limit 或 hashlimit),配合WAF为可疑请求做JS/验证码挑战。
10. 问:如何避免高防误伤与控制成本?
回答:先在非高峰做压测和演练调整阈值,使用分层防护(CDN缓存→边界限流→WAF→清洗中心),把高防清洗作为最后手段并按需启用;通过白名单策略与分级告警减少误伤,同时定期评估攻击日志优化规则以降低误杀与清洗成本。
来源:3香港高防服务器在短时暴涨流量场景下的应对方案