我有一个在Tomcat 7服务器上运行的应用程序Java。哪些机器人尝试我的网络应用程序和#34;吃"资源。我应该在哪个级别阻止这些机器人的IP?
我认为在应用程序级别上它并不是一个好主意,但在这种情况下我可以动态添加新的阻止IP。
我在Tomcat上读到了关于阀门的问题,我测试了这种方式,但是如果IP的数量大于1000或大于10000?每次添加程序后我都必须重启tomcat。这也不是那么可爱。
最好的方法是什么?
答案 0 :(得分:2)
我应该在哪个级别阻止这些机器人的IP?
在防火墙级别。例如,使用IPtables或外部防火墙。
在应用程序(或Tomcat堆栈)中阻止意味着您的seb服务器代码在决定关闭它们之前必须接受不需要的连接。比这更早地过滤掉数据包要高效得多。它可以节省系统资源,更好地抵御DoS攻击。
还有一种方法 - 服务器防火墙 - 但在这种情况下我无法动态添加IP,我认为在这种情况下我无法为403错误制作自定义页面。
您可以快速更新基于IPtables的防火墙。
你不应该给那些人一个403.如果你决定阻止它们,可能是因为他们忽略了你的“robots.txt”和/或做其他反社会的事情。他们值得 403响应。只是“黑洞”他们的连接尝试。
您还可以考虑在网络交换机中实现数据包过滤,但我不知道在运行中添加/删除数据块的可行性。
答案 1 :(得分:1)
我应该在哪个级别阻止这些机器人的IP?
有3种选择:
首先,我相信第二个选择是应该避免的全部费用。应用程序应该与安全无关,因为有许多方法可以从外部保护应用程序。
关于建议1和3,防火墙保护的优势在于IP甚至在到达服务器之前就会被阻止,从而为您的环境提供更高的安全性。另一方面,防火墙中的IP阻塞只能通过使用自定义shell脚本来动态,这可以证明是非常困难的。
另一方面,如果你在tomcat前添加一个Apache作为web服务器,你可以使用已经开发的模块(如mod_security) ,提供大量的攻击防范,允许您自定义特定的安全规则。您甚至可以利用GeoIP Legacy Apache Module之类的模块来阻止来自特定国家/地区的DOS。
注意:攻击者总是可以隐藏"他们真正的IP,使用Tor。因此,您不应该相信攻击者总是会使用唯一的IP。