避免以root用户运行WebLogic,降低系统权限泄露风险。执行以下命令创建用户和组:
groupadd weblogic # 创建weblogic组
useradd -g weblogic weblogic # 创建weblogic用户并加入组
passwd weblogic # 设置用户密码(需符合复杂度要求)
修改/etc/login.defs文件,强制要求用户口令长度≥10位,包含大小写字母、数字和特殊字符:
PASS_MIN_LEN 10 # 设置最小口令长度
锁定不必要的系统账户(如adm、lp、sync等),防止未授权登录:
usermod -L adm # 锁定adm账户(示例)
保护口令文件,防止未授权修改:
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow
使用firewalld开放WebLogic默认端口(如7001),并限制仅允许可信IP访问:
firewall-cmd --zone=public --add-port=7001/tcp --permanent # 开放端口
firewall-cmd --reload # 重新加载配置
# 限制IP访问(示例:仅允许192.168.1.0/24网段访问)
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="7001" accept' --permanent
firewall-cmd --reload
关闭系统自动启动的非必要服务(如telnet、ftp),减少攻击面:
systemctl stop telnet.socket # 停止telnet服务
systemctl disable telnet.socket # 禁止开机启动
确保WebLogic进程由weblogic用户启动,避免权限提升风险。进入WebLogic安装目录的bin目录,执行:
su - weblogic # 切换至weblogic用户
./startWebLogic.sh # 启动WebLogic(需提前配置好环境变量)
登录WebLogic管理控制台(http://<服务器IP>:7001/console),进入Security Realms > myrealm > Users and Groups,修改管理员账户(如AdminServer)的口令,要求包含大小写字母、数字和特殊字符,长度≥8位。
通过SSL证书保护客户端与服务器之间的数据传输,防止信息泄露:
keytool -genkey -alias weblogic -keyalg RSA -keystore /home/weblogic/keystore.jks -keysize 2048 -validity 365
Listen Port(如7002),上传生成的keystore.jks文件,并指定密码。开启审计功能,记录用户登录、操作等行为,满足合规性要求:
进入Security Realms > myrealm > Auditing,勾选Enable Auditing,设置审计日志存储路径(如/home/weblogic/audit_logs),并配置审计级别(如All或Failure)。
防止通过浏览器直接查看WebLogic目录结构,修改weblogic.properties文件(位于$DOMAIN_HOME/config/config.xml同级目录),添加以下配置:
weblogic.httpd.indexDirectories=false
修改WebLogic响应头,隐藏服务器版本、主机名等信息,降低针对性攻击风险:
进入Environment > Servers > AdminServer > Configuration > General,点击Advanced,勾选Hide Server Version Information和Hide Hostname in Server Header。
生产模式关闭自动部署功能,增强安全性:
进入Environment > Servers > AdminServer > Configuration > General,点击Change Mode,选择Production Mode,重启WebLogic生效。
通过WebLogic Scripting Tool(WLST)批量创建用户、组及权限,减少手动操作错误:
# 连接到WebLogic管理服务器
connect('weblogic', 'weblogic1234', 't3://localhost:7001')
# 创建组
cmo.createGroup('AdminGroup')
# 创建用户并分配到组
cmo.createUser('adminUser', 'Admin@1234', 'AdminGroup')
# 分配角色权限(示例:授予AdminGroup管理员权限)
realm = cmo.getSecurityConfiguration().getDefaultRealm()
group = realm.lookupGroup('AdminGroup')
role = realm.lookupRole('Admin')
role.addMember(group)
# 断开连接
disconnect()
若需更细粒度的权限控制(如限制应用程序访问文件、网络等),可配置Java Security Manager:
weblogic.policy文件编辑$WL_HOME/wlserver/server/lib/weblogic.policy文件,添加自定义权限(示例):
// 授予应用程序读取配置文件的权限
grant codeBase "file:${weblogic.home}/servers/AdminServer/tmp/_WL_internal/com.bea_wls_internal_-1.0.0.0_12.2.1.3.0/-/-/-/-/-/-/-/-/-/-/-/-/-/-/" {
permission java.io.FilePermission "${weblogic.home}/config/*", "read";
};
// 授予应用程序访问网络的权限
grant {
permission java.net.SocketPermission "*", "connect,resolve";
};
修改startWebLogic.sh脚本(位于$DOMAIN_HOME/bin),添加以下JVM参数:
JAVA_OPTIONS="$JAVA_OPTIONS -Djava.security.manager -Djava.security.policy==$WL_HOME/wlserver/server/lib/weblogic.policy"
/home/weblogic/audit_logs(审计日志)和$DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log(服务器日志),识别异常登录、操作行为。weblogic.policy、boot.properties、config.xml等重要配置文件,防止误删或篡改。