6

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

最近,我们遇到了来自某些 IP 的“攻击”问题,这些 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 注入。

4

2 回答 2

5

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

我要在这里伸出我的脖子说它不是。

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

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

问题是您仍在使用您的 Web 请求处理能力来抵御 duff 请求。但这可能少于您在不阻止 IP 的情况下确定请求是否无效的处理,因此总体而言,它实际上可能是性能提升。但是,您可能会从这些 IP 地址收到如此多的请求,从而使您的服务器不堪重负。

其他选项

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

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

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

如果您真的受到打击,您可以通过第三方ddos​​ 保护服务路由所有流量,例如 VeriSign 提供的这种服务。但希望为这项特权付出代价。

应用程序池回收是一件坏事吗?

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

于 2014-12-05T18:12:59.543 回答
0

我正在加入 DavidG,使用 NetShell 从命令行添加规则,甚至从您的代码(c# 示例)中添加规则,这应该会立即生效而无需重新启动。

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

于 2014-12-07T14:01:11.213 回答