1.1 目标:把攻击流量在边缘或清洗中心消耗掉,保证源站可用性。
1.2 架构要点:Anycast/多点BGP接入 → 黑洞/Flowspec策略 → 清洗集群(深度包检测+行为分析)→ 回传干净流量。
1.3 实施前准备:确认公网IP、BGP会话是否可用、是否支持流量劫持(GRE/VXLAN)与BGP Flowspec/RTBH。
2.1 选择供应商:确认是否支持CN2线路、提供清洗能力(带宽、并发连接清洗)、支持BGP控制(Communities/Flowspec/RTBH)。
2.2 网络拓扑确认:记录你的被保护IP、可公告的前缀、是否有备用回源线路。
2.3 验证清洗路径:要求供应商说明发生攻击时流量如何被导向清洗中心(BGP重路由、GRE隧道或L2转发)。
3.1 RTBH(Remote Triggered Black Hole)配置思路:在上游路由器以特定下一跳(通常为黑洞地址)宣布攻击目标前缀。
3.2 Flowspec 用例:对复杂攻击(按端口/协议/源IP集合)下发精细规则。示例:使用 ExaBGP 下发flowspec规则:
- exabgp 配置片段:neighbor X { capability { route-refresh;} } 广告 flowspec:route 192.0.2.0/24 { flow tcp source 0/0 destination 80/0 then { discard; } }
3.3 验证:在上游路由器查看RIB/NHT,确认黑洞或flowspec规则已生效。
4.1 数据平面:采用Linux + XDP/DPDK 或硬件ACL执行高速包过滤;配置流程:将被劫持流量通过GRE/VXLAN隧道送入清洗集群。
4.2 基本清洗步骤:1) 协议识别(SYN flood/UDP flood/HTTP flood);2) 黑名单/疑似源速率限制;3) 行为检测(请求频率/会话持续性);4) 放行干净流量回源。
4.3 回传方式:清洗后通过隧道或BGP回传到原始路由器,确保路径无环路与MTU兼容。
5.1 内核调优(/etc/sysctl.conf):net.ipv4.tcp_syncookies=1;net.netfilter.nf_conntrack_max=2621440;net.ipv4.tcp_max_syn_backlog=4096;net.ipv4.tcp_fin_timeout=30。
5.2 nftables/iptables 示例(SYN 限制、连接数限制):
- nft add table inet filter; nft add chain inet filter input { type filter hook input priority 0; }
- nft add rule inet filter input tcp flags syn meter synrate { ip saddr . tcp dport limit rate 20/second burst 40 } counter accept
- iptables -I INPUT -p tcp --syn -m connlimit --connlimit-above 200 -j DROP
5.3 使用 ipset 管理大规模黑名单:ipset create attackips hash:ip timeout 3600; iptables -I INPUT -m set --match-set attackips src -j DROP。
6.1 WAF 部署:使用 ModSecurity 或云WAF,设置常见规则集(OWASP CRS),对登录/表单/接口启用额外规则。
6.2 应用级速率限制:在 Nginx 上配置 limit_req_zone 和 limit_req,示例:limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; location /api { limit_req zone=one burst=20 nodelay; }。
6.3 验证策略:对重要接口用压力工具(wrk、ab)测试限流效果,并监控错误率与延迟。
7.1 流量采集:启用NetFlow/sFlow或使用nfacct、pmacct,保存到Elasticsearch或InfluxDB。
7.2 告警规则:设置带宽阈值、连接数阈值、短时间增长率告警(例如流量在1分钟内增长200%触发)。
7.3 实时分析:部署Grafana仪表盘、结合Zeek/tcpdump在异常发生时抓包分析。
8.1 小流量模拟:用hping3/iperf针对目标端口发起有限流量验证路由重定向是否生效,例如:hping3 --flood -p 80 目标IP(请在授权环境)。
8.2 大流量演练:与清洗供应商协调在测试窗口发起模拟攻击,验证清洗中心的带宽处理、SLA与回传延迟。
8.3 演练后复盘:收集PCAP、Flows、路由表快照,确认无误后更新Runbook。
9.1 自动化脚本:提供一键切换脚本(调用BGP社区/ExaBGP脚本/API)以便在检测到攻击时立刻劫持流量。
9.2 SOP(事件响应):定义检测→验证→切换→清洗→回收的每一步责任人、联系方式与时间窗。
9.3 日志与审计:记录每次动作(谁、何时、为何),用于后期优化与供应商结算。
10.1 分级防护:把关键业务放在高防线路,其余使用CDN或云WAF做基础防护。
10.2 动态开关清洗:仅在确认攻击且达到阈值时开启付费清洗,避免常驻高额费用。
10.3 长期优化:分析攻击模式(源国、协议、端口),针对性下发规则减少人工干预。
A:Flowspec适用于需要基于五元组(源IP/目的IP/端口/协议/方向)细粒度过滤的场景,例如针对HTTP泛洪或特定源端口攻击;RTBH更适合对整个前缀直接“丢弃”流量的快速应急,但会误伤正常流量。
A:优先启用tcp_syncookies、降低tcp_max_syn_backlog、启用nf_conntrack限制并严格配置iptables/nftables的速率限制与connlimit,同时把流量劫持到上游清洗,减少主机直接处理的包量。
A:在回传链路两端抓包比对(pcap),关注SYN/ACK比、重传率、异常包(非TCP/UDP端口、畸形包),并用应用探针检测业务响应时间与错误率,确保回传流量与备份流量一致且无攻击特征。