我有一个机器人/黑客的IP地址列表,它们不断攻击我的某个网站。我想通过IP来阻止这些访问者,并且我正在尝试为此制定一个“最佳”方法。我的网站使用C#ASP.NET MVC。
我有一个List<int>
的IP。
放置支票代码的最佳位置在哪里?我正在考虑使用母版页的Page_Load事件,但也可以将它放在每个控制器的过滤器中......
您返回禁止的IP的HTML是什么?我不愿意返回“因为您的IP被禁止而被阻止的网站”,因为这将为黑客提供他们在块周围工作所需的信息。这样做的好处是,它将为陷入交火的无辜用户提供他们无法访问网站的原因。我目前的感觉是我应该返回“维护中的网站”通知。
我应该使用虚假的“维护网站”通知返回什么HTTP状态代码?我在想200。
网站正在Server 2003上运行。
答案 0 :(得分:12)
如果您觉得您的网站遭到特定IP的“黑客攻击”,您不应该在软件中阻止该IP,这是他们打算妥协的事情。应该在防火墙处阻止阻止的IP。
答案 1 :(得分:3)
出于以下几个原因,我必须同意David的观点。
通过软件阻止黑客/机器人仍然可以滥用您的资源(带宽,处理器时间等)。
软件无法保护您的网站免受dos攻击。
如果黑客很好,他们会找到解决软件块的方法。
更新阻止代码需要重新编译您的应用程序。
您的答案在防火墙中。设置规则以阻止用户,他们无法连接。
发送“维护不足”页面是个糟糕的主意,因为它会让普通用户感到困惑,也不会阻止好黑客...
答案 2 :(得分:2)
虽然你可以阻止外向服务器上的IP地址(显然你的网络服务器,但你可能有其他服务器),但这个列表需要在所有服务器上复制。通过阻止服务器,您不仅会使解决方案过于复杂,而且还会提供一种并非完全安全的方法。
阻止网络流量的正确点,无论是选择的端口列表还是IP地址,都在您的网络上尽可能远。这通常是您入口处的防火墙/路由器。这些网络设备针对此目的进行了优化,远远超出了这一目的。根据网络设备的制造商,功能集会有很大差异。
我建议你:
显然,这只是安全问题的冰山一角。也许在某些时候你需要与DOS(拒绝服务攻击)竞争,然后一些 - 哦,好玩。
祝你好运。答案 3 :(得分:2)
在服务器消耗太多资源之前,我会将代码放在尽可能快地运行的地方。
我会说你应该尽可能少地发回信息,理想情况是HTTP状态503(暂时不可用),短消息链接到可接受的使用页面,或者向人们解释为什么他们可能被阻止的一些原因如果他们觉得他们被不公平地阻挡了该怎么办您可能希望以text / plain而不是HTML来执行此操作,因为它将使用更少的字节:)
当您拥有大量被阻止的地址(例如100万)时,使用内存中的被阻止IP列表也会中断,因为扫描它变得过高(请记住,您需要对相关资源的每个请求执行此操作)。 / p>
最终,您需要一种方法将阻止的IP列表分发到您的所有Web服务器和/或将其保持集中 - 具体取决于您正在获得或预期的滥用类型。
话虽如此,你绝对应该采用YAGNI原则。如果您没有遇到真正的容量问题,请不要打扰滥用者。实际上很少有网站会这样做,而且大多数网站都是与运营网站相关的成本相关的事情(例如谷歌搜索)