前段时间Java的反序列化漏洞吵得沸沸扬扬,因工作原因需要对weblogic进行安全配置,网上关于weblogic的安全配置的内容都不是很全面,可能是因为weblogic已经比较成熟了吧。本文就总结一下在整个过程中遇到的一些坑,并给出正确的姿势。
默认在安装时, weblogic 要求密码至少为 8 位,但是没有限制密码复杂度。因此需要在安装时手工设置复杂的密码, weblogic11g 时设置如下的密码:“ We8_Q7%*5@1@Oracle ”。
WLST(Weblogic Scripting Tool)weblogic脚本工具,如果你不想在console操作修改Weblogic的相关配置,可以试试用WLST。可以用它来监视和管理Weblogic Server实例以及域。
Weblogic9.2版本中”C:/bea/weblogic92/common/bin/wlst.cmd”为WLST脚本工具。
Weblogic11g 版本中在如下位置:
如果已经采用了默认的 weblogic 弱口令,则需要对密码进行修改,具体修改步骤如下:
选择“ base_domain”->“Environment” -> “ Security Realms” ->”Users and Groups” ->“Passwords” ,然后修改密码。
当你重启weblogic后就会发现,weblogic报错。错误信息主要是因为boot.properties的文件中的密码与新设置的密码不一致导致的,所以在这里我们把这个配置文件重设一下就可以了。具体路径:C:/bea/user_projects/domains/base_domain/servers/AdminServer/security/boot.properties将文件里的username和password改为我们的新密码,在这里不要担心明文会造成不安全因素,在下次重启时,就会自动被weblogic用3DES加密的。
修改密码。
登录控制台后点击“Domain Structure”,在“Settings for base_domain”配置页面的选择选项卡“Configuration”->” General”。
EnableAdministration Port :管理端口
启用安全管理控制台端口和 URL 路径的步骤:
在管理控制台中勾选管理端口,点击激活更改。
尝试通过 https://localhost:9002/console 访问 weblogic 管理控制台。
Weblogic日志主要分为SERVER运行日志、HTTP访问日志、DOMAIN运行日志。其中SERVER运行日志、HTTP访问日志可以通过Weblogic后台图形化界面进行配置。
SERVER运行日志:WebLogic SERVER在启动或运行过程中有错误发生,错误信息会显示在屏幕上,并且会记录在一个LOG文件中,该文件默认名为AdminServer.log。该文件也记录WebLogic的启动及关闭等其他运行信息。可在General属性页中设置该文件的路径及名字,错误的输出的等级等。
每条日志消息都具有关联的严重程度级别。日志消息的级别大致说明其重要级别或紧急级别。WebLogic Server 具有从 TRACE 到 EMERGENCY 的预定义严重程度,在将日志请求调度给记录器时,会将对应严重程度转换为日志级别。日志级别对象可以指定下列按照最小影响到最大影响的顺序排列的任意值:
TRACE、DEBUG、INFO、NOTICE、WARNING、ERROR、CRITICAL、ALERT、EMERGENCY可以在记录器和处理程序上设置日志严重程度级别。在记录器上进行设置时,任何处理程序都不会收到记录器已拒绝的事件。例如,如果在记录器上将日志级别设置为 NOTICE,则任何处理程序都不会收到 INFO 级别的事件。在处理程序上设置日志级别时,仅会对处理程序应用限制,而不会对其他程序应用限制。例如,为文件处理程序关闭 DEBUG 意味着不会将任何 DEBUG 消息写入日志文件,但会将 DEBUG 消息将写入标准输出。
HTTP访问日志:在WebLogic中可以对用HTTP,HTTPS协议访问的服务器上的文件都做记录,该LOG文件默认的名字为Access.log,内容如下,该文件具体记录在某个时间,某个IP地址的客户端访问了服务器上的那个文件。
DOMAIN运行日志:记录一个DOMIAN的运行情况,一个DOMAIN中的各个WebLogic SERVER可以把它们的一些运行信息(比如:很严重的错误)发送给一个DOMAIN的Administratior SERVER上,Administratior SERVER把这些信息些到DOMAIN 日志中。默认名为:domain_name.log
1) 登录控制台后查看“ Domain Structure”->“Environment”->“Servers” 选项,选择 ”AdminServer(admin)” ,点击“ Logging ”选项卡,对 General 和 http 进行设置,具体设置如下所示:
1)登录控制台后查看“DomainStructure”->” Configuration”->“logging”选项,对domain进行设置,具体设置如下所示:
1) 禁止采用默认 weblogic 作为管理员用户名,建议采用不易被猜测的用户名,如“ root_domain ”等。
2)禁止采用示例应用
登录控制台后点击“ Domain Structure” ,在 “Settings for base_domain” 配置页面的选择选项卡 “Configuration”->” General” ,点击 Advanced 按钮,查看配置情况:
当然除了上述方法还可以通过修改配置文件关闭管理控制台。
1)选择domain->configuration->General选项卡,点击Advanced option更改如下参数:
2)去掉被选中的“ConsoleEnabled”选项,然后保存,并激活配置;
默认开启状态下的 config.xml 配置文件如上所示。
关闭管理控制台的 config.xml 配置参数,如上图所示。
3 )重启服务后,再次访问管理控制台,出现“ Error 404–Not Found ”。
一旦关闭管理控制台后如何进行开启呢?
| 1、修改config.xml配置文件:
true admin console-ext || — || 2、重新启动domain服务 |
忘记了weblogic server的管理员密码,可以通过如下的方式来重置weblogic的密码。
1)为了保证操作安全,备份%DOMAIN_HOME%/security( C:/bea/user_projects/domains/base_domain/security )主域目录的如下文件夹的所有文件,如DefaultAuthenticatorInit.ldift。
2 )进入 %DOMAIN_HOME%/security 目录,执行下列命令:
| 运行java -cp/usr/local/bea/weblogic92/server/lib/weblogic.jar weblogic.security.utils.AdminAccount <新用户名> <新密码> .注意最后有个“ .”,一个空格和一个点:执行完后在当前目录会生成一个新的DefaultAuthenticatorInit.ldift文件,然后替换原来的/security/DefaultAuthenticatorInit.ldift文件。 || — |
重建DefaultAuthenticatorInit.ldift文件,如上图所示,并且文件生成如下图所示:
3)进入管理服务器的security目录。
cd %DOMAIN_HOME%/servers/AdminServer 。将其中的 data 目录重命名,如: data_old ,或者备份到别的地方。
4) 进入 ../AdminServer/security 目录删除 boot.properties 。
重新新建:boot.properties,增加如下内容:
username=adminuserpassword=weblogic
重建boot.properties密码文件
5)完成后会发现,管理控制台密码被修改且用户名已经被替换成adminuser。
3、总结
上述仅仅是考虑了单机模式weblogic的安全配置方式,不足之处还望大家多多指点。
*本文原创作者:shewey,本文属FreeBuf原创奖励计划,未经许可禁止转载