Lei*_*ski 13 c# asp.net-mvc ddos
我正在开发一个asp.net MVC Web应用程序,客户端要求我们尽最大努力使其尽可能具有抵御拒绝服务攻击的能力.他们担心该网站可能会收到恶意的大量请求,意图减慢/取消网站.
我已经与产品所有者讨论了这个问题,因为它实际上不属于实际的Web应用程序.我认为托管/网络团队有责任监控流量并响应恶意请求.
但是他们坚持认为应用程序应该内置一些预防措施.但他们不想实施CAPTCHA.
有人建议我们限制在给定时间范围内可以为会话提出的请求数.我在考虑做这样的事情 在ASP.NET MVC中实现请求限制的最佳方法?但是使用会话ID不是客户端IP,因为这会给来自公司防火墙后面的用户带来问题 - 他们的IP都是一样的.
他们还建议添加关闭网站某些区域的功能 - 建议管理员用户可以关闭数据库密集区域......但是这可以通过UI控制,当然如果它是在DOS攻击下管理员用户无论如何都无法达到它.
我的问题是,这样做真的值得吗?当然真正的DOS攻击会更先进吗?
你有什么其他的建议?
拒绝服务攻击几乎可以影响其他人服务的稳定性.在这种情况下,您谈论的是网络DoS,并且如前所述,这通常不会发生在您的应用程序级别.
理想情况下,这种攻击将在网络级别得到缓解.有专门为此构建的防火墙,例如Cisco ASA 5500系列,它可以从基本保护到高吞吐量缓解.它们是相当智能的盒子,我可以保证它们有效阻止这些类型的攻击,只要正在使用正确的吞吐量模型.
当然,如果无法访问为您执行此操作的硬件防火墙,则可以采取一些权宜措施来协助防御这些类型的攻击.请注意,这些都不会像专用防火墙那样有效.
其中一个例子是IIS模块动态IP限制,它允许您定义最大并发请求的限制.但是,实际上这有一个缺点,它可能会开始阻止来自具有高并发请求吞吐量的浏览器的合法请求以下载脚本和图像等.
最后,你可以做的事情真的很粗糙,但也非常有效,就像我之前写的那样.基本上,它是一个小工具,可以监视来自同一IP的重复请求的日志文件.所以让我们说/Home超过2秒的10个请求1.2.3.4.如果检测到此情况,将添加防火墙规则(在Windows高级防火墙中,使用shell命令添加)来阻止来自此IP的请求,然后可以在30分钟左右删除该规则.
就像我说的那样,它非常粗糙,但是如果你必须在服务器级别进行,那么你并没有真正有很多明智的选择,因为它不是应该在哪里完成的.你完全正确,责任在于托管服务提供商.
最后,你对CAPTCHA也是对的.如果有的话,它可以通过一次又一次地执行图像生成(可能是资源密集型)来协助DoS,从而使您的资源更加匮乏.但是CAPTCHA有效的时间是,如果您的网站被自动注册机器人发送垃圾邮件,但我相信您已经知道了.
如果你真的想在应用程序级别做一些事情只是为了取悦那些权力,在你的应用程序中实现基于IP的请求限制是可行的,尽管90%无效(因为你仍然必须处理请求).