WebLogic简介:
一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
Weblogic部署安全加固大致步骤:
①、删除开发与示例程序:开发与示例程序是Weblogic用于指导开发的文档,正式环境中应该移除,避免被攻击者利用。
②、加密传输敏感信息:使用未加密的协议进行信息传输无法避免网络嗅探的发生,传输敏感信息如身份认证信息,使用SSL可以保障信息传输的安全性。
③、对SSL进行保护:通常SSL协议并不能抵抗中间人攻击的发生,通过启用主机名校验,可以有效确认信息发送方的身份,避免了中间人攻击的发生。
登录weblogic控制台,通常是“http://服务器IP:7001/console”,然后找到以下项目Server->server name->Connections->SSL,查看是否已禁用”Hostname Verification Ignored”。
④、账号与密码:通过定义密码的最短长度,密码的失败登录尝试等密码策略可以有效的保护密码安全:
a.登录控制台后查看“Security Realms”选项,选择应用使用的realm名字(默认是myrealm)
b.查看“User Lockout”选项的如下属性是否已经设置:
Lockout Threshold(失败尝试次数)
Lockout Duration(帐号锁定时间)
Lockout Reset Duration(失败尝试时间)
帐号锁定缓存
c.系统最短口令长度(MinimumPassword Length)
d.禁用Guest用户
e.配置weblogic的console的自动注
⑤、Banner:默认当weblogic实例响应http请求的时候会发送包含自身版本信息的响应,这可能会增加服务器受攻击的威胁。
登录控制台后查看“Server->server name->Connections->HTTP”选项,查看是否已禁用”Send Server Header Enabled”属性。
⑥、禁止非授权用户和组对weblogic 根目录和下级目录的写和执行权限。
⑥、设置weblogic日志文件的访问权限:应只允许管理员具有访问权限。
⑧、设置SerializedSystemIni.dat 密码文件的权限:应只允许系统管理员具有读写权限。
⑨、审计配置:a.开启审计功能。b.定制日志的严重度,使weblogic在用户更改域中资源的配置或调用域中资源的管理操作时发出日志消息并生成审核事件。c.修改weblogic 日志的存放路径保证日志存放的地点的安全可靠。
启用 WebLogic Server 域之间的信任:
在启用 WebLogic Server 域之间的信任后,会将服务器暴露于中间人攻击之下。因此,在启用生产环境中的信任时应十分谨慎。BEA 建议使用强网络安全,例如使用专用通信通道或由强防火墙提供保护。
建立域之间的信任关系,是为了使一个 WebLogic Server 域的主题中的委托人作为另一个域的委托人被接受。启用此功能后,将通过 RMI 连接在 WebLogic Server 域之间传递标识,而无需在第二个域中进行身份验证(例如,以 Joe 的身份登录到域 1 中,当对域 2 进行 RMI 调用时,仍会对 Joe 进行身份验证)。启用内部域信任后,事务可跨越域提交。当一个域的域凭据与另一个域的域凭据相匹配时,就会建立信任关系。
但是启用 WebLogic Server 域之间的信任时注意:
①、由于域将信任远程委托人而不会要求进行身份验证,因此,域中可以具有未在域的身份验证数据库中定义的已通过身份验证的用户。此情况可导致出现授权问题。
②、域中任何已通过身份验证的用户均可以访问与原始域之间启用信任的任何其他域,而无需重新进行身份验证。进行此类登录时,将不会进行审核,也不会对组成员资格进行验证。因此,如果 Joe 是对其进行身份验证的原始域中的管理员组成员,则当他对所有可信域进行 RMI 调用时,他将自动成为这些域的管理员组成员。
③、如果域 2 信任域 1 和域 3,则现在域 1 和域 3 将隐式信任对方。因此,域 1中的管理员组成员将成为域 3 中的管理员组成员。这可能不是所需的信任关系。
④、如果扩展 WLSUser 和 WLSGroup 委托人类,则必须在共享信任的所有域的服务器类路径中安装自定义委托人类。
使用连接筛选器:
连接筛选器介绍:首先连接筛选器允许拒绝网络级别的访问。它们可以用于保护各个服务器、服务器群集或整个内部网或企业内部网上的服务器资源。例如,可以拒绝任何来自公司网络外部的非 SSL 连接。网络连接筛选器是一种防火墙,可以将它们配置为基于协议、IP 地址和 DNS 节点名进行筛选。
根据网络防火墙的配置,也许可以使用连接筛选器进一步限制管理访问。一种典型的用法是,限制仅域中的服务器和计算机拥有对管理端口的访问权限。攻击者即使可以访问位于防火墙内的计算机,仍无法执行管理操作,除非攻击者的计算机已被授予访问权限。
WebLogic Server 提供了名为weblogic.security.NET.ConnectionFilterImpl 的默认连接筛选器。此连接筛选器接受所有传入连接,同时还提供了一些静态工厂方法,使服务器可以获取当前的连接筛选器。要将此连接筛选器配置为拒绝访问,只需在 WebLogic 管理控制台中输入连接筛选器规则即可。也可以通过实现 weblogic.security.Net 包中的类来使用自定义连接筛选器。要配置连接筛选器,请执行下列操作:
①、启用对已接受消息的日志记录。此“已启用连接记录器”选项将记录服务器中的成功连接和连接数据。可以使用这些信息调试与服务器连接有关的问题。
②、选择要在域中使用的连接筛选器。要配置默认连接筛选器,请在“连接筛选器”中指定 weblogic.security.net.ConnectionFilterImpl。要配置自定义连接筛选器,请在“连接筛选器”中指定实现网络连接筛选器的类。此外,还必须在 WebLogic Server 的 CLASSPATH 中指定该类。
③、输入连接筛选器规则的语法。
使用Java容器授权合同:
Java 容器授权合同(Java Authorization Contract for Containers,简称 JACC)标准可以替换 WebLogic Server 提供的 EJB 和 Servlet 容器部署和授权。在将 WebLogic Server 域配置为使用 JACC 时,EJB 和 Servlet 授权决策将通过 JACC 框架中的类做出。WebLogic Server 中的所有其他授权决策仍将由 WebLogic 安全框架决定。
在域中的管理服务器和所有受管服务器都需要使用相同的 JACC 配置。如果在管理服务器上更改 JACC 设置,则应关闭受管服务器并使用与管理服务器相同的设置重新引导它们,以免出现安全漏洞。否则,域中的 EJB 和 Servlet 似乎受到 WebLogic 安全框架角色和策略的保护,但实际上,受管服务器仍在 JACC 下操作。
查看MBean的特性:
“已启用匿名 Admin 查找”选项指定是否允许从 MBean API 对 WebLogic Server MBean 进行匿名只读访问。通过此匿名访问,可以查看未显式标记为受 Weblogic Server MBean 授权过程保护的任何 MBean 特性的值。默认情况下启用此选项,以确保实现向后兼容性。要获得更高的安全性,应禁用此匿名访问。
WebLogic Server中的密码保护方式:
对用于访问 WebLogic Server 域中的资源的密码进行保护。过去,用户名和密码都以明文形式存储在 WebLogic 安全领域中。现在,WebLogic Server 域中的所有密码都经过散列处理。SerializedSystemIni.dat 文件包含密码的散列。它与特定的 WebLogic Server 域关联,因此不能在域之间移动。如果 SerializedSystemIni.dat 文件被破坏或受损,则必须重新配置 WebLogic Server 域。因此,应采取以下防范措施:
①、制作 SerializedSystemIni.dat 文件的备份副本并将其置于安全的位置。
②、设置 SerializedSystemIni.dat 文件上的权限,使 WebLogic Server 部署的系统 管理员具有读写权限,而其他用户均不具有任何权限。
保护用户账户:
WebLogic Server 定义了一组可保护用户帐户免受入侵者攻击的配置选项。在默认的安全配置中,这些选项被设置为最高的保护级别。可以使用管理控制台在“配置: 用户锁定”页上修改这些选项。系统管理员可以选择执行下列操作(更改这些配置选项会降低安全性,使用户帐户更易于受到安全攻击):
①、关闭所有配置选项;
②、增加在锁定用户帐户前的登录尝试次数;
③、延长在锁定用户帐户前进行无效登录尝试的时间段;
④、更改锁定用户帐户的时间长度。
可以使用两组配置选项来保护用户帐户,一组在域级别设置,另一组在安全领域级别设置。用户可能会注意到,如果在设置一组配置选项(例如,针对安全领域的选项)后超过其中任何一个值,将不会锁定用户帐户。发生这种情况是因为,域级别的用户帐户锁定选项替换了安全领域级别的用户帐户选项。要避免出现这种情况,请禁用安全领域级别的用户帐户锁定选项。
警告:如果禁用安全领域级别的用户锁定配置选项,必须设置域上的用户锁定配置选项,否则,用户帐户将失去保护。
配置领域适配器身份验证提供程序:
在使用兼容性安全时,默认将为 CompatibilityRealm 配置一个领域适配器身份验证提供程序。允许在此版本的 WebLogic Server 中使用 weblogic.security.acl.CertAuthenticator 类的实现。包含一个标识声明提供程序,用于基于 X.509 标记声明标识。
在向已配置身份验证提供程序的安全领域中添加领域适配器身份验证提供程序时,WebLogic Server 会将该领域适配器身份验证提供程序上的 JAAS 控制标志设置为 OPTIONAL 并在域目录中检查是否存在fileRealm.properties 文件。如果文件不存在,则 WebLogic Server 不会将该领域适配器身份验证提供程序添加到安全领域中。
由领域适配器身份验证提供程序生成的主题不包含用户所属组的委托人。应使用 weblogic.security.SubjectUtils.isUserInGroup() 方法来确定用户是否属于某个组。当使用由领域适配器身份验证提供程序生成的主题时,将无法迭代用户所属的组的整个集合。