IP和域限制

时间:2014-07-21 11:59:36

标签: c# iis iis-7 windows-server-2008 ip-restrictions

我们的ASP.NET网站托管在Windows Server 2008和IIS7上。

最近,我们遇到某些IP的“攻击”问题,这些攻击通过提交带有无效参数的不同表单而产生大量错误。

我希望能够根据asp.net代码生成的列表阻止24小时的IP地址列表。 我知道可以使用Web.config - ipSecurity Tag实现这一点。 我找到了以下示例:

http://www.dantor.com/support/misc/web-config-ip-address-restriction.aspx

问题是更改/更新web.config将导致网站重新启动/回收。

是否可以在没有池循环的情况下更新被阻止的IP列表?

修改

也许更好的想法是使用HttpModule实现这一点--Scott Hanselman在他的博客中写了一篇关于这个主题的帖子: http://www.hanselman.com/blog/AnIPAddressBlockingHttpModuleForASPNETIn9Minutes.aspx

你认为这会导致性能下降吗?通过httpmodule路由所有网站请求可能会影响页面加载时间? 关于如何完成这项工作的任何其他想法?

编辑2:

该网站受Fortigate 200a防火墙保护,但据我所知,防火墙无法自动阻止生成错误的IP或尝试进行SQL注入。

2 个答案:

答案 0 :(得分:5)

是否可以在没有池循环的情况下更新被阻止的IP列表?

我要把我的脖子伸到这里然后说它不是。

您认为使用HttpModule会导致性能下降吗?

是。一个重要的,可能不是。但请确保IP地址查找部分非常有效。例如,在HashSet中缓存列表,并且不要每次都从文件中读取列表。

问题是你仍然在使用你的网络请求处理能力来抵挡行党要求。但是,如果您不阻止IP,那么这可能比您查找请求是否为duff的处理要少,因此总体上它实际上可能是性能提升。但是,您可能会从这些IP地址收到如此多的请求,从而使您的服务器不堪重负。

其他选项

可以安装软件防火墙或使用Windows内置防火墙。

正如其他人所说,获得硬件防火墙将完全降低服务器的负担。您可以获取可由Web服务器动态更新的内容以禁用IP地址。虽然我从未使用过,但我们不能推荐一个或评论它们的工作情况。如果您使用的是基于云的设置,则可能需要与服务提供商讨论他们可以做些什么。

要更新防火墙需要考虑的一件事是,您是否真的希望允许您的Web应用程序获得更新防火墙的安全权限?听起来像是一个等待发生的安全漏洞所以要非常小心这是如何完成的,并确保安全权限只允许将IP添加到阻止列表中。

如果您真的受到了重创,您可以通过VeriSign的第三方ddos protection service来路由您的所有流量。但是期望为此特权付出代价。

App池回收这么糟糕吗?

我刚刚遇到的其他事情是应用程序池回收可能没有您想象的那么糟糕。假设您使用的是共享状态服务器,那么很可能您的用户都不会注意到这种情况。原因是IIS通常在回收期间短时间并行运行两个进程,以便新进程处理新请求,并且已经开始的请求在旧进程上完成。只有当旧的进程处理了所有未完成的请求时,IIS才会将其终止。只要您没有将状态存储在内存中,这通常意味着您网站的用户没有注意到切换。

答案 1 :(得分:0)

我正在加入DavidG,使用NetShell从命令行添加规则,甚至添加代码中的规则(c# example),这些规则应立即生效而不重启。

仅当您要接收请求时才使用HTTP模块(例如,IP地址属于公司或热点,并且您希望在终止请求之前分析Cookie),防火墙将在数据均匀之前很久就拒绝连接发送到您的服务器。