依据 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》第三级"安全计算环境" 条款,结合 WebLogic Server 12c/14c (12.2.1.4/14.1.1) 官方安全指南及多家测评机构现场实践,给出可直接落地的 测评命令清单。
已在 WebLogic Server 12.2.1.4 / 14.1.1 环境验证通过,支持 Admin Server / Managed Server / Cluster 部署模式。
一、身份鉴别(8.1.4.1)
1.1 管理控制台认证配置
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 默认账户修改 | cat $DOMAIN_HOME/security/DefaultAuthenticatorInit.ldift |
删除或修改weblogic默认密码 |
| 强密码策略 | java weblogic.security.utils.AdminAccount weblogic |
密码长度≥12,复杂度符合要求 |
| 管理用户锁定 | WebLogic Console → Security Realms → myrealm → User Lockout | 启用账户锁定,5次失败锁定30分钟 |
| 控制台访问限制 | `cat $DOMAIN_HOME/config/config.xml | grep console-enabled` |
WebLogic管理控制台核查:
# 设置环境变量
exportMW_HOME=/u01/oracle/Middleware # 或 /opt/oracle/Middleware
exportWL_HOME=$MW_HOME/wlserver
exportDOMAIN_HOME=$MW_HOME/user_projects/domains/base_domain
# 查看WebLogic版本
java-cp$WL_HOME/server/lib/weblogic.jar weblogic.version 2>/dev/null |head-5
cat$WL_HOME/.product.properties 2>/dev/null |grep WLS_PRODUCT_VERSION
# 查看Domain配置
ls-la$DOMAIN_HOME/
cat$DOMAIN_HOME/config/config.xml |head-50
# 检查默认用户配置(关键)
cat$DOMAIN_HOME/security/DefaultAuthenticatorInit.ldift 2>/dev/null |grep-i'weblogic\|admin'
# 检查是否存在默认weblogic用户未修改
# 查看当前安全领域配置
cat$DOMAIN_HOME/config/config.xml |grep-A20'<security-configuration>'
# 查看认证提供者
cat$DOMAIN_HOME/config/config.xml |grep-A10'<realm>\|DefaultAuthenticator\|DefaultIdentityAsserter'
# 检查是否配置LDAP/AD集成
cat$DOMAIN_HOME/config/config.xml |grep-i'ldap\|active-directory\|oid'
# 检查是否配置SSO/SAML/OAuth
cat$DOMAIN_HOME/config/config.xml |grep-i'saml\|oauth\|openid'
# 查看管理控制台配置
cat$DOMAIN_HOME/config/config.xml |grep-A5'console-enabled\|console-context-path'
# 检查是否禁用控制台(生产环境建议)
ifgrep-q'console-enabled.*false'$DOMAIN_HOME/config/config.xml 2>/dev/null;then
echo"✓ 管理控制台已禁用"
else
echo"⚠ 管理控制台已启用(确认是否限制访问)"
fi
1.2 安全领域与用户锁定
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 用户锁定策略 | `cat $DOMAIN_HOME/config/config.xml | grep -A 10 'user-lockout-manager'` |
| 密码过期策略 | WebLogic Console → Security Realms → myrealm → Password Policies | 最长使用期限90天 |
| 密码复杂度 | `cat $DOMAIN_HOME/config/config.xml | grep -A 10 'password-validator'` |
| 审计日志 | `cat $DOMAIN_HOME/config/config.xml | grep -A 5 'audit-provider'` |
安全领域核查:
# 查看用户锁定管理器配置
cat$DOMAIN_HOME/config/config.xml |grep-B5-A15'user-lockout-manager'
# 检查锁定阈值和持续时间
cat$DOMAIN_HOME/config/config.xml |grep-E'lockout-threshold|lockout-duration|lockout-cache-size'
# 查看密码验证器配置
cat$DOMAIN_HOME/config/config.xml |grep-B5-A15'password-validator\|SystemPasswordValidator'
# 检查密码策略参数
cat$DOMAIN_HOME/config/config.xml |grep-E'min-password-length|min-numeric-or-special-characters|max-consecutive-characters'
# 查看审计提供者配置
cat$DOMAIN_HOME/config/config.xml |grep-B5-A10'audit-provider\|DefaultAuditor'
# 查看审计策略
cat$DOMAIN_HOME/config/config.xml |grep-A20'audit-policy'
# 检查是否启用安全审计(关键)
ifgrep-q'audit-provider'$DOMAIN_HOME/config/config.xml;then
echo"✓ 审计提供者已配置"
else
echo"✗ 未配置审计提供者"
fi
# 查看角色和策略配置
cat$DOMAIN_HOME/config/config.xml |grep-A10'role-assignment\|policy'
# 检查全局角色
cat$DOMAIN_HOME/config/config.xml |grep-A5'global-role'
1.3 管理通道与会话安全
# 查看管理服务器配置
cat$DOMAIN_HOME/config/config.xml |grep-B5-A20'admin-server-name'
# 检查管理通道配置(AdminChannel)
cat$DOMAIN_HOME/config/config.xml |grep-B5-A15'admin-channel\|network-access-point'
# 查看是否配置管理端口隔离
cat$DOMAIN_HOME/config/config.xml |grep-E'administration-port|administration-port-enabled'
# 检查是否启用管理通道SSL
cat$DOMAIN_HOME/config/config.xml |grep-A10'admin-channel'|grep-i'ssl\|two-way-ssl'
# 查看会话超时配置
cat$DOMAIN_HOME/config/config.xml |grep-i'session-timeout\|cookie-timeout\|timeout-seconds'
# 检查是否启用安全Cookie
cat$DOMAIN_HOME/config/config.xml |grep-i'cookie-secure\|cookie-http-only'
# 查看是否配置单点注销
cat$DOMAIN_HOME/config/config.xml |grep-i'single-sign-on\|sso'
# 检查JSESSIONID配置
find$DOMAIN_HOME-name"weblogic.xml"-execgrep-l"session-descriptor"{}\;2>/dev/null |head-5
1.4 节点管理器安全
# 查看节点管理器配置
cat$WL_HOME/common/nodemanager/nodemanager.properties 2>/dev/null ||cat$DOMAIN_HOME/nodemanager/nodemanager.properties 2>/dev/null
# 检查节点管理器认证
cat$WL_HOME/common/nodemanager/nodemanager.properties 2>/dev/null |grep-E'CustomIdentityKeyStoreFileName|CustomIdentityAlias|CustomIdentityPrivateKeyPassPhrase'
# 检查节点管理器是否启用SSL
cat$WL_HOME/common/nodemanager/nodemanager.properties 2>/dev/null |grep-i'securelistener|ssl'
# 查看节点管理器用户配置
cat$DOMAIN_HOME/config/nm_data.properties 2>/dev/null ||echo"nm_data.properties不存在"
# 检查节点管理器日志
ls-la$WL_HOME/common/nodemanager/nodemanager.log* 2>/dev/null ||ls-la$DOMAIN_HOME/nodemanager/nodemanager.log* 2>/dev/null
# 查看是否限制节点管理器访问IP
cat$WL_HOME/common/nodemanager/nodemanager.properties 2>/dev/null |grep-i'listenaddress|hostsfile'
高风险项:使用默认weblogic密码、管理控制台暴露于公网、未启用用户锁定策略、节点管理器未配置认证,直接判定不符合三级要求。
二、访问控制(8.1.4.2)
2.1 部署与文件权限
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| Domain目录权限 | ls -la $DOMAIN_HOME/ |
oracle/weblogic用户所有,750权限 |
| 应用部署目录 | ls -la $DOMAIN_HOME/autodeploy/ |
仅管理员可写 |
| 密钥库文件 | ls -la $DOMAIN_HOME/security/ |
600权限,仅所有者可读 |
| 配置文件权限 | ls -la $DOMAIN_HOME/config/ |
640权限,组用户只读 |
文件权限核查:
# 检查WebLogic进程用户
ps aux |grepjava|grep-i weblogic |grep-vgrep|awk'{print $1}'|sort|uniq
# 检查Domain目录权限
ls-la$DOMAIN_HOME/ |head-20
stat-c'%a %U:%G'$DOMAIN_HOME/
# 检查关键目录权限
echo"=== autodeploy ==="
ls-la$DOMAIN_HOME/autodeploy/ 2>/dev/null
stat-c'%a %U:%G'$DOMAIN_HOME/autodeploy/ 2>/dev/null
echo"=== security ==="
ls-la$DOMAIN_HOME/security/ 2>/dev/null
stat-c'%a %U:%G'$DOMAIN_HOME/security/ 2>/dev/null
# 检查密钥库文件
ls-la$DOMAIN_HOME/security/*.jks $DOMAIN_HOME/security/*.p12 2>/dev/null
echo"=== config ==="
ls-la$DOMAIN_HOME/config/ |head-10
stat-c'%a %U:%G'$DOMAIN_HOME/config/config.xml
echo"=== servers ==="
ls-la$DOMAIN_HOME/servers/ |head-10
# 检查日志目录权限
echo"=== logs ==="
ls-la$DOMAIN_HOME/servers/AdminServer/logs/ 2>/dev/null |head-5
stat-c'%a %U:%G'$DOMAIN_HOME/servers/AdminServer/logs/ 2>/dev/null
# 查找可能的明文密码
grep-r'password='$DOMAIN_HOME/config/ 2>/dev/null |grep-v'encrypted\|{AES}\|{3DES}'|head-10
# 检查启动脚本权限
ls-la$DOMAIN_HOME/bin/
stat-c'%a %U:%G'$DOMAIN_HOME/bin/startWebLogic.sh
stat-c'%a %U:%G'$DOMAIN_HOME/bin/setDomainEnv.sh
2.2 运行时安全管理
# 查看setDomainEnv.sh中的JVM安全参数
cat$DOMAIN_HOME/bin/setDomainEnv.sh |grep-i'java.security\|security.manager\|policy'
# 检查是否启用Java Security Manager
cat$DOMAIN_HOME/bin/startWebLogic.sh |grep-i'java.security.manager\|-Djava.security.policy'
# 查看是否配置自定义安全策略
ls-la$DOMAIN_HOME/wls.policy 2>/dev/null ||echo"未配置wls.policy"
# 检查是否以root运行(高风险)
RUN_USER=$(ps aux |grepjava|grep-i weblogic |grep-vgrep|awk'{print $1}'|head-1)
if["$RUN_USER"="root"];then
echo"⚠ 警告: WebLogic以root用户运行"
else
echo"运行用户: $RUN_USER"
fi
# 检查JVM参数安全
ps aux |grepjava|grep-i weblogic |grep-o'\-D[^ ]*'|head-30
# 检查内存和GC配置
ps aux |grepjava|grep-i weblogic |grep-o'\-Xms[^ ]*\|-Xmx[^ ]*\|-XX:[^ ]*'|head-10
# 检查是否配置JMX安全
cat$DOMAIN_HOME/bin/setDomainEnv.sh |grep-i'jmxremote\|com.sun.management'
# 查看是否禁用不安全的协议
cat$DOMAIN_HOME/config/config.xml |grep-i't3s-enabled\|t3-enabled\|iiop-enabled\|com-enabled'
2.3 默认配置清理
# 检查是否删除示例应用
ls$DOMAIN_HOME/autodeploy/ 2>/dev/null |grep-v'README'
ls$MW_HOME/wlserver/server/lib/consoleapp/ 2>/dev/null |head-5
# 检查是否配置默认拒绝策略
cat$DOMAIN_HOME/config/config.xml |grep-A5'default-web-app-context\|default-web-app'
# 检查是否删除DefaultWebApp
find$DOMAIN_HOME-name"DefaultWebApp"-type d 2>/dev/null
# 检查是否配置自定义错误页面
cat$DOMAIN_HOME/config/config.xml |grep-A10'error-page\|error-handler'
# 检查是否禁用目录列表
cat$DOMAIN_HOME/config/config.xml |grep-i'index-directory-enabled\|directory-browsing-enabled'
# 检查是否配置MIME类型安全
cat$DOMAIN_HOME/config/config.xml |grep-A10'mime-mapping\|mime-type'
# 检查是否删除不必要的WLST脚本
ls-la$DOMAIN_HOME/bin/*.py 2>/dev/null |head-5
三、安全审计(8.1.4.3)
3.1 日志配置与审计
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 服务器日志 | ls -la $DOMAIN_HOME/servers/AdminServer/logs/ |
server.log, access.log启用 |
| HTTP访问日志 | `cat $DOMAIN_HOME/config/config.xml | grep -A 10 'web-server-log'` |
| 审计日志 | ls -la $DOMAIN_HOME/servers/AdminServer/data/ldap/log/ |
DefaultAuditor启用 |
| 日志保留 | `find $DOMAIN_HOME/servers//logs -name ".log" -mtime +30 | wc -l` |
日志配置核查:
# 查看服务器日志配置
cat$DOMAIN_HOME/config/config.xml |grep-A20'log\|logging'
# 查看日志文件位置
ls-la$DOMAIN_HOME/servers/AdminServer/logs/ 2>/dev/null ||echo"AdminServer日志目录不存在"
# 查看Managed Server日志(如存在)
forserverin$(ls $DOMAIN_HOME/servers/ 2>/dev/null |grep-v AdminServer);do
echo"=== $server ==="
ls-la$DOMAIN_HOME/servers/$server/logs/ 2>/dev/null |head-5
done
# 检查HTTP访问日志配置
cat$DOMAIN_HOME/config/config.xml |grep-B5-A15'web-server-log\|access-log'
# 查看访问日志格式
cat$DOMAIN_HOME/config/config.xml |grep-A5'elf-fields\|log-format'
# 查看日志轮转配置
cat$DOMAIN_HOME/config/config.xml |grep-i'log-file-rotation-type\|rotation-type\|number-of-files-limited'
# 查看最新日志内容
tail-50$DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log 2>/dev/null ||echo"日志文件不存在"
# 查看访问日志
tail-20$DOMAIN_HOME/servers/AdminServer/logs/access.log 2>/dev/null ||echo"访问日志不存在"
# 查看审计日志(如启用)
ls-la$DOMAIN_HOME/servers/AdminServer/data/ldap/log/ 2>/dev/null |head-5
tail-30$DOMAIN_HOME/servers/AdminServer/data/ldap/log/EmbeddedLDAP.log 2>/dev/null ||echo"LDAP审计日志不存在"
# 查看域日志(Domain Log)
tail-30$DOMAIN_HOME/servers/AdminServer/logs/domain.log 2>/dev/null ||echo"域日志不存在"
3.2 审计事件与合规
# 查看安全审计配置详情
cat$DOMAIN_HOME/config/config.xml |grep-B5-A30'security-configuration'
# 检查审计事件过滤
cat$DOMAIN_HOME/config/config.xml |grep-A10'audit-policy'|grep-E'audit-event|exclude-event'
# 查看审计事件类型
cat$DOMAIN_HOME/config/config.xml |grep-i'authentication\|authorization\|user-lockout\|role-modification'
# 查看日志中的安全事件
echo"=== 认证失败事件 ==="
grep-i'authentication.*failed\|invalid.*login\|password.*incorrect'$DOMAIN_HOME/servers/AdminServer/logs/*.log 2>/dev/null |tail-20
echo"=== 授权失败事件 ==="
grep-i'authorization.*failed\|access.*denied\|permission.*denied'$DOMAIN_HOME/servers/AdminServer/logs/*.log 2>/dev/null |tail-20
echo"=== 用户锁定事件 ==="
grep-i'user.*locked\|lockout\|account.*disabled'$DOMAIN_HOME/servers/AdminServer/logs/*.log 2>/dev/null |tail-20
echo"=== 配置变更事件 ==="
grep-i'configuration.*changed\|domain.*modified\|resource.*deployed'$DOMAIN_HOME/servers/AdminServer/logs/*.log 2>/dev/null |tail-20
# 查看部署历史
grep-i'deploy\|undeploy\|redeploy'$DOMAIN_HOME/servers/AdminServer/logs/domain.log 2>/dev/null |tail-20
四、入侵防范(8.1.4.4)
4.1 服务加固与组件管理
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 版本检查 | java -cp weblogic.jar weblogic.version |
使用12.2.1.4+/14.1.1+,无已知CVE |
| 安全补丁 | bsu.sh -report -bea_home=$MW_HOME |
最新PSU补丁 |
| 禁用不安全协议 | `cat config.xml | grep 'iiop-enabled |
| 端口最小化 | `netstat -tulnp | grep java` |
WebLogic加固核查:
# 查看WebLogic和JDK版本
java-cp$WL_HOME/server/lib/weblogic.jar weblogic.version 2>/dev/null |head-10
java-version2>&1|head-3
# 检查已知漏洞版本
WLS_VER=$(java-cp $WL_HOME/server/lib/weblogic.jar weblogic.version 2>/dev/null |grep"WebLogic Server"|head-1)
echo"WebLogic版本: $WLS_VER"
# 检查CVE:10.3.6.0, 12.1.3.0, 12.2.1.3及以下的漏洞版本
# 查看已安装补丁
$MW_HOME/utils/bsu/bsu.sh -report-bea_home=$MW_HOME2>/dev/null |head-50||echo"BSU工具未找到"
# 查看OPatch补丁(12c+)
$MW_HOME/OPatch/opatch lsinventory 2>/dev/null |head-30||echo"OPatch未找到"
# 检查协议配置(禁用不安全协议)
echo"=== 协议配置 ==="
cat$DOMAIN_HOME/config/config.xml |grep-E'iiop-enabled|com-enabled|t3-enabled|t3s-enabled|http-enabled|https-enabled'|head-10
# 检查IIOP配置(如必须使用)
cat$DOMAIN_HOME/config/config.xml |grep-B5-A10'iiop-service'
# 检查是否禁用COM(Windows特有)
cat$DOMAIN_HOME/config/config.xml |grep-i'com-enabled'
# 查看监听端口
netstat-tulnp2>/dev/null |grep$(pgrep -f'weblogic.Server'|head-1)|head-10
# 端口说明:
# 7001: HTTP (AdminServer默认)
# 7002: HTTPS (AdminServer SSL)
# 7003-7009: 各种协议端口
# 8001-8009: Managed Server端口
# 9001-9002: Node Manager
# 检查是否配置端口限制
cat$DOMAIN_HOME/config/config.xml |grep-E'listen-port|ssl-listen-port|administration-port'
# 检查是否配置防火墙(主机层)
iptables -L-n2>/dev/null |grep-E':7001|:7002|:8001'
firewall-cmd --list-all 2>/dev/null |grep-E'7001|7002|8001'
4.2 SSL/TLS配置
# 查看密钥库配置
cat$DOMAIN_HOME/config/config.xml |grep-B5-A15'key-store\|ssl'
# 检查服务器密钥库
cat$DOMAIN_HOME/config/config.xml |grep-E'server-key-store|server-custom-identity-key-store'
# 检查信任库配置
cat$DOMAIN_HOME/config/config.xml |grep-E'server-trust-store|server-custom-trust-key-store'
# 查看SSL配置详情
cat$DOMAIN_HOME/config/config.xml |grep-B5-A20'ssl\|SSL'
# 检查是否配置证书验证
cat$DOMAIN_HOME/config/config.xml |grep-i'two-way-ssl\|client-cert-authentication\|cert-authentication-enabled'
# 检查SSL协议版本(应禁用SSLv3, TLSv1.0/1.1)
cat$DOMAIN_HOME/config/config.xml |grep-i'ssl-version\|tls-version\|minimum-tls-version'
# 检查加密套件配置
cat$DOMAIN_HOME/config/config.xml |grep-i'cipher-suite\|enabled-cipher-suites'
# 查看证书文件
find$DOMAIN_HOME/security -name"*.jks"-o-name"*.p12"-o-name"*.pem"2>/dev/null |head-10
# 验证证书有效期
forcertin$(find $DOMAIN_HOME/security -name"*.jks"2>/dev/null |head-3);do
echo"=== $cert ==="
keytool -list-v-keystore$cert2>/dev/null |grep-E'Valid from|Alias name'|head-5
done
# 检查是否配置主机名验证
cat$DOMAIN_HOME/config/config.xml |grep-i'hostname-verification\|hostname-verifier'
4.3 网络通道与连接筛选
# 查看网络通道配置
cat$DOMAIN_HOME/config/config.xml |grep-B5-A20'network-access-point'
# 检查是否配置连接筛选器(T3连接限制)
cat$DOMAIN_HOME/config/config.xml |grep-B5-A15'connection-filter\|t3-connection-filter'
# 查看连接筛选规则
cat$DOMAIN_HOME/config/config.xml |grep-A10'connection-filter-rule'
# 检查是否配置T3协议白名单
cat$DOMAIN_HOME/config/config.xml |grep-i't3-authorized-hosts\|authorized-hosts'
# 查看默认通道配置
cat$DOMAIN_HOME/config/config.xml |grep-B5-A10'default-protocol\|default-web-app-context'
# 检查是否配置HTTP隧道(T3 over HTTP)
cat$DOMAIN_HOME/config/config.xml |grep-i'tunneling-enabled\|http-tunneling'
# 检查IIOP隧道
cat$DOMAIN_HOME/config/config.xml |grep-i'iiop-tunneling'
五、恶意代码防范(8.1.4.5)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 部署包扫描 | clamscan $DOMAIN_HOME/autodeploy/ |
无病毒,定期扫描 |
| 类过滤器 | `cat config.xml | grep 'class-loader-filter'` |
| 消息大小限制 | `cat config.xml | grep 'max-message-size'` |
| 文件上传限制 | `cat config.xml | grep 'max-post-size |
恶意代码防范核查:
# 检查是否安装杀毒软件
which clamscan && clamscan --version
systemctl status clamav-daemon 2>/dev/null ||echo"ClamAV未运行"
# 扫描部署目录
clamscan -r--exclude="*.jar"$DOMAIN_HOME/autodeploy/ 2>/dev/null |tail-10||echo"扫描完成或无文件"
# 检查反序列化过滤器(WebLogic 12.2.1.4+)
cat$DOMAIN_HOME/config/config.xml |grep-i'class-loader-filter\|serial-filter\|object-filter'
# 检查JEP 290配置(JDK层面)
cat$DOMAIN_HOME/bin/setDomainEnv.sh |grep'jdk.serialFilter'
cat$MW_HOME/oracle_common/common/bin/setDomainEnv.sh 2>/dev/null |grep'jdk.serialFilter'
# 查看是否配置T3协议过滤器(CVE-2018-2628等防护)
cat$DOMAIN_HOME/config/config.xml |grep-A10't3-connection-filter'
# 检查消息大小限制
cat$DOMAIN_HOME/config/config.xml |grep-i'max-message-size\|max-t3-message-size\|max-iiop-message-size'
# 检查HTTP POST大小限制
cat$DOMAIN_HOME/config/config.xml |grep-i'max-post-size\|max-request-size\|post-timeout-secs'
# 检查是否禁用不安全的文件扩展名
cat$DOMAIN_HOME/config/config.xml |grep-i'mime-mapping\|extension-mappings'
# 查看类加载器配置(防止类加载攻击)
cat$DOMAIN_HOME/config/config.xml |grep-A10'class-loader-structure\|application-classloader'
六、可信验证(8.1.4.6)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 安装包签名 | rpm -V fmw_12.2.1.4.0_wls_Disk1_1of1 |
无文件被篡改 |
| 配置文件基线 | sha256sum $DOMAIN_HOME/config/config.xml |
基线比对 |
| 模块完整性 | java -jar weblogic.jar -version |
官方发布版本 |
可信验证核查:
# 验证Oracle安装文件签名(如有)
ls-la$MW_HOME/inventory/ 2>/dev/null |head-10
# 计算核心文件哈希
sha256sum $WL_HOME/server/lib/weblogic.jar
sha256sum $WL_HOME/common/bin/wlst.sh
# 配置文件基线
sha256sum $DOMAIN_HOME/config/config.xml > /tmp/weblogic_config.baseline 2>/dev/null
# 定期比对:diff <(sha256sum $DOMAIN_HOME/config/config.xml) /tmp/weblogic_config.baseline
# 验证Domain模板完整性
find$MW_HOME/wlserver/common/templates -name"*.jar"-exec md5sum {}\;2>/dev/null |head-10
# 检查是否使用官方安装介质
cat$MW_HOME/.product.properties 2>/dev/null |grep-E'WLS_PRODUCT_VERSION|WLS_PATCH_LEVEL'
# 查看Oracle支持证书
ls-la$MW_HOME/wlserver/server/lib/cacerts 2>/dev/null ||echo"使用JDK默认证书库"
# 验证补丁签名
$MW_HOME/OPatch/opatch lsinventory -detail2>/dev/null |grep-E'Patch|Oracle Home'|head-20
七、数据备份与恢复(8.1.4.9)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| Domain配置备份 | ls -la /backup/weblogic/domain/ |
定期备份config.xml等 |
| 应用部署备份 | ls -la /backup/weblogic/applications/ |
保留历史版本EAR/WAR |
| 密钥库备份 | ls -la /backup/weblogic/security/ |
加密备份密钥库 |
| 数据库备份 | 检查数据源配置 | 通过JDBC备份事务日志 |
备份与恢复核查:
# 查看备份脚本
cat /etc/cron.d/weblogic-backup 2>/dev/null ||crontab-l|grep weblogic
# 手动备份Domain配置
mkdir-p /backup/weblogic/domain-$(date +%F)
cp-r$DOMAIN_HOME/config /backup/weblogic/domain-$(date +%F)/
cp-r$DOMAIN_HOME/security /backup/weblogic/domain-$(date +%F)/
cp-r$DOMAIN_HOME/bin /backup/weblogic/domain-$(date +%F)/
# 备份部署应用
mkdir-p /backup/weblogic/applications-$(date +%F)
find$DOMAIN_HOME-name"*.ear"-o-name"*.war"2>/dev/null |whileread app;do
cp"$app" /backup/weblogic/applications-$(date +%F)/
done
# 备份密钥库(加密存储)
mkdir-p /backup/weblogic/security-$(date +%F)
cp$DOMAIN_HOME/security/*.jks /backup/weblogic/security-$(date +%F)/ 2>/dev/null
cp$DOMAIN_HOME/security/*.p12 /backup/weblogic/security-$(date +%F)/ 2>/dev/null
# 注意:密钥库密码需单独安全存储
# 使用pack/unpack工具备份
$MW_HOME/oracle_common/common/bin/pack.sh -domain=$DOMAIN_HOME-template=/backup/weblogic/domain-template-$(date +%F).jar -template_name="domain_backup"2>/dev/null ||echo"pack工具未找到"
# 验证备份完整性
ls-la /backup/weblogic/ 2>/dev/null |head-10
# 测试恢复流程(创建测试Domain)
# $MW_HOME/oracle_common/common/bin/unpack.sh -template=/backup/weblogic/domain-template-20240101.jar -domain=/tmp/test_domain
# 检查事务日志备份(JTA)
ls-la$DOMAIN_HOME/servers/*/data/store/default/ 2>/dev/null |head-5
# 查看JMS持久化存储
ls-la$DOMAIN_HOME/servers/*/data/store/jms/ 2>/dev/null |head-5
八、集群与高可用安全(扩展)
8.1 Cluster配置安全
# 查看集群配置
cat$DOMAIN_HOME/config/config.xml |grep-B5-A30'cluster'
# 检查集群通信协议
cat$DOMAIN_HOME/config/config.xml |grep-A10'cluster'|grep-E'multicast|unicast|channel'
# 查看集群消息模式
cat$DOMAIN_HOME/config/config.xml |grep-i'cluster-messaging-mode\|migration-policy'
# 检查是否配置集群SSL
cat$DOMAIN_HOME/config/config.xml |grep-A20'cluster'|grep-i'ssl\|secure'
# 查看复制策略(会话复制)
cat$DOMAIN_HOME/config/config.xml |grep-A10'replication-policy\|session-persistence'
# 检查JMS集群配置
cat$DOMAIN_HOME/config/config.xml |grep-B5-A20'jms-server\|saf-agent'
# 查看数据源集群配置
cat$DOMAIN_HOME/config/config.xml |grep-B5-A15'jdbc-system-resource\|multi-datasource'
8.2 迁移与故障转移
# 检查服务迁移配置
cat$DOMAIN_HOME/config/config.xml |grep-B5-A15'migration-policy\|service-migration'
# 查看 leasing 配置(节点存活检测)
cat$DOMAIN_HOME/config/config.xml |grep-i'leasing\|migration-basis'
# 检查自动服务迁移
cat$DOMAIN_HOME/config/config.xml |grep-i'auto-migration\|restart-in-place'
# 查看JTA迁移配置
cat$DOMAIN_HOME/config/config.xml |grep-B5-A10'jta-migratable-target'
# 检查集群节点健康检查
cat$DOMAIN_HOME/config/config.xml |grep-i'health-check-interval\|fence-timeout'
一键巡检脚本(WebLogic)
#!/bin/bash
# WebLogic Server 等保三级一键巡检脚本
# 适用:WebLogic 12c (12.2.1.4) / 14c (14.1.1)
# 执行用户:oracle/weblogic或root
exportMW_HOME=${MW_HOME:-/u01/oracle/Middleware}
exportWL_HOME=$MW_HOME/wlserver
exportDOMAIN_HOME=${DOMAIN_HOME:-$MW_HOME/user_projects/domains/base_domain}
echo"===== WebLogic Server 等保巡检报告 ====="
echo"巡检时间: $(date'+%Y-%m-%d %H:%M:%S')"
echo"服务器: $(hostname)"
echo"MW_HOME: $MW_HOME"
echo"DOMAIN_HOME: $DOMAIN_HOME"
echo""
echo"===== 1 身份鉴别 ====="
echo"--- WebLogic版本 ---"
java-cp$WL_HOME/server/lib/weblogic.jar weblogic.version 2>/dev/null |head-3||echo"无法获取版本"
echo"--- 默认用户检查 ---"
if[-f"$DOMAIN_HOME/security/DefaultAuthenticatorInit.ldift"];then
ifgrep-q'cn=weblogic'$DOMAIN_HOME/security/DefaultAuthenticatorInit.ldift 2>/dev/null;then
echo"⚠ 发现默认weblogic用户配置"
else
echo"✓ 默认用户配置已清理"
fi
else
echo"LDIFT文件不存在"
fi
echo"--- 用户锁定配置 ---"
ifgrep-q'user-lockout-manager'$DOMAIN_HOME/config/config.xml 2>/dev/null;then
echo"✓ 用户锁定管理器已配置"
grep-A3'lockout-threshold'$DOMAIN_HOME/config/config.xml 2>/dev/null |head-3
else
echo"✗ 未配置用户锁定管理器"
fi
echo"--- 控制台状态 ---"
ifgrep-q'console-enabled.*false'$DOMAIN_HOME/config/config.xml 2>/dev/null;then
echo"✓ 管理控制台已禁用"
else
echo"⚠ 管理控制台已启用(确认访问限制)"
fi
echo""
echo"===== 2 访问控制 ====="
echo"--- Domain目录权限 ---"
stat-c'%a %U:%G'$DOMAIN_HOME/ 2>/dev/null ||ls-ld$DOMAIN_HOME/
echo"--- 运行用户 ---"
RUN_USER=$(ps aux |grepjava|grep-i weblogic |grep-vgrep|awk'{print $1}'|head-1)
echo"运行用户: ${RUN_USER:-'未运行'}"
if["$RUN_USER"="root"];then
echo"⚠ 警告: 以root运行"
fi
echo"--- 密钥库权限 ---"
stat-c'%a %U:%G'$DOMAIN_HOME/security/*.jks 2>/dev/null |head-3||echo"密钥库文件未找到"
echo""
echo"===== 3 安全审计 ====="
echo"--- 日志目录 ---"
ls-la$DOMAIN_HOME/servers/AdminServer/logs/ 2>/dev/null |head-5||echo"AdminServer日志不存在"
echo"--- 审计配置 ---"
ifgrep-q'audit-provider'$DOMAIN_HOME/config/config.xml 2>/dev/null;then
echo"✓ 审计提供者已配置"
else
echo"✗ 未配置审计提供者"
fi
echo"--- 最近日志 ---"
tail-5$DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log 2>/dev/null ||echo"日志文件不存在"
echo""
echo"===== 4 入侵防范 ====="
echo"--- 协议配置 ---"
grep-E'iiop-enabled|com-enabled'$DOMAIN_HOME/config/config.xml 2>/dev/null |head-5||echo"未找到协议配置"
echo"--- 补丁检查 ---"
$MW_HOME/OPatch/opatch lsinventory 2>/dev/null |grep-E'Patch|Oracle Home'|head-5||echo"OPatch未找到"
echo"--- SSL配置 ---"
ifgrep-q'key-store'$DOMAIN_HOME/config/config.xml 2>/dev/null;then
echo"✓ 密钥库已配置"
else
echo"⚠ 未找到密钥库配置"
fi
echo"--- 监听端口 ---"
netstat-tulnp2>/dev/null |grep$(pgrep -f'weblogic.Server'|head-1)|head-5||echo"未获取端口信息"
echo""
echo"===== 5 数据备份 ====="
ls-la /backup/weblogic/ 2>/dev/null |head-5||echo"备份目录不存在"
echo""
echo"===== 6 高风险项检查 ====="
RISKS=0
# 检查1: 默认weblogic用户
if[-f"$DOMAIN_HOME/security/DefaultAuthenticatorInit.ldift"]&&grep-q'cn=weblogic'$DOMAIN_HOME/security/DefaultAuthenticatorInit.ldift 2>/dev/null;then
echo"✗ 高风险: 默认weblogic用户仍存在"
((RISKS++))
fi
# 检查2: 以root运行
if["$RUN_USER"="root"];then
echo"✗ 高风险: WebLogic以root用户运行"
((RISKS++))
fi
# 检查3: 无用户锁定
if!grep-q'user-lockout-manager'$DOMAIN_HOME/config/config.xml 2>/dev/null;then
echo"✗ 高风险: 未配置用户锁定策略"
((RISKS++))
fi
# 检查4: IIOP启用(如不需要)
ifgrep-q'iiop-enabled.*true'$DOMAIN_HOME/config/config.xml 2>/dev/null;then
echo"⚠ 中风险: IIOP协议已启用(如未使用建议禁用)"
fi
# 检查5: 明文密码
PLAINTEXT=$(grep-r'password=' $DOMAIN_HOME/config/ 2>/dev/null |grep-v'encrypted\|{AES}\|{3DES}'|wc-l)
if["$PLAINTEXT"-gt0];then
echo"⚠ 中风险: 发现$PLAINTEXT处可能的明文密码配置"
fi
if["$RISKS"-eq0];then
echo"未发现高风险项 ✓"
else
echo"发现 $RISKS 项高风险,请立即整改"
fi
echo""
echo"===== 巡检完成 ====="
高风险项重点核查清单
| 检查项 | 验证命令 | 不合规判定 | 整改建议 |
|---|---|---|---|
| 默认weblogic用户未修改 | `cat DefaultAuthenticatorInit.ldift | grep weblogic` | 存在默认配置 |
| 管理控制台暴露 | `netstat -tulnp | grep :7001` | 0.0.0.0:7001监听且无IP限制 |
| 无用户锁定策略 | grep user-lockout-manager config.xml |
无输出 | 配置UserLockoutManager |
| IIOP/COM协议未禁用 | `grep 'iiop-enabled | com-enabled' config.xml` | 值为true |
| 无SSL/TLS配置 | `grep 'key-store | ssl' config.xml` | 无输出 |
| 以root运行 | `ps aux | grep weblogic` | 用户为root |
| 密钥库权限过宽 | ls -la security/*.jks |
权限非600 | chmod 600 *.jks |
| 无审计配置 | grep audit-provider config.xml |
无输出 | 启用DefaultAuditor |
| T3协议无过滤 | grep 'connection-filter' config.xml |
无输出 | 配置T3ConnectionFilter限制访问 |
| 未安装安全补丁 | opatch lsinventory |
缺少最新PSU | 应用Oracle最新补丁更新 |
WebLogic版本差异对照
| 功能项 | WebLogic 12c (12.1.3) | WebLogic 12c R2 (12.2.1.4) | WebLogic 14c (14.1.1) |
|---|---|---|---|
| JDK支持 | JDK 7/8 | JDK 8/11 | JDK 11/17 |
| 安全补丁支持 | 已终止 | 扩展支持 | 完整支持 |
| Kubernetes Operator | 无 | 基础 | 完整 |
| 容器镜像 | 传统 | 改进 | 官方镜像 |
| 等保合规 | 需大量加固 | 基础合规 | 完整合规 |
| 国密支持 | 无 | 需配置 | 部分支持 |
| 零信任架构 | 不支持 | 部分支持 | 支持 |
测评执行要点
1. 权限要求
-
所有命令需
oracle/weblogic用户或root执行 -
部分配置检查需WebLogic实例停止或AdminServer运行
2. 现场核查重点
-
默认账户安全:必须修改weblogic默认密码,生产环境建议禁用控制台或限制IP
-
协议安全:IIOP、COM、T3等协议如未使用必须禁用,T3必须配置连接筛选器
-
补丁管理:WebLogic漏洞频发,必须保持最新PSU补丁
-
密钥库管理:私钥文件权限必须为600,配置双向SSL时启用主机名验证
3. 版本差异注意
-
WebLogic 12.1.3:已终止支持,存在大量已知漏洞,建议升级
-
WebLogic 12.2.1.4:主流版本,支持Kubernetes Operator
-
WebLogic 14.1.1:云原生版本,支持JDK 17和容器化部署
常用命令速查
# Domain管理
$DOMAIN_HOME/bin/startWebLogic.sh # 启动AdminServer
$DOMAIN_HOME/bin/stopWebLogic.sh # 停止AdminServer
$DOMAIN_HOME/bin/startManagedWebLogic.sh Server1 http://localhost:7001 # 启动Managed Server
# WLST脚本
$WL_HOME/common/bin/wlst.sh # 启动WLST交互模式
java weblogic.WLST /path/to/script.py # 执行WLST脚本
# 节点管理器
$WL_HOME/server/bin/startNodeManager.sh # 启动NodeManager
$WL_HOME/server/bin/stopNodeManager.sh # 停止NodeManager
# 配置管理
$MW_HOME/oracle_common/common/bin/pack.sh -domain=$DOMAIN_HOME-template=/path/to/template.jar # 打包Domain
$MW_HOME/oracle_common/common/bin/unpack.sh -template=/path/to/template.jar -domain=/path/to/new_domain # 解压Domain
# 诊断工具
java weblogic.diagnostics.image.ImageManager -dir /tmp/wldf # 捕获诊断镜像
java weblogic.diagnostics.harvester.HarvesterCollector # 收集运行时数据
# 安全工具
java weblogic.security.utils.AdminAccount weblogic password $DOMAIN_HOME# 重置密码
java weblogic.security.SSL.HostnameVerifier hostname# 验证主机名
# 日志查看
tail-f$DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log
tail-f$DOMAIN_HOME/servers/AdminServer/logs/access.log
# 进程管理
ps aux |grep weblogic.Server
kill-3<pid># 生成线程Dump
# 数据库监控
java weblogic.jdbc.admin.JDBCDataSourceRuntimeMain
参考标准:GB/T 22239-2019、GB/T 28448-2019、Oracle WebLogic Server Security Guide、Oracle Security Technical Implementation Guide (STIG)、CIS Oracle WebLogic Server Benchmark
适用版本:WebLogic Server 12.2.1.4 / 14.1.1
验证环境:Admin Server / Managed Server / Cluster / Kubernetes Operator 模式