2

我计划在公共 Web 上的 Amazon 上的 JBoss 6 上部署一个 EAR 应用程序。我将需要多个实例,但我不需要集群,ELB 可以在我的情况下完成它的工作。在应用程序的开发过程中已经考虑了 OWASP 安全指南。但是,我对 OWASP 的一个原则有疑问:默默无闻的安全性。

如何隐藏我正在使用 JBoss 的事实?我有自定义错误页面,ELB 只允许访问我的应用程序的上下文路径,但是,如果 JBoss 显示任何特定于 JBoss 的标头,我会担心。在每个实例中使用 mod_jk 或 mod_proxy_ajp 将 Apache 放在 JBoss 前面是否更安全,只是为了转发请求(如果不必要,这是我想避免的事情)?

问候

4

3 回答 3

2

默默无闻的安全原则并不意味着您应该尝试隐藏事物。其实,意思正好相反。请不要依赖隐藏敏感信息,因为它不会真正减慢攻击者的速度,并且会产生虚假的安全感。

典型 JBoss 安装的巨大攻击面意味着攻击者很可能会弄清楚您正在运行什么。多年来,有许多“产品”声称使用隐藏标头等技术隐藏您正在使用的技术的身份。然而,攻击者通常需要做的就是删除 URL 上的一些参数以获得完整的堆栈跟踪,该堆栈跟踪提供了足够的详细信息来确定产品、库、版本等......

使用这种技术,您可能会甩掉一些较弱的自动扫描仪,但不会甩掉真正针对您的任何人。原则很好,但它们对解释非常开放,而且经常相互矛盾。最好专注于根据 OWASP 应用程序安全验证标准 (ASVS) 验证您的应用程序。

于 2011-05-18T01:05:20.823 回答
2

我找到了解决方案。

此链接说明如何删除 JBoss 特定标头。

也可以按照此处此处的说明删除 Tomcat 特定的标头。

问候

于 2011-05-18T09:19:42.783 回答
1

如何隐藏我正在使用 JBoss 的事实?

假设 JBoss 发送类似的响应标头Server: JBoss v1.2.3.4,您可以编写一个Filter映射到所有请求的映射,该请求用您选择的任意文本覆盖此值,例如:

public class StripHeaderFilter implements Filter {
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
        // process the rest of the chain first
        filter.doFilter(request, response);
        if (response instanceof HttpServletResponse) {
            ((HttpServletResponse) response).setHeader("Server", "It's a secret");
        }
    }
于 2011-05-18T00:32:55.160 回答