我有一个在 Tomcat 7 服务器上运行的应用程序 Java。哪里有许多尝试我的网络应用程序并“吃掉”资源的机器人。我应该在哪个级别阻止这些机器人的 IP?
我认为在应用程序级别这不是一个好主意,但在这种情况下我可以动态添加新的阻止 IP。
我阅读了有关 Tomcat 上的 Valves 的信息,并以这种方式进行了测试,但是 IP 的数量是否会大于 1000 或大于 10000?在每次添加程序后,我都必须重新启动 tomcat。这也不是那么可爱。
- 还有另一种方法 - 服务器防火墙 - 但在这种情况下我无法动态添加 IP,而且我认为在这种情况下我无法为 403 错误创建自定义页面。
什么是最好的方法?
最佳答案
On which level should I block IP of these bots?
在防火墙级别。例如,使用 IPtables 或外部防火墙。
在应用程序内(或在 Tomcat 堆栈中)阻塞意味着您的 seb 服务器代码在决定关闭它们之前必须接受不需要的连接。比这早得多地过滤掉数据包效率要高得多。节省系统资源,更能抵御DoS攻击。
Where is one more way - server firewall - but in this case I can't add dynamically IP, and I think I can't make custom page for 403 error in this case.
您可以即时、快速地更新基于 IPtables 的防火墙。
你不应该给那些人一个 403。如果你决定阻止他们,大概是因为他们忽略了你的“robots.txt”和/或做其他反社会的事情。他们不值得 403 响应。只是“黑洞”他们的连接尝试。
您还可以考虑在您的网络交换机中实现数据包过滤,但我不知道即时添加/删除 block 是否可行。
关于java - 阻止 IP 的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31140695/