Jam*_*mes 51 java security android http
我的网站上周一直遭遇拒绝服务/黑客攻击.攻击是在循环中随机生成的无效API密钥攻击我们的Web API.
我不确定他们是否试图猜测一个密钥(在数学上不可能作为64位密钥)或尝试DOS攻击服务器.攻击是分布式的,所以我不能禁止所有的IP地址,因为它发生在数百个客户端.
我的猜测是它是IP的Android应用程序,所以有人在Android应用程序中有一些恶意软件,并使用所有安装来攻击我的服务器.
服务器是Tomcat/Java,目前Web API只响应400无效密钥,并缓存已经进行了几次无效密钥尝试的IP,但仍需要对每个错误请求进行一些处理.
有什么建议如何阻止攻击?有没有办法识别从HTTP标头发出请求的Android应用程序?
F. *_*n Q 44
防止蛮力攻击:
有大量工具和策略可以帮助您完成此任务,使用哪些工具和策略完全取决于您的服务器实现和要求.
如果不使用防火墙,IDS或其他网络控制工具,您无法真正阻止DDOS拒绝为您的应用程序提供服务.但是,您可以修改应用程序以使暴力攻击更加困难.
执行此操作的标准方法是实施锁定或渐进式延迟.如果IP无法登录N次,则锁定会阻止IP发出X分钟的登录请求.渐进式延迟会增加处理每个错误登录请求的延迟和延迟.
如果您正在使用Tomcat的身份验证系统(即您<login-constraint>的webapp配置中有一个元素),您应该使用Tomcat LockoutRealm,它可以让您在发出大量错误请求后轻松将IP地址置于锁定状态.
如果您没有使用Tomcat的身份验证系统,那么您必须发布有关您正在使用的更多信息以获取更具体的信息.
最后,您可以简单地增加API密钥的长度.64位似乎是一个不可逾越的巨大搜索关键空间,但它的重量不足现代标准.许多因素可能会使其远远低于您的预期:
将API密钥长度增加到128(或256或512)将不会花费太多,并且您将极大地增加任何暴力攻击的搜索空间(因此,难度).
减轻DDOS攻击:
但是,要减轻DDOS攻击,您需要做更多的工作.DDOS攻击难以防御,如果您不控制服务器所在的网络,则特别困难.
话虽这么说,你可以做一些服务器端的事情:
Valve,如所描述这里,拒绝通过其进入的请求User-Agents(或任何其他标准)作为防御的最后一道防线.但是,最终,您可以做很多事情来免费停止DDOS攻击.服务器只有很多内存,如此多的CPU周期和如此多的网络带宽; 有足够的传入连接,即使最有效的防火墙也不会让你失望.如果您投资于更高带宽的互联网连接和更多服务器,或者您在Amazon Web Services上部署应用程序,或者您购买了许多消费者和企业DDOS缓解产品中的一种,那么您将能够更好地抵御DDOS攻击(@ SDude在他的帖子中提出了一些很好的建议.这些选项都不便宜,快捷或简单,但它们都是可用的.
底线:
如果您依赖应用程序代码来缓解DDOS,那么您已经输了
小智 7
这里有一些想法。此外还有许多策略,但这应该可以帮助您入门。还要认识到,亚马逊经常受到 ddos 攻击,他们的系统往往有一些启发式方法,可以使他们(以及您)免受这些攻击,特别是如果您使用弹性负载平衡,无论如何您都应该使用它。
使用限流机制阻止大量请求
在非常大的请求(例如大于 1-2mb;除非您有照片上传服务或类似服务)到达您的应用程序之前自动拒绝它们
通过限制与系统中其他组件的连接总数来防止级联故障;例如,不要因为打开了一千个连接而让数据库服务器过载。
如果足够大,您将无法独自阻止它。您可以在应用程序级别上进行所有想要的优化,但是仍然会失败。除了用于预防的应用程序级安全性(如FSQ的回答),您还应该使用行之有效的解决方案,让专业人士(如果您对业务很认真)承担了沉重的负担。我的建议是:
互联网-> CloudFlare / Incapsula-> AWS API Gateway->您的API服务器
0,02
PS:我认为这个问题属于Sec
| 归档时间: |
|
| 查看次数: |
17649 次 |
| 最近记录: |