我正在实施一个应该回复SSDP M-SEARCH
次查询的设备。
我是设备供应商,我无法控制这些设备的部署位置。
有一种已知的DDoS攻击使用SSDP搜索放大,即攻击者从伪造地址发送搜索请求,编码不良的SSDP服务器响应该假地址。假地址最终被敲定了。
如何防止我的设备被用于此类攻击?
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
答案 0 :(得分:3)
另一种选择是根本不回复单播请求。但是,我不能给你一个明确说明这是允许的来源。 One of the drafts肯定会读起来就像它一样,如果它也是有意义的:毕竟它是一个发现协议。
由于默认情况下在任何理智的默认配置中都不路由多播,而239.0.0.0/8是organization-local, 您可以放心地假设到达多播地址的请求是真实的。 (当然,除非您在自己的网络中有攻击者,但这是一个不同的问题。)
在Linux上,可以使用IP_PKTINFO
套接字选项检查传入的UDP数据包,以验证它实际上已发送到多播地址:
https://stackoverflow.com/a/5309155/705086 http://www.linuxquestions.org/questions/programming-9/how-to-get-destination-address-of-udp-packet-600103/