阻止IP的最佳做法是什么?

时间:2015-06-30 14:11:44

标签: java tomcat server

我有一个在Tomcat 7服务器上运行的应用程序Java。哪些机器人尝试我的网络应用程序和#34;吃"资源。我应该在哪个级别阻止这些机器人的IP?

  1. 我认为在应用程序级别上它并不是一个好主意,但在这种情况下我可以动态添加新的阻止IP。

  2. 我在Tomcat上读到了关于阀门的问题,我测试了这种方式,但是如果IP的数量大于1000或大于10000?每次添加程序后我都必须重启tomcat。这也不是那么可爱。

  3. 还有一种方法 - 服务器防火墙 - 但在这种情况下,我无法动态添加IP,我认为在这种情况下我无法为403错误制作自定义页面。
  4. 最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

  

我应该在哪个级别阻止这些机器人的IP?

在防火墙级别。例如,使用IPtables或外部防火墙。

在应用程序(或Tomcat堆栈)中阻止意味着您的seb服务器代码在决定关闭它们之前必须接受不需要的连接。比这更早地过滤掉数据包要高效得多。它可以节省系统资源,更好地抵御DoS攻击。

  

还有一种方法 - 服务器防火墙 - 但在这种情况下我无法动态添加IP,我认为在这种情况下我无法为403错误制作自定义页面。

您可以快速更新基于IPtables的防火墙。

你不应该给那些人一个403.如果你决定阻止它们,可能是因为他们忽略了你的“robots.txt”和/或做其他反社会的事情。他们值得 403响应。只是“黑洞”他们的连接尝试。

您还可以考虑在网络交换机中实现数据包过滤,但我不知道在运行中添加/删除数据块的可行性。

答案 1 :(得分:1)

  

我应该在哪个级别阻止这些机器人的IP?

有3种选择:

  • 阻止防火墙级别
  • 在应用程序级别阻止
  • 在服务器级别(应用程序服务器 - Tomcat或Web服务器 - Apache)中阻止

首先,我相信第二个选择是应该避免的全部费用。应用程序应该与安全无关,因为有许多方法可以从外部保护应用程序。

关于建议1和3,防火墙保护的优势在于IP甚至在到达服务器之前就会被阻止,从而为您的环境提供更高的安全性。另一方面,防火墙中的IP阻塞只能通过使用自定义shell脚本来动态,这可以证明是非常困难的。

另一方面,如果你在tomcat前添加一个Apache作为web服务器你可以使用已经开发的模块(如mod_security) ,提供大量的攻击防范,允许您自定义特定的安全规则。您甚至可以利用GeoIP Legacy Apache Module之类的模块来阻止来自特定国家/地区的DOS。

注意:攻击者总是可以隐藏"他们真正的IP,使用Tor。因此,您不应该相信攻击者总是会使用唯一的IP。