如何正确防止SSDP反射/放大攻击?

Dim*_*nek 8 security network-programming ddos ssdp

我正在实现一个应该响应SSDP M-SEARCH查询的设备.

我是设备供应商,我无法控制这些设备的部署位置.

有一种已知的DDoS攻击使用SSDP搜索放大,即攻击者从伪造地址发送搜索请求,编码不良的SSDP服务器响应该假地址.假地址最终受到重创.

我应该怎么做以防止我的设备被用于此类攻击?

  1. 仅设置TTL = 2并依赖路由器丢弃数据包
  2. 仅响应来自自己子网的请求
  3. 为有效的查询源子网添加配置选项
  4. 猜猜什么IP地址是"本地的"和"全球的"
  5. 添加响应油门,希望最好
  6. 你的建议?

Wrt 1. TTL应根据SSDP规范进行配置; 即使它的响应很低,仍然会泄漏出本地网络.如果网络上有桥接VPN,则响应泄漏很远.

Wrt 2.我可以想象可以访问多个子网的公司网络(例如,一个子网用于无线客户端,另一个用于桌面,另一个用于服务器),因此我的设备必须可以跨子网搜索(尽管每个规格需要TTL).

Wrt 3.配置和维护麻烦.

Wrt 4.有可靠的方法吗?IPv6怎么样?那些拥有例如/ 28片全局地址的网络怎么样?

Wrt 5.来自无数设备的涓涓细流仍然是一股洪流......

参考:https://blog.sucuri.net/2014/09/quick-analysis-of-a-ddos-attack-using-ssdp.html

Phi*_*lip 3

另一种选择是根本不回复单播请求。不过,我无法向您提供明确说明这是允许的消息来源。其中一份草案读起来确实像是这样,而且如果确实如此,那就有意义了:毕竟,这是一个发现协议。

由于在任何正常的默认配置中默认情况下都不会路由多播,并且 239.0.0.0/8 是组织本地的,因此您可以放心地假设到达多播地址的请求是真实的。(当然,除非您自己的网络中有攻击者,但这是另一个问题。)

在 Linux 上,可以使用IP_PKTINFO套接字选项检查传入的 UDP 数据包,以验证它实际上已发送到多播地址:

/sf/answers/371640881/ http://www.linuxquestions.org/questions/programming-9/how-to-get-destination-address-of-udp-packet-600103/