GH GambleHub

DDoS数据包保护和过滤

1)为什么需要它

DDoS是资源的"质量降解":带/pps,状态表,内核/IRQ CPU,连接池,应用程序限制。目的是放松保护:消除网络周边的体积,中和协议异常到TCP/IP堆栈,并在L7上切断不需要的请求,同时为合法用户保留SLO。

2)攻击类

2.1 L3/L4 (volumetric/protocol)

Volumetric: UDP flood, UDP-reflection/amplification (DNS/CLDAP/NTP/SSDP/memcached/mDNS), GRE flood.

Protocol/state exhaustion: SYN flood, ACK/RST flood, TCP connection-exhaustion, ICMP flood, TCP fragmentation.

QUIC/UDP功能:虚假的开始/回归风暴,spoofed源。

2.2 L7 (application)

HTTP/1.1:查询昂贵的路线,头部超大/场滑动。

HTTP/2: Rapid Reset, stream-flood, HEADERS flood, PRIORITY abuse.

HTTP/3 (QUIC)-连接/线程未完成,Initial flood。

Slow-атаки: slowloris/slow-read/slow-POST.

gRPC/WebSocket:无限流、消息流、大型框架。

3)基本保护架构

1.Anycast + Scrubbing

在全局范围内喷洒流量并通过提供商争夺中心(切断边缘的volumetric/欺骗活动)。

2.Multi-CDN / Multi-Edge

域差异(Web,API,静态),read负载的保护和缓存聚合。

3.其周边的低级过滤器

路由器上的ACL(RFC1918,bogon,故意虚假端口)。
eBPF/XDP用于通过签名和rate限制提前下降到conntrack。

4.L7周边(NGINX/Envoy/WAF)

按键压缩RPS,挑战(captcha/PoW),缓存,优先级"昂贵"路径。

5.内部可持续性

连接池,队列,电路/时间,服务隔离(bulkhead)和带有"堵塞"(shedder)的自动缓存。

4)网络"阀门": 立即打开什么

4.1 Linux sysctl(内核/堆栈)

bash
TCP SYN flood sysctl -w net. ipv4. tcp_syncookies=1 sysctl -w net. ipv4. tcp_max_syn_backlog=4096 sysctl -w net. ipv4. tcp_synack_retries=3

Conntrack/sysctl -w net tables. netfilter. nf_conntrack_max=262144 sysctl -w net. netfilter. nf_conntrack_tcp_timeout_established=300

ICMP/redirect sysctl -w net. ipv4. icmp_echo_ignore_broadcasts=1 sysctl -w net. ipv4. conf. all. accept_redirects=0 sysctl -w net. ipv4. conf. all. send_redirects=0

sysctl -w net socket resources. core. somaxconn=4096 sysctl -w net. core. netdev_max_backlog=250000 sysctl -w net. core. rmem_max=134217728 sysctl -w net. core. wmem_max=134217728

4.2 nftables:基本过滤器和软件包上的ratelimit

nft table inet filter {
sets {
bogon { type ipv4_addr; flags interval; elements = { 0. 0. 0. 0/8, 10. 0. 0. 0/8, 100. 64. 0. 0/10,
127. 0. 0. 0/8, 169. 254. 0. 0/16, 172. 16. 0. 0/12, 192. 0. 2. 0/24, 192. 168. 0. 0/16, 198. 18. 0. 0/15, 224. 0. 0. 0/4 } }
}
chains {
input {
type filter hook input priority 0; policy drop;
ip saddr @bogon drop ct state established,related accept

UDP amplification ports - limit pps udp dport {53,123,1900,11211,389,1900,5353} limit rate over 2000/second drop

SYN rate-limit tcp flags syn tcp dport {80,443} limit rate over 2000/second drop

ICMP flood ip protocol icmp limit rate 100/second accept
}
}
}

4.3 XDP/eBPF(想法)

带有spoofed源的早期数据包(欢迎路由器上的uRPF)。
pps per/32和per/24哈希桶;动态"隔离"源。
UDP-reflection签名:DNS响应到输入(在上下文之外过滤)。

5) UDP加工: 库存和单元

常见反射器/放大器:DNS(开放解析器),NTP(单片),CLDAP,SSDP,mDNS,Memcached(UDP),Chargen。

措施:
  • 关闭/限制UDP服务,最大限度地减少打开的端口。
  • 在外围限制已知端口的pps/比特率。
  • DNS推荐:仅对其网络进行递归,RRL(响应率限制),ANY最小化。
  • NTP只是对值得信赖的"盗版",对公共的"盗版"。

6) TCP state exhaustion

SYN flood:"tcp_syncookies=1",上升"tcp_max_syn_backlog","synack_retries=3",通过pps下降。
ACK/RST洪水:低级限制,删除非法序列(nftables/ebpf)。
Border上的Conntrack-less:在无状态签名上可能存在过滤器的地方,不要浪费状态表。

7)HTTP/2/3和"智能"L7攻击

HTTP/2快速重置:RST框架频率限制和开放流数;在异常时关闭连接。

Stream abuse: лимит concurrent streams, headers size, max frame size.

QUIC/HTTP/3:限制Initial pps,包括Retry;短的handshake taymout。

NGINX (L7片段)

nginx
Header/body constraint client_max_body_size 1m;
large_client_header_buffers 4 8k;

HTTP/2 limits http2_max_concurrent_streams 128;
http2_recv_buffer_size 256k;

Rate limit by IP (example)
limit_req_zone $binary_remote_addr zone=reqs:20m rate=100r/s;
limit_req zone=reqs burst=200 nodelay;

Envoy(反重置和限制)

yaml http2_protocol_options:
max_concurrent_streams: 128 initial_stream_window_size: 65536 max_outbound_frames: 10000 stream_error_on_invalid_http_messaging: true

8)慢速攻击和资源保护

Slowloris/slow-read/slow-POST:启用"proxy_request_buffering on",低平均时间,最低可接受的"read_rate"。
在请求的较长跨包间隔内终止连接。
在应用程序上-早期阅读/丢弃主体,JSON尺寸/深度限制。

9) L7过滤: 谁更重要-让它通过

流量分类:known good (mTLS/JWT合作伙伴),注册用户,匿名。
优先级:"昂贵"的写作路线(存款/结论)-保护但跳过已确认的路线;读取目录-缓存+throttle。
挑战层:高峰时灰色区域的captcha/PoW/JS挑战。

10)缓存,coalescing和退化

用于静态/准静态响应的边缘缓存,"stale-wile-revalidate"。
请求协商:在代理和应用程序中将并行请求捕获到一个密钥。
Degrade模式:禁用次要字节(个性化、繁重的报告),发出"轻松"页面。

11)可观测性和遥测

度量(per RED/节点/群集):
  • L3/L4: `pps_in/out`, `bps_in/out`, `drop_pps{reason}`, `syn_recv`, `conntrack_used/limit`, `xdp_drop_pps`.
  • L7: `requests_total{route}`, `429_total`, `challenge_total{type}`, `h2_rst_rate`, `slow_req_total`.
  • 相关:CPU IRQ软硬,NIC queue drops, run-queue length.

Logs:采样,按/24,ASN,端口和签名汇总;没有PII。
Tracing:包含在白名单上,紧急扩展调试示意图。

12)应对计划(runbook)

1.细节:触发pps/bps/429/h2_rst_rate阈值。
2.分类:级别(L3/4/7),协议(UDP/TCP/h2/h3),地理/ASN。

3.阀门:
  • 在提供程序上启用scrubbing/blackhole配置文件,
  • 加强nftables/ebpf限制,
  • 降低L7极限并提高挑战,
  • 启用"Retry for QUIC" (Initial flood)。
  • 4.通讯:状态页面,合作伙伴通知模板。
  • 5.Forenzika: PCAP捕获60-120秒,top talkers ASNs/ports采样。
  • 6.回顾:更新签名、阈值、反射器列表。

13)测试和演习

每季一次DDoS-drill花花公子:合成UDP/HTTP bursts,慢流量,HTTP/2重置。
Game day:在CDN之间切换Anycast/迁移,降级为"轻型模式"。
提供商验证:SLA scrubbing,过滤器打开/关闭时间,max pps/bps。

14)反模式

在volumetric攻击中仅依靠L7-WAF。
Border上缺乏uRPF/ACL,并且正面"重"过滤。
无限制的标题/身体和长长的保持在顶峰。
没有Anycast/多边缘的单一区域/ROR。
缺少NIC/IRQ/CPU库存和队列监视。
没有缓存/聚合-每个后端额外的RPS。

15) iGaming/财务细节

时间高峰(比赛/德比/乐透抽签):提前扩大POP容量,包括激进的系数缓存,为匿名者铺设金丝雀挑战赛。
支付/出站路线:带有mTLS的单独边缘池,短时间,竞争限制;没有0-RTT。
地理政策:区域性同行,ASN过滤的"托管",快速地理切换。
与DDoS事件中的防冻交叉:velocity限制和Risk API移至"硬"配置文件。

16)准备就绪支票清单

[] Anycast или multi-edge/CDN;已检查scrubbing通道。
  • Border-ACL/uRPF;nftables/ebpf/XDP配置文件,contrack-less过滤。
  • Sysctl调节TCP/SYN,用于UDP端口放大器的极限pps。
  • HTTP/2/3限制(streams, frames, headers),慢速保护,body/header-limits.
  • L7限制和挑战;高速缓存和外围连接。
  • Dashbords pps/bps/conntrack/IRQ+L7 RED;h2_rst/429异常。
  • Runbook/Playbook,提供商联系人,单击打开配置文件。
  • 教义:bursts,slow,HTTP/2 reset;报告和记录改进。
  • 分开的支付/关键路线池、mTLS和严格的限制。

17) TL;DR

放松保护:Anycast+scrubbing消除体积,eBPF/XDP+nftables将碎片切成堆栈,L7限制/挑战/缓存保留SLA。调节TCP (SYN cookies, backlog),限制UDP放大器,设置HTTP/2/3限制和慢速保护。有运行簿并进行培训;对于iGaming-在高峰时段提前扩展边缘,并使用mTLS和严格的限制分离支付路径。

Contact

联系我们

如需任何咨询或支持,请随时联系我们。我们随时准备提供帮助!

Telegram
@Gamble_GC
开始集成

Email — 必填。Telegram 或 WhatsApp — 可选

您的姓名 可选
Email 可选
主题 可选
消息内容 可选
Telegram 可选
@
如果填写 Telegram,我们也会在 Telegram 回复您。
WhatsApp 可选
格式:+国家代码 + 号码(例如:+86XXXXXXXXX)。

点击按钮即表示您同意数据处理。