Java 如何阻止对web API的黑客/拒绝服务攻击
上周,我的网站遭到拒绝服务/黑客攻击。该攻击通过循环中随机生成的无效API密钥攻击我们的web API 我不确定他们是想猜测一个密钥(从数学上讲,64位密钥是不可能的),还是想攻击服务器。攻击是分布式的,因此我无法禁止所有IP地址,因为它发生在数百个客户端 我猜这是IPs发布的Android应用程序,所以有人在Android应用程序中安装了一些恶意软件,并使用所有安装来攻击我的服务器 服务器是Tomcat/Java,目前web API只响应400个无效密钥,并缓存多次尝试无效密钥的IP,但仍然需要对每个错误请求进行一些处理Java 如何阻止对web API的黑客/拒绝服务攻击,java,android,http,security,Java,Android,Http,Security,上周,我的网站遭到拒绝服务/黑客攻击。该攻击通过循环中随机生成的无效API密钥攻击我们的web API 我不确定他们是想猜测一个密钥(从数学上讲,64位密钥是不可能的),还是想攻击服务器。攻击是分布式的,因此我无法禁止所有IP地址,因为它发生在数百个客户端 我猜这是IPs发布的Android应用程序,所以有人在Android应用程序中安装了一些恶意软件,并使用所有安装来攻击我的服务器 服务器是Tomcat/Java,目前web API只响应400个无效密钥,并缓存多次尝试无效密钥的IP,但仍然需
有什么建议可以阻止这次袭击吗?有没有办法识别从HTTP头发出请求的Android应用程序?防止暴力攻击: 有大量的工具和策略可以帮助您完成这项工作,而使用哪种工具和策略完全取决于您的服务器实现和需求 如果不使用防火墙、IDS或其他网络控制工具,您就无法真正阻止拒绝应用程序服务的DDOS。但是,您可以修改应用程序,使暴力攻击变得更加困难 执行此操作的标准方法是执行锁定或渐进延迟。锁定可防止IP在X分钟内发出登录请求,如果他们未能登录N次。渐进式延迟会使处理每个错误登录请求的延迟越来越长 如果您正在使用Tomcat的身份验证系统(即,您的webapp配置中有一个
元素),那么您应该使用,它可以让您在IP地址发出大量错误请求时轻松将其锁定
如果您没有使用Tomcat的身份验证系统,那么您必须发布更多关于您正在使用的内容的信息,以获得更具体的信息
最后,您可以简单地增加API键的长度。64位似乎是一个难以逾越的巨大搜索键空间,但按照现代标准,它的重量不足。许多因素可能会导致其安全性远远低于您的预期:
- 如果没有适当的保护措施,僵尸网络(或其他大型网络)每秒可能进行数万次尝试
- 根据生成密钥和收集熵的方式, 事实上的键空间可能要小得多
- 随着有效密钥数量的增加,需要 试图找到一个有效的(至少在理论上)下降 尖锐地
- 安装和配置web应用程序防火墙,如拒绝违反您定义的规则的传入连接
- 设置IDS系统,如检测何时发生DDOS攻击,并采取第一步缓解攻击
- 另一个很好的选择是
- 如前所述,创建自己的Tomcat
,以拒绝其阀
(或任何其他标准)的传入请求,作为最后一道防线李>用户代理
如果您依靠应用程序代码来缓解DDOS,您已经失去了如果D-DOS攻击严重,应用程序级检查根本不起作用。整个带宽将被D-DOS客户端占用,并且不会触发应用程序级检查。实际上,您的web服务根本不运行 如果您必须确保应用程序免受严重的D-DOS攻击,那么除了通过付费依赖第三方工具之外,您没有其他选择。根据我过去的经验,我可以信赖的清洁管道提供商(只发送良好流量)工具之一: 如果您的网站中的D-DOS攻击比较轻微,则可以实施应用程序级检查。例如,下面的配置将限制中引用的单个IP的最大连接数
--您可以更改此位置
MaxConn外围1
仅限音频/mpeg视频
有关D-DOS攻击的更多信息,请访问。它提供了预防和响应工具列表,包括:防火墙、交换机、路由器、基于IP的预防、基于D-DOS的防御
最后
清理管道(所有流量通过代理、隧道甚至直接电路等各种方法通过“清理中心”或“清理中心”,从而分离“坏”流量(DDoS和其他常见的互联网攻击),并仅将好流量发送到服务器之外)
您可以找到12家清洁管道分销商。最好的方法是完全阻止您访问您的服务
<Directory /home/*/public_html> -- You can change this location
MaxConnPerIP 1
OnlyIPLimit audio/mpeg video
</Directory>