禁止通过禁止的IP地址访问网站

我有一个机器人/黑客的IP地址列表,不断攻击我的一个网站。 我想通过IP阻止这些访问者,并试图为此制定一个“最佳”方法。 我的网站使用C#ASP.NET MVC。

我有一个IP的List

放置支票代码的最佳位置在哪里? 我正在考虑使用母版页的Page_Load事件,但也可以将它放在每个控制器的filter中……

您将什么HTML返回到禁止的IP? 我不愿意返回“因为您的IP被禁止而被阻止的网站”,因为这将为黑客提供他们在块周围工作所需的信息。 这样做的好处是,它将为那些陷入交火的无辜用户提供他们无法访问该网站的原因。 我目前的感觉是我应该返回“维护现场”通知。

我应该使用虚假的“维护站点”通知返回什么HTTP状态代码? 我在想200。

站点正在Server 2003上运行。

虽然您可以阻止外向服务器上的IP地址(显然您的Web服务器,但您可能有其他服务器),但需要在所有服务器上复制此列表。 通过在服务器上进行阻塞,您不仅会使解决方案过于复杂,而且还会提供一种并非完全安全的方法。

阻止网络流量的正确点,无论是选择端口列表还是IP地址,都可以在您的网络上尽可能远。 这通常是您入口点的防火墙/路由器。 这些网络设备针对此目的进行了优化,远远超出了这一目的。 根据网络设备的制造商,function集会有很大差异。

我建议你:

  • 识别最外边界的所有路由器/防火墙。 除非你负载平衡,否则你可能只有一个。
  • 了解如何为这些设备配置ACL(访问控制列表)。
  • 根据要阻止的IP地址列表修改ACL。
  • 始终在其他位置保存网络设备配置的备份。

显然,这只是安全问题的冰山一角。 也许在某些时候你需要与DOS(拒绝服务攻击)竞争,然后一些 – 哦,乐趣。

祝好运。

如果您认为您的网站被特定IP“黑客攻击”,您不应该在软件中阻止该IP,这是他们打算妥协的事情。 应在防火墙处阻止阻止的IP。

出于几个原因,我不得不同意大卫的观点。

  1. 通过软件阻止黑客/机器人仍​​然可以滥用您的资源(带宽,处理器时间等)。

  2. 软件无法保护您的网站免受DOS攻击。

  3. 如果一个黑客很好,他们会找到解决软件块的方法。

  4. 更新阻止代码将需要重新编译您的应用程序。

你的答案是防火墙。 设置规则以阻止用户,他们无法连接。

发送“维护不足”页面是一个可怕的想法,因为它会使普通用户感到困惑,并且不会阻止一个好的黑客……

在服务器消耗太多资源之前,我会将代码放在尽可能快地运行的地方。

我会说你应该发回尽可能少的信息,理想情况是HTTP状态503(暂时不可用),短消息链接到可接受的使用页面,或者向人们解释他们为什么可能被阻止的原因和什么如果他们觉得他们被不公平地阻止了 您可能希望以text / plain而不是HTML来执行此操作,因为它将使用更少的字节:)

当您拥有大量被阻止的地址(例如100万)时,使用内存中的被阻止IP列表也会中断,因为扫描它变得过高(请记住,您需要对相关资源的每个请求执行此操作)。

最终,您需要一种方法将阻止的IP列表分发到您的所有Web服务器和/或保持其集中 – 具体取决于您正在获得或预期的滥用类型。

话虽如此,你绝对应该采用YAGNI原则。 如果您没有遇到真正的容量问题,请不要打扰滥用者。 实际上很少有网站会这样做,而且大多数网站都是运营网站带来巨大成本的事情(例如谷歌搜索)