作者:Balamurali Kothandaraman
安全需求已经远远不是简单地管理用户账户,以及限制内部和外部网络之间的访问这样的问题了。正在出现的业务实践向企业提出挑战,以创建灵活和健壮的安全架构,满足迅速变化的业务需求。本文讨论管理员能够实现保证企业安全的最佳实践提示。“地雷”被突出显示,以便您知道要避免什么情况。
BEA WebLogic Server的开放的、灵活的、易于配置的安全架构在多个级别上具有优势,并且为应用服务器引入了一种高级安全设计。保护系统不受内部或者外部入侵者的攻击。滥用系统或者不正确的管理可能导致系统对入侵或者攻击开放。
不推荐使用运行在生产模式中的域开发模式。对于生产服务器,永远不要使用开发模式。开发模式使对域中的所有服务器的安全约束放松。如果您正在使用兼容性安全(在8.x中使用6.x安全配置),请在生产中禁用guest登录,以便在WebLogic Server域中不能使用他们访问WebLogic资源。
SerializedSystemIni.dat含有某个域中密码的散列,确保您将该文件的一个副本保存在一个安全的地方。只赋予WebLogic系统管理员账户读取SerializedSystemIni.dat的特权。如果您丢失管理员密码,并且启动身份识别没有以boot.properties文件的形式保存,则您不可能重启您的服务器。稍后,我将解释如果恢复丢失的管理员密码。
在创建脚本使WebLogic管理任务自动化时,选项Dweblogic.system.BootIdentityFile使您可以避免在文本脚本中对用户名和密码硬编码。同时,更为重要的是WebLogic安装目录中文件系统的安全。只允许访问将要用于运行或管理WebLogic域的用户账户。
提示
- 安装JRE,而不是完整的SDK。
- 删除BEA提供的开发工具,例如Configuration Wizard、WebLogic Builder和jCOM 工具。
- WebLogic安装提供的Pointbase数据库用于评估目的,在生产环境中不支持。删除它。
- 在生产中安装时,不要安装示例域;或者如果已经安装的话,删除示例域。
- 在启动脚本中,没有硬编码用户的身份识别,而是将有权启动WebLogic Server的用户的加密启动身份识别保存在boot.properties中。
- BEA推荐使用安全角色(而不是用户或者组)来保护WebLogic资源,指派用户到组,然后创建角色声明。
- 不要将WebLogic Server作为根进行安装或运行。如果您必须绑定到某一特权端口,在WebLogic机器配置中使用postbind UID或者postbind GID。
- 设置WebLogic安装的所有权和只有运行服务器的用户账户访问的应用程序目录。
J2EE应用程序的安全
修改J2EE部署描述符中定义的安全策略需要重新部署。修改管理控制台中嵌入的LADP策略是动态的。使用WebLogic Administration Console创建应用程序策略。当您利用管理控制台创建安全策略时,如果在Policy Editor页面的Inherited Policy Statement框中有继承性策略语句,则新的策略将覆盖它。
总是保持源代码远离生产机。在生产机上不要安装未编译的JSP和其他源代码。配置您的应用程序使用SSL。将web.xml文件的user-data-constraint元素中的transport- guarantee设置为CONFIDENTIAL,以便使用SSL保护web应用程序的特定资源。
恢复管理员密码
WebLogic有4种默认的管理角色。在创建域的过程中,所创建的管理用户将是“Admin”角色的一部分。可以给诸如Admin、Deployer、Monitor或者Operator的角色配置其他的管理用户。在使用默认的认证者时,如果您没有修改全局的Admin角色(默认它属于Administrator组),就您可以在WebLogic域中恢复管理员密码。
要在WebLogic域中恢复管理员密码:
- 在命令行,更改目录到该域,并运行setEnv脚本设置PATH和CLASSPATH。
- 运行java weblogic.security.utils.AdminAccount <tempadmin> <temppassword>,创建新的DefaultAuthenticatorInit.ldift。
- 从<Domain>/<Server>/ldap子目录中删除初始化状态文件DefaultAuthenticatormyrealmInit.initialized。
- 利用新的用户身份重新启动服务器。
- 要修改旧的管理员用户身份,登录管理控制台(可选)。
SSL
WebLogic Server使用SSL时,不赞成使用keystores将身份(私有密钥和证书)和信任(CA)保存在文件中。从早期版本迁移过来的系统可能需要您从私有密钥、证书或者信任文件中创建密钥库。
如果域中连接WebLogic Server的网络不可靠,则要在域中的每台服务器上启用SSL,以便管理服务器和受服务器之间的LDAP复制使用SSL连接。启用域的管理端口可以强制WebLogic域中的所有服务器使用SSL。
默认的WebLogic安装提供可输出强度的(exportable-strength)SSL实现(最大强度的SSL是512位密钥、40位批量加密)。长度大于512的密钥要求是BEA的内部强度的(domestic-strength) SSL许可密钥。如果您在自己的生产环境中使用SSL,则使用高强度的(high-strength)SSL。人们通常认为长度小于1024的密钥不够强。
SSL硬件加速器:在WebLogic Server上运行SSL会消耗大量的服务器资源。通过卸载SSL处理,可以将资源应用于WebLogic的功能。可以由Web服务器、负载均衡器、防火墙或者交换机进行SSL处理。
在WebLogic Server中引入的连接可以通过过滤来控制。WebLogic Server提供连接过滤器的默认实现,您可以在管理控制台中配置它。
提示
- 为了避免危及应用程序的安全,安装并配置服务器指定的SSL证书,然后在生产服务器上启用主机名验证。
- 在生产中,不要使用WebLogic所提供的示例SSL证书。
- 使用带有内置安全套接字层(SSL)支持的负载均衡器,或者在有SSL硬件、并带有Java Cryptography Extension (JCE)的机器上运行WebLogic Server 。
- 只在必要时,对WebLogic Server使用SSL,因为SSL会降低性能。
- 要控制能够被WebLogic Serve实例接受的连接的类型,请使用连接过滤器(Connection Filter)。
保证管理控制台的安全
应用程序应该安装在受管服务器,而不是管理服务器上。但如果您使用管理服务器为应用程序服务(或者在单服务器域中),为了提供更好的安全性,应做到以下几点:
- 将默认的管理员用户和密码修改为定制的用户名和密码。
- 修改管理控制台环境的根路径。
- 启用域范围内的管理端口。
- 考虑禁用管理控制台。
身份验证提供者
如果您使用外部LDAP提供者,请将服务器的根身份保存在内嵌的LDAP服务器中,并在外部LDAP身份验证提供者上设置超时。这样,如果外部LDAP服务器不可用,您可以继续重新启动并用WebLogic Server处理不受保护的数据。同时,在您应用任何修改之前,应将所有身份验证提供者的控制标志设置为OPTIONAL,这样可以防止配置错误而导致的生产服务器无法重启。
WebLogic Server有一个基于旧版安全领域API的自定义领域——NTRealm,它支持本机的Windows域身份验证。对于没有设置成使用Active Directory 的Windows 域,NTRealm很有用。
提示
- 保存服务器的根身份到内嵌的LDAP服务器中。
- 为了更好地控制生产环境,请使用Active Directory身份验证,而不要使用本机的Windows域(NTRealm)身份验证。
- 为了防止拒绝服务攻击,修改服务器上入站协议端口(T3、COM、IIOP、HTTP Post超时)的超时和最大尺寸值。
- 由内部或者外部审计组执行安全审计。
备份和恢复
万一发生故障,为了迁移或者恢复WebLogic域,应定期地备份管理服务器机器上的整个域目录树。这样,只需恢复域目录并重启管理服务器就可以使服务器从硬件或者系统故障中恢复。在WebLogic生产域中,需要定期地观察/备份管理服务器机器上的一些重要文件是:
- config.xml:域配置存储库。
- config.xml.booted:成功启动的域配置存储库的有效备份。
- boot.properties:启动管理服务器的加密用户名和密码。
- running-managed-servers.xml:目前正在运行的独立的受管服务器列表。如果在受管服务器正在运行的时候,管理服务器重启,则使用该文件发现受管服务器。
- domain/configArchive/:含有Domain Configuration Repository文件的副本。在使用管理工具进行更新时,管理服务器复制旧的config.xml 到此目录下。
- domain\adminserver\ldap\ldapfiles:域管理服务器目前正在使用的内嵌LDAP数据文件。
- *.ldift files:在创建域时,可以用他们来重新初始化WebLogic Domain Embedded LDAP服务器。
- domain/adminserver/ldap/backup/EmbeddedLDAPBackup.zip:WebLogic Domain内嵌LDAP 服务器的备份文件。使用内嵌LDAP可以保存默认安全领域的用户、组、角色、策略和myrealm 的安全提供者。
- SerializedSystemIni.dat:含有必须表示的加密安全数据,以启动服务器。
- Security Certificates:某一域中的服务器正在使用的安全证书和密钥也应该备份。这些文件的位置可以由用户配置。
- Batch/Shell Scripts:setEnv.cmd/sh、startWebLogic.cmd/sh、startManagedWebLogic.cmd/sh。
|