【发布时间】:2017-12-20 17:18:20
【问题描述】:
是否有任何具体措施可以帮助 Django Channels 服务器不易受到轻度或意外 DDoS 攻击或来自 websocket/HTTP 客户端的一般负载增加?由于 Channels 并不是真正的异步(仍然是幕后工作人员),我觉得关闭一个基于 Channels 的网站很容易——即使使用相当简单的硬件也是如此。我目前正在 Django Channels 上构建一个应用程序,稍后将运行一些测试以查看它的运行情况。
Daphne 是否内置了某种形式的节流功能?我应该实施一些应用程序级别的限制吗?这仍然会很慢,因为工作人员仍在处理受限制的请求,但请求可以快得多。我还能做些什么来阻止这些攻击吗?
我的一个想法是始终确保为特定通道指定工作人员 - 这样,如果 websocket 通道过载,HTTP 仍会响应。
编辑:我很清楚低级 DDoS 保护是一种理想的解决方案,并且我了解 DDoS 攻击的工作原理。我正在寻找的是一种内置于通道的解决方案,可以帮助处理像这样增加的负载。也许 Daphne 能够扩大通道并缩小另一个通道以进行补偿,或者可以在某个点之后减少每个请求的权重的节流方法。
我正在寻找一个 daphne/channels 特定的答案 - 关于 DDoS 或一般负载处理的一般答案不是我要寻找的 - 关于 SO 还有很多其他问题。
我还可以根据谁已登录和谁未登录来控制节流 - 未登录用户的节流可能会有所帮助。
再次编辑:请阅读整个问题!我不是在寻找一般的 DDoS 缓解建议或对低级方法的解释。我想知道达芙妮是否支持以下内容:
- 限制
- 基于队列大小的动态工作分配
- 为经过身份验证的请求提供优先级的中间件
或者类似的东西。我还将就此直接与 Channels 社区联系,因为 SO 可能不是解决这个问题的最佳地点。
【问题讨论】:
-
使用软件防火墙进行 DDOS 保护?我的意见是“敬畏”的想法!在每个请求上读取 60 字节的数据包标头。触发更多拒绝-删除-冻结的功能是
system resource问题。延迟是foregone conclusion。您可能会成功应对低价值攻击,但如何处理系统资源?不能在防火墙上使用任何存储过程,意味着 good_user 与 bad_user 请求。 如果接受了不需要的请求,您将无法保护自己! 如果数据包到达环回 (lo),这并不便宜。
标签: python django websocket django-channels