各种权限(甚至包括 Administrator 权限),同时仍然确保他们无法将这些权限再授予他人。
Auditor:(V7 中增加的)具有此角色的用户可以配置审计系统,但是没有其他任何权限。另一方面,Administrator 可以配置除审计系统之外的任何东西。这提供明确的职责分隔。Administrator 可以更改配置,但是无法 “掩盖” 操作痕迹,因为他无法禁用审计。
这一项不适用于 V8.5 中的 Liberty 配置文件。Liberty 配置文件只有一个管理员安全角色可绑定多个主体。
26. 考虑加密 Web 服务器到 Web 容器的链接
即使不对从 Web 服务器到 Web 容器的链接进行身份验证,也可能希望考虑对它进行加密。Web 服务器插件通过 HTTP 把来自 Web 服务器的信息传输到 Web 容器。如果到达 Web 服务器的请求使用的是 HTTPS,那么在默认情况下插件使用 HTTPS 转发请求。如果到达的请求使用的是 HTTP,那么插件使用 HTTP。这些默认行为对于大多数环境是合适的。但是,有一种例外情况。
在某些环境中,当请求到达您的网络之后,就会在其中添加敏感信息。例如,一些身份验证代理服务器(比如 WebSEAL)会在请求中添加密码信息。Web 服务器中的自定义代码可能做相似的事情。如果是这种情况,应该采取额外步骤保护从 Web 服务器到 Web 容器的通信流。要想迫使从此插件发出的所有通信流都使用 HTTPS,只需在每个应用服务器上的 Web 容器中禁用 HTTP 传输,然后重新生成和部署插件。必须同时禁用 WCInboundDefault 和 HttpQueueInboundDefault 传输链(图 12)。现在,此插件只能使用 HTTPS,所以无论通信流如何到达 Web 服务器,它都会使用 HTTPS 执行转发。
图 12. 确保只使用 HTTPS
要在 Liberty 配置文件中确保仅使用 HTTPS 连接 Web 容器,可将一个 httpEndpoint 元素包含在服务器的 server.xml 文件中,该文件还包含一个 httpsPort 属性,但不包含 httpPort 属性(如清单 6 中的示例所示)。
清单 6. 在 Liberty 中确保仅使用 HTTP 连接到 Web 容器
1 2 |
<httpEndpoint id=”defaultHttpEndpoint” host=”localhost” httpsPort=”9443″ /> |
27. 加密 WebSphere MQ 消息传递链接
如果您使用的是 WebSphere MQ 而非默认的消息传递提供者,当然应该对 WebSphere MQ 使用 SSL。有关这一点的更多信息,请参阅 参考资料。在 WebSphere Application Server V7 中,WebSphere MQ 客户端 SSL 配置是第一类构造,可以像其他 SSL 配置一样通过管理控制台设置。
这一项不适用于 V8.5 中的 Liberty 配置文件。
28. 加密 Distribution and Consistency Services (DCS) 传输链接
核心组依赖于 DCS,它使用可靠的多播消息 (RMM) 系统来进行传输。RMM 可以使用几种有线传输技术之一。根据环境不同,可以通过 DCS 传输敏感信息。例如,使用 DCS 传输 DynaCache 和安全性主题缓存中的数据。为了确保这一点,需要选择一种通道框架传输类型,并选择 DCS-Secure 作为每个核心组的通道链(图 13)。
图 13. 配置 DCS 以使用受保护的链接
请注意,当启用全局安全性时,DCS 始终对消息进行身份验证。在加密传输之后,就有了一个高度安全的通道。
一旦做到这一点,所有依赖于 DCS 的服务都将使用加密且经过身份验证的传输。这些服务是 DynaCache、内存到内存会话复制、核心组、Web 服务缓存和有状态会话 bean 持久化。
29. 保护从应用服务器到数据库的链接
与其他任何网络链接一样,可以将机密信息写入数据库或从数据库中读取机密信息。大多数数据库都支持某种形式的身份验证,您应该利用这一点。
这里是一个 IBM DB2 示例。
这一项不适用于 V8.5 中的 Liberty 配置文件。
30. 考虑将 cookie 限制为 HTTP Only
如果黑客能够通过在浏览器中插入恶意的 JavaScript 攻破 Web 应用程序(这通常称为跨站点脚本攻击),就可以执行许多恶意操作,应用程序实际上完全被攻破了。他们可以执行的恶意操作之一是窃取 LTPA cookie 等敏感的 cookie。大多数现代 Web 浏览器都支持 HTTP Only 概念。
WebSphere Application Server 提供了两种确保 LTPA cookie 被标记为 HTTP Only 的方法。第一种方法是将安全性自定义属性 com.ibm.ws.security.addHttpOnlyAttributeToCookies 设置为 true。此功能通过修复包 7.0.0.9 添加。
该功能只使用 HTTP Only 标志保护 LTPA cookie。对于以正确方式编写的使用 Java EE 安全性并启用会话安全性(稍后讨论)的应用程序,这应该足够用了。
第二个功能(也在修复包 7.0.0.9 中发布)支持在任意 cookie 上设置 HTTP Only 标志。此功能比第一个功能更可取,因为它更加灵活且更加完整。借助此 APAR,要保护的 cookie 由一个 Web 容器属性 com.ibm.ws.webcontainer.httpOnlyCookies 控制。该属性是要保护的 cookie 的一个逗号分隔列表(使用 * 表示所有 cookie)。在 V7.0 中(应用了 7.0.0.9),这个功能默认情况下是禁用的。要使用它,则必须显式设置该属性。在 8.0 和 8.5 版中,此属性默认情况下已对 LtpaToken2、JSESSIONID 和 WASReqUrl cookie 启用,无需执行进一步的操作,除非您希望将它应用于其他 cookie。请注意,由于默认行为中的这一更改,从更早版本迁移来的用户可能会遇到应用程序破坏问题。
默认情况下,LtpaToken2 (SSO) 和e WASReqURL cooki 在 Liberty 配置文件中设置为 HTTP only。要在服务器的 server.xml 文件中显式设置此属性,可以包含一个具有 httpOnlyCookies 属性的 webAppSecurity 元素,比如清单 7 中的示例。
清单 7. 在 Liberty 中将 LTPA 会话 cookie 限制为 HTTP Only
1 | <webAppSecurity httpOnlyCookies=’true’ /><!- – This is the default- -> |
默认情况下,HTTP 会话在 Liberty 配置文件中也被设置为 HTTP only。要在服务器的 server.xml 中显式设置此属性,可以包含一个具有 cookieHttpOnly 属性的 httpSession 元素,比如清单 8 中的示例。
清单 8. 在 Liberty 中将 HTTP 会话 cookie 限制为 HTTP Only
1 | <httpSession cookieHttpOnly=’true’ /><!- – This is the default- -> |
警告:尽管这些功能看起来是防御跨站点脚本攻击的解决方案,但它不是。如果黑客可以在您的浏览器中执行任意代码,那么他们造成的危害就远远不只是窃取 cookie。他们实际上可以看到浏览器屏幕上的所有内容,可以捕获每次击键,这比窃取 cookie 严重得多。
31. 通过培训让用户正确地理解证书警告
当使用 SSL 进行通信时,安全地交换信息的关键之一是根据客户端信任存储库检验服务器的证书。如果由于信任存储库中没有相应的签署者而导致服务器提供的证书不可信,那么大多数客户端(Web 浏览器、SSH、wsadmin 等)会提示用户决定应该怎么做。这些客户端通常会向用户警告这是一个未知的证书,并提供证书的指纹(通常是 SHA),询问 should I trust this?。遗憾的是,大多数用户会盲目地单击 yes。这是一个可怕的决定。如果这么做,那么您就不会知道自己将与什么样的服务器通信。对于 WebSphere Application Server 管理客户端,下一步是将管理用户 ID 和密码发送到未知的服务器。
相反,管理员应该检查指纹信息,判断它是否是正确的指纹(理想情况下最终用户也应该这么做)。管理工具提供了查看证书指纹的方法。在管理控制台中选择一个个人证书,显示它的指纹。
图 14. 证书指纹
用户(尤其是管理员)应该了解指纹信息,当客户端(无论是 Web 浏览器,参见图 15 和图 16,还是 wsadmin,参见清单 9)。
图 15. Web 服务器证书警告,第一部分
图 16. Web 服务器证书警告,第二部分
以下文章点击率最高
Loading…