防止恶意请求 - DoS攻击(Prevent Malicious Requests - DOS A

2019-08-16 18:05发布

我开发一个asp.net MVC的Web应用程序和客户有要求,我们尽我们所能,使之为弹性尽可能的拒绝服务攻击。 他们担心的是,网站可以接收与意图的恶意大量请求减缓/取下来的网站。

我曾与产品所有者真正被淘汰的职权范围进行实际的Web应用程序的讨论这一点。 我认为它属于托管/网络团队负责监控流量和恶意请求作出回应。

然而,他们坚持认为应用程序应该具有内置到它的一些注意事项。 他们不想虽然实施CAPTCHA。

有人建议我们限制可用于会话的给定的时间框架内作出的请求数量。 我在想这样做这样的事情的,以实现在ASP.NET MVC请求限制的最佳方式? 但是,使用会话ID而不是客户端IP,因为这会导致用户在公司防火墙后面来的问题 - 他们的IP都将是相同的。

他们还建议增加关闭网站的某些区域的能力 - 这意味着管理员用户可以关闭数据库密集区.....然而,这将通过UI进行控制,当然,如果是在DOS攻击管理员用户将不能够去也无妨。

我的问题是,是不是真的值得这样做呢? 当然一个真正的DOS攻击会更先进?

你有什么其他的建议?

Answer 1:

拒绝服务攻击可以是几乎任何东西会影响你对其他的人服务的稳定性。 在这种情况下,你是在谈论一个网络DoS和如前所述,这通常不会在你的应用程序级别的发生。

理想情况下,这种攻击会在网络层面得到缓解。 但是也有一些专为这如专用的防火墙思科ASA 5500系列 ,其工作原理是从基本的保护方式向上通过高通量的缓解。 他们是非常聪明的箱子,我可以阻止这些类型的攻击,只要为你得到正在使用的吞吐量正确的模型保证其使用效果。

当然,如果这是不可能有机会获得,这是否给你一个硬件防火墙,也有一些治标的办法,你可以落实到位,以协助这些类型的攻击防御。 请注意,所有的这些都将是连一半效果不如专用防火墙会。

一个这样的例子是IIS模块动态IP限制 ,它允许您定义的最大并发请求的限制。 然而,在实践中,这有一个缺点,因为它可能会开始阻止来自具有高并发请求吞吐量下载脚本和图像等浏览器的正当要求

最后,有些东西你可以做到这一点真的很粗糙,但也确实有效,是有点像我以前写的。 基本上,它是一个小工具,它监视日志文件来自同一个IP的重复请求。 所以我们可以说10名的请求/Home超过2秒,从1.2.3.4 。 如果这个检测,防火墙规则将被添加到阻止来自该IP的请求(在Windows高级防火墙,使用shell命令添加),该规则然后可以在30分钟后左右取出。

就像我说的,这是非常粗略的,但如果你在服务器级别做到这一点,你真的没有很多明智的选择,因为这不是它应该做的事。 你是完全正确的,该责任有所在于托管服务提供商。

最后,你说得对验证码了。 如果有的话,它可以通过在执行图像生成(这可能是资源密集的)一遍又一遍,从而更加饥饿的资源协助DoS攻击。 一个CAPTCHA是有效尽管时间,将是如果你的网站是通过自动注册机器人来发送垃圾邮件,但我敢肯定你已经知道了。

如果你真的想这样做,在应用层面的东西只是为了取悦那是权力,实现基于IP的一些要求限制在你的应用是可行的,尽管90%的无效(因为你仍然必须处理请求)。



Answer 2:

你可以实现在云和规模的服务器解决方案,如果你确实不得不熬夜,但它可以得到昂贵...

另一个想法是记录注册用户的IP地址。 在DOS的情况下,限制所有流量从“好”用户的请求。



Answer 3:

防止在应用程序级的一个真正的DoS攻击是不是真的可行,因为请求将最有可能它杀死你的应用程序之前,由于您的应用程序与它也有一个最大的并发请求的应用程序池相关联的事实,杀死你的Web服务器您所使用的服务器技术定义。

这个有趣的文章http://www.asp.net/web-forms/tutorials/aspnet-45/using-asynchronous-methods-in-aspnet-45指出Windows 7,Windows Vista和Windows 8有一个最大的10个并发的要求。 它更进一步与“你需要一个Windows服务器操作系统看到的高负荷下异步方法的好处”的说法。

您可以增加与您的应用程序,以增加将要排队的请求的量(后来计算,当线程准备)相关的应用程序池,这将阻止HTTP协议栈的HTTP.sys队列限制(HTTP .SYS)从超出极限,没有工人,工艺可用于处理进一步的请求时,返回HTTP错误503。

你提到的是,客户需要你“试试[你]最好的,使之为弹性尽可能的拒绝服务攻击”。 我的建议可能不会在您的情况适用的措施,但你可以看看执行,以适应客户需求的文章中提到的基于任务的异步模式(TAP)。

这种模式将释放线程而持久的操作执行,使可用于进一步请求(从而保持您的HTTP.sys排队更低)的线程 - 同时也给你的应用程序中增加了整体性能的好处,当多个请求第三方服务或多个密集的IO的计算被执行。

这项措施不会使您的应用程序抵御DoS攻击,但它会使你的应用程序尽可能负责上,它是服务于硬件。



文章来源: Prevent Malicious Requests - DOS Attacks