以下部分描述如何设置 WebLogic 域的安全配置选项:

注意: 上述部分适用于使用此版本的 WebLogic Server 中的安全功能的 WebLogic Server 部署以及使用兼容性安全的部署。

 


启用 WebLogic Server 域之间的信任

注意: 在启用 WebLogic Server 域之间的信任后,会将服务器暴露于中间人攻击之下。因此,在启用生产环境中的信任时应十分谨慎。BEA 建议使用强网络安全,例如使用专用通信通道或由强防火墙提供保护。

建立域之间的信任关系,是为了使一个 WebLogic Server 域的主题中的委托人作为另一个域的委托人被接受。启用此功能后,将通过 RMI 连接在 WebLogic Server 域之间传递标识,而无需在第二个域中进行身份验证(例如,以 Joe 的身份登录到域 1 中,当对域 2 进行 RMI 调用时,仍会对 Joe 进行身份验证)。启用内部域信任后,事务可跨越域提交。当一个域的域凭据与另一个域的域凭据相匹配时,就会建立信任关系。

默认情况下,域凭据是在首次启动 WebLogic Server 域时随机创建的。此过程可以确保,在默认情况下不会存在使用同一凭据的两个 WebLogic Server 域。要启用两个 WebLogic Server 域之间的信任,必须为这两个 WebLogic Server 域中的凭据显式指定相同的值。在管理控制台中,使用“域”节点下的“安全 : 高级”页上的配置选项可以设置域凭据。在“凭据”和“确认凭据”字段中,请使用为每个域指定的相同凭据替换随机凭据。

在创建委托人时,WebLogic Server 将使用域凭据对委托人进行签名。当从远程源收到主题时,将对其委托人进行验证(将重新创建签名,如果签名匹配,则表明远程域具有相同的域凭据)。如果验证失败,将生成错误。如果验证成功,将信任这些委托人,就如同他们是本地创建的一样。

注意: 下次将 config.xml 文件持久保存到磁盘时,任何采用明文形式的凭据都将被加密。

如果需要 WebLogic Server 6.x 域与其他 WebLogic Server 域进行互操作,请将 WebLogic Server 域中的域凭据更改为 WebLogic Server 6.x 域中的 system 用户的密码。

如果要在受管服务器环境中启用域之间的信任,必须停止两个域中的管理服务器和所有受管服务器,然后重新启动它们。如果不执行此步骤,未重新引导的服务器将不会信任已重新引导的服务器。

在启用 WebLogic Server 域之间的信任时,请记住以下几点:

  •  由于域将信任远程委托人而不会要求进行身份验证,因此,域中可以具有未在域的身份验证数据库中定义的已通过身份验证的用户。此情况可导致出现授权问题。
  •  域中任何已通过身份验证的用户均可以访问与原始域之间启用信任的任何其他域,而无需重新进行身份验证。进行此类登录时,将不会进行审核,也不会对组成员资格进行验证。因此,如果 Joe 是对其进行身份验证的原始域中的管理员组成员,则当他对所有可信域进行 RMI 调用时,他将自动成为这些域的管理员组成员。
  •  如果域 2 信任域 1 和域 3,则现在域 1 和域 3 将隐式信任对方。因此,域 1 中的管理员组成员将成为域 3 中的管理员组成员。这可能不是所需的信任关系。
  •  如果扩展 WLSUser 和 WLSGroup 委托人类,则必须在共享信任的所有域的服务器类路径中安装自定义委托人类。

请参阅“管理控制台联机帮助”中的启用域之间的信任关系

注意: 也可以使用 WebLogic 脚本工具或 Java 管理扩展(Java Management Extensions,简称 JMX)API 来修改安全配置。

 


使用连接筛选器

连接筛选器允许拒绝网络级别的访问。它们可以用于保护各个服务器、服务器群集或整个内部网或企业内部网上的服务器资源。例如,可以拒绝任何来自公司网络外部的非 SSL 连接。网络连接筛选器是一种防火墙,可以将它们配置为基于协议、IP 地址和 DNS 节点名进行筛选。

在使用管理端口时,连接筛选器尤为有用。根据网络防火墙的配置,也许可以使用连接筛选器进一步限制管理访问。一种典型的用法是,限制仅域中的服务器和计算机拥有对管理端口的访问权限。攻击者即使可以访问位于防火墙内的计算机,仍无法执行管理操作,除非攻击者的计算机已被授予访问权限。

WebLogic Server 提供了名为 weblogic.security.net.ConnectionFilterImpl 的默认连接筛选器。此连接筛选器接受所有传入连接,同时还提供了一些静态工厂方法,使服务器可以获取当前的连接筛选器。要将此连接筛选器配置为拒绝访问,只需在 WebLogic 管理控制台中输入连接筛选器规则即可。

也可以通过实现 weblogic.security.net 包中的类来使用自定义连接筛选器。有关编写连接筛选器的信息,请参阅“WebLogic 安全性编程”中的使用网络连接筛选器。与默认连接筛选器相同,自定义连接筛选器也在 WebLogic 管理控制台中配置。

要配置连接筛选器,请执行下列操作:

  1.  启用对已接受消息的日志记录。此“已启用连接记录器”选项将记录服务器中的成功连接和连接数据。可以使用这些信息调试与服务器连接有关的问题。
  2.  选择要在域中使用的连接筛选器。
    •  要配置默认连接筛选器,请在“连接筛选器”中指定 weblogic.security.net.ConnectionFilterImpl
    •  要配置自定义连接筛选器,请在“连接筛选器”中指定实现网络连接筛选器的类。此外,还必须在 WebLogic Server 的 CLASSPATH 中指定该类。
  3.  输入连接筛选器规则的语法。

有关详细信息,请参阅:

 


使用 Java 容器授权合同

Java 容器授权合同(Java Authorization Contract for Containers,简称 JACC)标准可以替换 WebLogic Server 提供的 EJB 和 Servlet 容器部署和授权。在将 WebLogic Server 域配置为使用 JACC 时,EJB 和 Servlet 授权决策将通过 JACC 框架中的类做出。WebLogic Server 中的所有其他授权决策仍将由 WebLogic 安全框架决定。有关 WebLogic JACC 提供程序的信息,请参阅“WebLogic 安全性编程”中的使用 Java 容器授权合同

可以将 WebLogic Server 配置为结合使用 JACC 和命令行启动选项。有关详细信息,请参阅 weblogic.Server 命令行参考中对 -Djava.security.manager 选项的描述。

请注意,域中的管理服务器和所有受管服务器都需要使用相同的 JACC 配置。如果在管理服务器上更改 JACC 设置,则应关闭受管服务器并使用与管理服务器相同的设置重新引导它们,以免出现安全漏洞。否则,域中的 EJB 和 Servlet 似乎受到 WebLogic 安全框架角色和策略的保护,但实际上,受管服务器仍在 JACC 下操作。

 


查看 MBean 特性

“已启用匿名 Admin 查找”选项指定是否允许从 MBean API 对 WebLogic Server MBean 进行匿名只读访问。通过此匿名访问,可以查看未显式标记为受 Weblogic Server MBean 授权过程保护的任何 MBean 特性的值。默认情况下启用此选项,以确保实现向后兼容性。要获得更高的安全性,应禁用此匿名访问。

要通过 WebLogic 管理控制台验证“已启用匿名 Admin 查找”选项的设置,请查看管理控制台中的“域: 安全: 常规”页或 SecurityConfigurationMBean.AnonymousAdminLookupEnabled 特性。

 


WebLogic Server 中的密码保护方式

对用于访问 WebLogic Server 域中的资源的密码进行保护是一项十分重要的任务。过去,用户名和密码都以明文形式存储在 WebLogic 安全领域中。现在,WebLogic Server 域中的所有密码都经过散列处理。SerializedSystemIni.dat 文件包含密码的散列。它与特定的 WebLogic Server 域关联,因此不能在域之间移动。

如果 SerializedSystemIni.dat 文件被破坏或受损,则必须重新配置 WebLogic Server 域。因此,应采取以下防范措施:

  •  制作 SerializedSystemIni.dat 文件的备份副本并将其置于安全的位置。
  •  设置 SerializedSystemIni.dat 文件上的权限,使 WebLogic Server 部署的系统管理员具有读写权限,而其他用户均不具有任何权限。

 


保护用户帐户

WebLogic Server 定义了一组可保护用户帐户免受入侵者攻击的配置选项。在默认的安全配置中,这些选项被设置为最高的保护级别。可以使用管理控制台在“配置: 用户锁定”页上修改这些选项。

系统管理员可以选择执行下列操作:关闭所有配置选项;增加在锁定用户帐户前的登录尝试次数;延长在锁定用户帐户前进行无效登录尝试的时间段;更改锁定用户帐户的时间长度。请记住,更改这些配置选项会降低安全性,使用户帐户更易于受到安全攻击。请参阅“管理控制台联机帮助”中的设置用户锁定特性

注意: 用户锁定选项适用于默认安全领域及其所有安全提供程序,但不能用于默认安全领域之外的安全领域中的自定义安全提供程序。要将用户锁定选项用于自定义安全提供程序,应在默认安全领域中配置该自定义安全提供程序。在身份验证过程中,应将自定义提供程序包括在 WebLogic 身份验证提供程序和 WebLogic 标识声明提供程序之后。此顺序可能会对性能产生较小的影响。
注意: 如果要使用的身份验证提供程序将通过其自身的机制来保护用户帐户,请禁用“已启用锁定”。
注意: 如果在某用户帐户变为锁定状态后将其删除,然后添加另一个使用同一名称和密码的用户帐户,将不会重置用户锁定配置选项。

有关在管理控制台上对已锁定用户帐户取消锁定的信息,请参阅“管理控制台联机帮助”中的解除对用户帐户的锁定。无法通过 WebLogic 管理控制台对受管服务器上的已锁定用户帐户执行取消锁定操作。取消锁定信息将通过仅在群集环境中配置的多播消息进行传播。请改用下列命令:

java weblogic.Admin -url url -username adminuser 
-password passwordforadminuser -type weblogic.mangement.security.authentication.UserLockoutManager -method clearLockout lockedusername

也可以等待在“锁定持续时间”特性中指定的时间:用户帐户将在经过指定的时间后取消锁定。

运行兼容性安全:主要步骤

要设置兼容性安全,请执行下列操作:

  1.  使用兼容性安全之前制作 6.x WebLogic 域(包括 config.xml 文件)的备份副本。
  2.  如果 6.x config.xml 文件中不存在以下内容,请添加此内容,同时将其中的值替换为域、安全领域和 FileRealm 的实际名称:

    <Security Name="mydomain" Realm="mysecurity"/>
    <Realm Name=
    "mysecurity" FileRealm="myrealm"/>
    <FileRealm Name="
    myrealm"/>

  3.  将当前版本的 WebLogic Server 安装在一个新的目录位置。不要覆盖现有的 6.x 安装目录。有关详细信息,请参阅Installation Guide
  4.  将 6.x 服务器的启动脚本修改为指向新的 WebLogic Server 安装。具体来说,需要修改以下内容:
    •  将类路径修改为指向新的 WebLogic Server 安装中的 weblogic.jar 文件。
    •  将 The JAVA_HOME 变量修改为指向新的 WebLogic Server 安装。
  5.  使用 6.x 服务器的启动脚本来引导新版本的 WebLogic Server。

要验证兼容性安全的运行是否正确,请打开新的 WebLogic Server 管理控制台。如果正在运行兼容性安全,则“域结构”窗格的左侧将显示“兼容性安全”节点。

 


兼容性安全 MBean 的有限可见性

所有兼容性安全 MBean 都标记为已排除,因此它们在 WebLogic 脚本工具中的可见性是有限的。例如,如果使用类似以下内容的命令:

java weblogic.WLST
connect()
ls()

则会列出 DomainMBean 的特性,但会排除 FileRealmMBean 等兼容性安全特性。但是,如果直接对兼容性 MBean 寻址,则可以对其进行访问,如以下示例所示:

java weblogic.WLST
connect()
cmo.getFileRealms()

 


CompatibilityRealm 中的默认安全配置

默认情况下,CompatibilityRealm 通过领域适配器仲裁提供程序、领域适配器身份验证提供程序、WebLogic 授权提供程序、领域适配器授权提供程序、WebLogic 凭据映射提供程序以及 WebLogic 角色映射提供程序进行配置。

  •  在 CompatibilityRealm 中,领域适配器身份验证提供程序由 config.xml 文件中定义的 6.x 安全领域中的用户和组填充。
    •  如果用户曾在 6.x 安全配置中使用文件领域,则可以在领域适配器身份验证提供程序中管理用户和组。有关具体步骤,请参阅“管理控制台联机帮助”中兼容性安全部分的定义用户定义组主题。
    •  如果要使用备用安全领域(LDAP、Windows NT、RDBMS 或自定义),则必须使用由该领域提供的管理工具来管理用户和组。

      有关配置领域适配器身份验证提供程序的信息,请参阅配置领域适配器身份验证提供程序

      通过在领域适配器身份验证提供程序中配置标识声明提供程序,可以在兼容性安全中使用 weblogic.security.acl.CertAuthenticator 类的实现。有关详细信息,请参阅在领域适配器身份验证提供程序中配置标识声明提供程序

  •  6.x 安全领域中的访问控制列表 (ACL) 用于填充领域适配器授权提供程序。
  •  领域适配器仲裁提供程序允许在兼容性安全中同时使用 ACL 以及安全角色和安全策略。领域适配器仲裁提供程序只能用于领域适配器身份验证提供程序和 WebLogic 授权提供程序。它可以通过管理控制台解决 ACL 和新安全策略集之间访问决策冲突。如果一个授权提供程序赞成 PERMIT,而另一个授权提供程序赞成 DENY,则领域适配器仲裁提供程序将允许访问。
  •  WebLogic 凭据映射提供程序允许在兼容性安全中使用凭据映射。有关详细信息,请参阅 WebLogic 资源适配器编程
  •  可以添加领域适配器审核提供程序以从 CompatibilityRealm 访问 weblogic.security.audit.AuditProvider 类的实现。有关详细信息,请参阅“管理控制台联机帮助”中的配置领域适配器审核提供程序

 


配置领域适配器身份验证提供程序

在使用兼容性安全时,默认情况下将为 CompatibilityRealm 配置一个领域适配器身份验证提供程序。有关在 CompatibilityRealm 中使用领域适配器身份验证提供程序的信息,请参阅 CompatibilityRealm 中的默认安全配置

领域适配器身份验证提供程序还允许在此版本的 WebLogic Server 中使用 weblogic.security.acl.CertAuthenticator 类的实现。领域适配器身份验证提供程序包含一个标识声明提供程序,用于基于 X.509 标记声明标识。有关在 WebLogic Server 中使用证书验证器的信息,请参阅在领域适配器身份验证提供程序中配置标识声明提供程序

在向已配置身份验证提供程序的安全领域中添加领域适配器身份验证提供程序时,WebLogic Server 会将该领域适配器身份验证提供程序上的 JAAS 控制标志设置为 OPTIONAL 并在域目录中检查是否存在fileRealm.properties 文件。如果 fileRealm.properties 文件不存在,则 WebLogic Server 不会将该领域适配器身份验证提供程序添加到安全领域中。

注意: 由领域适配器身份验证提供程序生成的主题不包含用户所属组的委托人。应使用 weblogic.security.SubjectUtils.isUserInGroup() 方法来确定用户是否属于某个组。当使用由领域适配器身份验证提供程序生成的主题时,将无法迭代用户所属的组的整个集合。

 


领域适配器身份验证提供程序中配置标识声明提供程序

领域适配器身份验证提供程序包含一个标识声明提供程序。该标识声明提供程序针对不赞成使用的 weblogic.security.acl.CertAuthenticator 类的实现提供向后兼容性。将基于 X.509 标记执行标识声明。默认情况下,领域适配器身份验证提供程序中不启用标识声明提供程序。

有关如何启用标识声明提供程序的信息,请参阅“管理控制台联机帮助”中的启用标识声明提供程序

 


配置领域适配器审核提供程序

通过领域适配器审核提供程序,可以在使用兼容性安全时使用 weblogic.security.audit.AuditProvider 接口的实现。为使领域适配器审核提供程序正常工作,必须定义 AuditProvider 接口的实现。在管理控制台中,通过使用“域: 兼容性安全: 常规”页上的“审核提供程序类”字段可以定义 AuditProvider 类。

有关信息,请参阅“管理控制台联机帮助”中的配置领域适配器审核提供程序

 


保护兼容性安全中的用户帐户

密码猜测是一种常见的安全攻击类型。在此类型的攻击中,黑客会尝试使用各种用户名和密码组合登录到某一计算机中。Weblogic Server 提供了一组锁定配置选项来保护用户帐户免受此类型的攻击。默认情况下,这些选项设置为最高保护级别。系统管理员可以选择执行下列操作:关闭所有选项;增加在锁定用户帐户前的登录尝试次数;延长在锁定用户帐户前进行无效登录尝试的时间段;更改锁定用户帐户的时间量。请记住,更改这些配置选项会降低安全性,使用户帐户更易于受到安全攻击。

可以使用两组配置选项来保护用户帐户,一组在域级别设置,另一组在安全领域级别设置。用户可能会注意到,如果在设置一组配置选项(例如,针对安全领域的选项)后超过其中任何一个值,将不会锁定用户帐户。发生这种情况是因为,域级别的用户帐户锁定选项替换了安全领域级别的用户帐户选项。要避免出现这种情况,请禁用安全领域级别的用户帐户锁定选项。

警告: 如果禁用安全领域级别的用户锁定配置选项,必须设置域上的用户锁定配置选项,否则,用户帐户将失去保护。

有关信息,请参阅“管理控制台联机帮助”中的保护用户帐户取消对用户帐户的锁定

 


从兼容性安全访问 6.x 安全

使用兼容性安全的前提是,安全领域中包含一个现有的 config.xml 文件,其中定义了用户和组以及 ACL 来保护 WebLogic Server 域中的资源。WebLogic Server 6.x 安全管理任务(例如配置安全领域或定义 ACL)并不是必需的,因此本部分将不再对这些管理任务进行描述。但是,如果损坏了现有的 6.x 安全领域并且只能通过还原来解决,则可执行下列 6.x 安全管理任务(这些信息在 WebLogic Administration Console 的联机帮助中的“兼容性安全”主题中描述):

  •  配置 LDAP V1 安全领域
  •  配置 LDAP V2 安全领域
  •  配置 RDBMS 安全领域
  •  配置 Windows NT 安全领域
  •  为 UNIX 安全领域配置 wlauth
  •  配置 UNIX 安全领域
  •  配置自定义安全领域
  •  配置缓存领域
  •  配置文件领域
  •  定义 ACL
  •  定义组
  •  删除组
  •  定义用户
  •  删除用户
  •  更改用户密码
  •  更改系统密码
  •  禁用 Guest 用户
警告: 兼容性安全仅提供向后兼容性,不应视为长期的安全解决方案。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐