防止暴力攻击:
有大量的工具和策略可以帮助您做到这一点,使用哪些工具和策略完全取决于您的服务器实现和要求。
如果不使用防火墙、IDS 或其他网络控制工具,就无法真正阻止 DDOS 拒绝向应用程序提供服务。但是,您可以修改应用程序,使暴力攻击变得更加困难。
执行此操作的标准方法是实现锁定或渐进式延迟。锁定可防止 IP 在登录 N 次失败时发出 X 分钟的登录请求。渐进式延迟会增加处理每个错误登录请求的越来越长的延迟。
如果您使用的是Tomcat的身份验证系统(即您的Web应用程序配置中有一个元素),则应使用Tomcat LockoutRealm,一旦IP地址发出许多错误的请求,您就可以轻松地将其锁定。<login-constraint>
如果您没有使用Tomcat的身份验证系统,那么您必须发布有关您正在使用的内容的更多信息以获取更具体的信息。
最后,您可以简单地增加 API 密钥的长度。64位似乎是一个不可逾越的巨大搜索密钥空间,但以现代标准来看,它的重量不足。许多因素可能导致它远不如您预期的安全:
- 如果您没有适当的保护措施,僵尸网络(或其他大型网络)每秒可能会进行数万次尝试。
- 根据您生成密钥和收集熵的方式,您的实际密钥空间可能会小得多。
- 随着有效密钥数量的增加,需要尝试查找有效密钥的密钥数量(至少在理论上)会急剧下降。
将API密钥长度增加到128(或256,或512)不会花费太多,并且您将大大增加任何蛮力攻击的搜索空间(因此,难度)。
缓解 DDOS 攻击:
但是,要缓解DDOS攻击,您需要做更多的跑腿工作。DDOS攻击很难防御,如果您不控制服务器所在的网络,则尤其困难。
话虽如此,您可以执行一些服务器端操作:
但是,最后,您可以做的只有这么多来免费阻止DDOS攻击。服务器只有这么多的内存,这么多的CPU周期和这么多的网络带宽;有了足够的传入连接,即使是最有效的防火墙也不会阻止您出现故障。如果您投资更高带宽的互联网连接和更多服务器,或者如果您在Amazon Web Services上部署应用程序,或者如果您购买了众多消费者和企业DDOS缓解产品之一,您将能够更好地抵御DDOS攻击(@SDude在他的帖子中有一些很好的建议)。这些选项都不是便宜,快速或简单的,但它们是可用的。
底线:
如果您依靠应用程序代码来缓解DDOS,那么您已经失去了