DDoS保护和数据包过滤
简短摘要
DDoS攻击分为三类:L3/L4 volumetric(通道/设备堵塞),state-exhaustion(在平衡器/火炬上用尽状态表/CPU)和L7(生成应用程序的"合理"查询)。有效的防御分为几层:周边网络措施,网络外过滤/擦除,平衡器/代理和应用程序上的保护,以及具有可测量SLO的操作程序。
威胁景观
Volumetric(UDP/ICMP洪水,DNS/NTP/SSDP/CLDAP/Memcached扩增):目标是堵塞通道和端口。
TCP state-exhaustion (SYN/ACK flood, TCP fragmentation,"半颠簸"连接):用尽conntrack/listeners。
L7 HTTP (S)/WebSocket/GraphQL洪水,缓存,"缓慢"请求:吃掉应用程序的CPU/IO和缓存层。
Reflection/Amplification:使用IP源替换的开放式反射器/扩增器。
Carpet bombing:按集合IP/前缀分配流量,使点过滤复杂化。
基本网络措施(攻击前)
1.反欺骗:边境uRPF/BCP38;带有其他来源的出站数据包。
2.edge/PE上的ACL:禁止不需要的协议/端口;mgmt段的单独列表。
3.CoPP(控制平面检查):对路由器(BGP、OSPF、SSH、SNMP)进行多点处理。
4.端口上的速率限制/波动:bps/PPS用于"嘈杂"类,爆破设置。
5.负载分配:用于公共IP,地质调查的Anycast;用于静态和可缓存的CDN/WAAP。
6.RPKI/ROA+严格BGP导入:降低交通堵塞/重定向的风险。
7.Surface reduction:尽量减少已发布的服务,关闭代理的"原始"起源。
攻击时的快速反应: 网络杠杆
RTBH(远程触发黑洞):BGP community for null route/32 (或/128)受害者。
BGP Flowspec:在PE/edge上快速传播L3/L4规则(src/dst/端口/TCP标志)。
Scrubbing中心/抗DDoS提供商:GRE/VRF隧道或直接中流;过滤,然后向您提供"干净"的流量。
Anycast-antiDDoS:通过存在分解,破坏本地化。
CDN/边缘缓存:屏蔽起源,给出L7限制和"挑战"机制。
主机和L4保护
SYN Cookie/SYNPROXY:在客户确认之前不要保持状态。
Linux: `sysctl net.ipv4.tcp_syncookies=1'或输入平衡器上的"SYNPROXY"。
调音conntrack(如果使用):- 通过提高hashsize来明智地缓解"nf_conntrack_max";
- 减少"半开放"和非活动状态的时空。
- eBPF/XDP:早期的NIC底盘(PPS保护),通过签名/速度过滤到内核。
- nftables/iptables:PPS限制,丢弃"可疑"旗帜,connlimit。
- UDP强化:如果服务不使用UDP,则在边界处下降;如果使用-限制源/端口。
nft table inet filter {
sets {
bad_ports { type inet_service; elements = { 19, 1900, 11211 } } # chargen/SSDP/memcached
}
chains {
input {
type filter hook input priority 0; policy drop;
ct state established,related accept ip saddr 127. 0. 0. 0/8 drop ip6 saddr::1/128 drop
limit new TCP tcp flags & (syn ack) == syn limit rate 200/second burst 400 accept tcp flags & (syn ack) == syn drop
deny bad UDP ports udp dport @ bad _ ports drop
ICMP rate-limit icmp type echo-request limit rate 50/second burst 100 accept icmpv6 type echo-request limit rate 50/second burst 100 accept
}
}
}
输入平衡器上的SYNPROXY(示例"iptables"):
bash iptables -t raw -A PREROUTING -p tcp --syn -j CT --notrack iptables -A INPUT -p tcp -m tcp --syn -m hashlimit --hashlimit 100/second --hashlimit-burst 200 --hashlimit-mode srcip --hashlimit-name syns -j SYNPROXY --sack-perm --timestamp --wscale 7 --mss 1460 iptables -A INPUT -m state --state INVALID -j DROP
L7保护(短)
WAAP/WAF:关键路径上的积极模型,比例限制,挑战/JS,行为得分。
缓存/静态离线:将查询减少到起源;cache-busting保护(标准化/黑色参数列表)。
GraphQL限制器:"maxDepth","maxCost",禁止在销售中引入。
BFF模式:瘦客户端令牌,服务器上的重逻辑/限制。
等效性和队列:在降解时防止雪崩状重复。
遥测和检测
网络流:NetFlow/sFlow/IPFIX (pps, top talkers, 协议/端口/ASN)。
被动L7传感器:平衡器/代理器(nginx/envoy)标志,p95/99度量,error-rate。
基本阈值:"PPS/CPU在边缘的意外增长","SYN-RECV激增","UDP未解决"。
签名/行为:IP/ASN/JA3频率,4xx/5xx爆发,用户代理异常。
可视化:单独的dashbords L3/L4/L7;地理/ASN交通图;RTBH/Flowspec触发之前的时间。
SLO/SLI和alerting
SLO示例:- "DDoS异常的MTTD ≤ 60秒,MTTM(RTBH/Flowspec激活)≤ 3分钟。"
- "p95潜伏期通过ed ≤ ge 50毫秒不受攻击;在≤ mitiging下的200毫秒攻击"。
- "丢弃的恶意流量份额≥ 99%,同时保持≥ 98%的合法性。"
- PPS/CPU/IRQ网络节点>阈值;
- SYN-RECV/half-open > X;
- 5xx/latency在公共尾矿上的增长;
- WAF>阈值的挑战/恶作剧百分比(FP风险)。
防御体系结构模式
1.Tiered Defense: Edge (ACL/CoPP) → Scrubbing/Anycast → L7 代理/WAAP →应用程序。
2.交通转移:BGP社区在潜水期间转为灌木丛,GRE-beckhol。
3.静态边缘:最大限度地静态过滤至会议;stateful-更接近应用程序。
4.eBPF/XDP First:早期下沉(通过JA3/端口/速度)到核心。
5.Golden Paths:用于关键API的单个IP/域,以免完全被"拆除"。
操作程序和事件
Runbooks:谁以及哪些指标包含RTBH/Flowspec/Scrabbing,如何切换Anycast/池。
黑名单和TTL:短期,以免被"击败";自动重新测试源。
通讯:发送给供应商/合作伙伴/供应商的消息模板;被攻击域之外的通信通道。
事件后:时间轴报告(T0…… Tn),"有效/不起作用",测试目录更新。
演习:常规比赛日:RTBH干跑,失去Anycast地区,卫星链接,"缓慢"攻击。
Linux调音/平衡器(样本)
bash
TCP sysctl -w net. ipv4. tcp_max_syn_backlog=4096 sysctl -w net. ipv4. tcp_syncookies=1 sysctl -w net. ipv4. tcp_fin_timeout=15 sysctl -w net. ipv4. tcp_tw_reuse=1
Conntrack (if enabled)
sysctl -w net. netfilter. nf_conntrack_max=1048576 sysctl -w net. netfilter. nf_conntrack_tcp_timeout_syn_recv=30 sysctl -w net. netfilter. nf_conntrack_udp_timeout=15
NIC/IRQ ethtool -G eth0 rx 4096 tx 4096
常见错误
通过静态火炬将所有流量保持在conntrack的边缘→。尽可能做到无状态。
已故的RTBH/Flowspec →频道已经"为零"。自动化阈值和启用。
单个IP/单前"全部"→没有blast radius隔离。共享域/IP和配额。
零缓存→每个L7循环都击败起源;启用参数缓存和规范化。
盲目锁定国家/ASN而无需进行法律分析-切断转换;使用细微的规则/挑战。
在业务高峰期,过于激进的限制→了庞大的FP。
实施路线图
1.曲面评估:IP/前缀/端口/协议清单,关键路径映射。
2.网络卫生:反欺骗,ACL,CoPP,RPKI/ROA,放弃多余的UDP服务。
3.流量转移:与擦洗提供商Anycast/CDN,BGP社区的合同。
4.边缘调谐:静态过滤,SYNPROXY/eBPF,合理的conntrack定时器。
5.L7/WAAP:积极模式,限制/挑战,缓存。
6.可观察性:NetFlow/sFlow,dashbords L3/L4/L7,alerta,SLO。
7.自动化:RTBH/Flowspec按钮,用于规则的IaC,金丝雀配音。
8.演习和RCA:定期测试,更新花花公子。
iGaming/fintech的功能
高峰赛事(锦标赛、促销、比赛):计划能力/限制、热缓存、CDN前扭曲。
支付集成:专用的IP/域,通过抗DDoS提供商的优先通道,mTLS到PSP,对关键终端的严格限制。
抗Frod/机器人控制:在注册/登录/促销代码上的行为得分和人类挑战。
UX和转换:在积极的保护下,使用grace list for VIP/合作伙伴,软降解(缓存/readonly)。
法律要求:日志透明度,遥测存储,调试措施对时间对钱包的影响以及周转度量。
示例: Flowspec和RTBH(概念上)
RTBH通过社区(示例):
route 203. 0. 113. 10/32 blackhole set community 65535:666 announce to upstream
Flowspec(每个端口19/1900的UDP单元>1 Mbit/接口):
match destination 203. 0. 113. 0/24 protocol = udp destination-port {19,1900}
then rate-limit 1000
FAQ
WAF是解决DDoS?
部分用于L7。对抗L3/L4和volumetric 需要擦洗/Anycast/网络措施。
SYN cookie是否足够?
这是对SYN-flood的基本保护,但是如果没有网络限制和擦拭通道,仍然可以得分。
是否需要禁用ICMP?
没有。rate-limit更好,只有危险类型,ICMP 对于诊断/PMTU有用。
磨砂的GRE隧道不会增加潜伏期吗?
是的,但通常允许。用缓存和准确的路线补偿您最近的PoP。
底线
可靠的DDoS保护是一种分层体系结构:网络卫生(反欺骗/ACL/CoPP),快速流量破坏(RTBH/Flowspec/scrubbing/Anycast),主机和L7机制(SYNPROXY,eBPF )/XDP,WAAP),以及遥测,SLO和调试的花花公子。这种方法将简单性降至最低,使渠道保持活力,并且即使在分布式攻击的压力下也能保持业务指标。