代码之家  ›  专栏  ›  技术社区  ›  David G

检测DoS(拒绝服务)攻击的最佳实践?[关闭]

  •  18
  • David G  · 技术社区  · 16 年前

    我正在寻找在服务实现(而不是外部网络监控)中检测和防止DoS的最佳实践。该服务处理用户、组和属性信息的查询。

    关于如何处理DOS,您最喜欢的信息来源是什么?

    3 回复  |  直到 11 年前
        1
  •  10
  •   Gulzar Nazim    16 年前

    这是一种我发现非常有用的技术。

    Prevent Denial of Service (DOS) attacks in your web application

        2
  •  11
  •   ramayac    11 年前

    无论您对DoS攻击做什么,请考虑您所做的操作是否会实际增加处理恶意或不需要的请求所需的负载!

    如果您使用的是Linux,那么您应该阅读本文:
    Rule-based DoS attacks prevention shell script (摘自《Linux公报》) 它有以下主题:

    • 如何检测DoS攻击 /var/log/secure文件
    • 如何减少检测到的冗余IP 从临时文件
    • 如何激活/sbin/iptables
    • 如何安装建议的shell脚本

    在不适当限制IPtables中被阻塞IP的数量的情况下应用此方法可能会通过增加请求的资源来处理未经请求的请求来引入DOS漏洞。 减少风险使用 ipset 匹配iptables中的IP地址。

    另外,请阅读 ssh dictionary attack prevention using iptables . (按照这里的建议,使用有状态的防火墙启用iptable并不能防止大多数DoS攻击,但实际上可能 缓解 DOS攻击会用无用的状态信息污染您的RAM。)

    新的Linux?阅读 Windows-to-Linux roadmap: Part 5. Linux logging IBM的。

    祝你好运!

        3
  •  2
  •   David G    16 年前

    我第一次尝试解决DOS漏洞时使用了Gulzar建议的方法,这基本上是为了限制同一IP地址允许的调用数量。我认为这是一种很好的方法,但不幸的是,它导致我的代码在性能测试中失败。

    由于我无法让性能测试组更改它们的测试(一个政治问题,而不是技术问题),所以我改为限制可配置间隔期间允许的调用数。我进行了最大呼叫数和可配置的时间间隔。我还允许设置一个0值或一个禁用限制的负数。

    需要保护的代码由多个产品在内部使用。因此,我让每个产品组运行它们的QA和性能测试套件,并提出尽可能小的默认值,以限制真正的DoS攻击,但仍然通过了所有测试。

    fwiw,时间间隔为30秒,最大呼叫数为100。这不是一个完全令人满意的方法,但它简单实用,并得到了公司安全团队的批准(另一个政治考虑)。