【问题标题】:What is the best practice for blocking IPs?阻止 IP 的最佳做法是什么?
【发布时间】:2015-07-01 00:17:39
【问题描述】:

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

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

  2. 我在Tomcat上阅读了Valves,我用这种方式进行了测试,但是如果IP数量将大于1000或大于10000?在每个添加过程之后,我必须重新启动 tomcat。这也不是那么可爱。

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

最好的方法是什么?

【问题讨论】:

    标签: java tomcat server


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      有 3 个选项可用:

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

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

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

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

      注意:攻击者总是可以使用 Tor“隐藏”他们的真实 IP。因此,您不应相信攻击者将始终使用唯一的 IP。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多