各位大佬,想看那种网络设备/操作系统/数据库/中间件的测评命令清单,可在留言区留言,我会以最快速度给你们总结,然后发出来!依据GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》第三级”安全计算环境” 条款,结合 JBoss EAP 7.x / WildFly 20+ 官方安全指南及多家测评机构现场实践,给出可直接落地的 测评命令清单。
已在 JBoss EAP 7.4 / WildFly 26 / WildFly 30 环境验证通过,支持 Standalone / Domain 部署模式。
一、身份鉴别(8.1.4.1)
1.1 管理接口认证配置
| 控制项 | 测评命令 | 达标判据 | |
|---|---|---|---|
| 管理接口启用认证 | `grep -E ‘security-realm | auth-method’ $JBOSS_HOME/standalone/configuration/standalone.xml` | 启用ManagementRealm,禁用允许空密码 |
| 控制台密码策略 | cat $JBOSS_HOME/domain/configuration/mgmt-users.properties | 强密码哈希(base64 + salt) | |
| 禁用默认用户 | grep -c '^admin=' $JBOSS_HOME/standalone/configuration/mgmt-users.properties | 不存在默认admin用户 | |
| 管理接口绑定 | grep 'management-interface' $JBOSS_HOME/standalone/configuration/standalone.xml -A5 | 绑定内网IP或本地接口 |
JBoss/WildFly管理接口核查:
# 设置环境变量
exportJBOSS_HOME=/opt/jboss-eap-7.4 # 或 /opt/wildfly
exportDOMAIN_BASE=$JBOSS_HOME/domain
exportSTANDALONE_BASE=$JBOSS_HOME/standalone
# 查看管理接口配置(Standalone模式)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'management-interfaces'
# 查看HTTP管理接口(应禁用或限制IP)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A5'http-interface'
# 查看原生管理接口(推荐仅使用此接口)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A5'native-interface'
# 检查安全域配置
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A20'security-realm name="ManagementRealm"'
# 查看是否禁用允许空密码
cat$STANDALONE_BASE/configuration/standalone.xml |grep-i'allow-empty-passwords'
# 查看管理用户列表(应为加密存储)
ls-la$STANDALONE_BASE/configuration/mgmt-users.properties
ls-la$STANDALONE_BASE/configuration/mgmt-groups.properties
# 检查是否存在默认用户
grep-E'^(admin|jboss|root|user)='$STANDALONE_BASE/configuration/mgmt-users.properties 2>/dev/null
# 查看密码复杂度(通过add-user.sh脚本历史)
history|grep add-user.sh |tail-10
# 检查Domain模式配置(如使用)
cat$DOMAIN_BASE/configuration/domain.xml |grep-A10'management-interfaces'2>/dev/null
cat$DOMAIN_BASE/configuration/host.xml |grep-A10'management-interfaces'2>/dev/null
1.2 应用安全域配置
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 应用认证启用 | grep -A 10 'security-domain name="other"' $STANDALONE_BASE/configuration/standalone.xml | 配置JAAS安全域 |
| 数据库认证 | grep -A 15 'security-domain.*jdbc' | 使用JDBC Realm或LDAP |
| 密码哈希算法 | grep -i 'hash-encoder|password-encoding' | 使用SHA-256或bcrypt,非明文 |
应用安全域核查:
# 查看安全子系统配置
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A50'<subsystem xmlns="urn:jboss:domain:security:'
# 查看安全域列表
cat$STANDALONE_BASE/configuration/standalone.xml |grep'security-domain name='|head-10
# 查看默认安全域配置(other)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A15'security-domain name="other"'
# 查看JDBC安全域配置(如使用)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-B5-A20'JDBCRealm'
# 查看LDAP安全域配置(如使用)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-B5-A20'LdapRealm'
# 检查Elytron安全子系统(WildFly 11+ / EAP 7.1+)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A100'subsystem xmlns="urn:wildfly:elytron:'|head-120
# 查看Elytron安全域
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'security-domain name='|grep-A10'elytron'
# 查看密码编码器配置(Elytron)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A5'password-encoding\|hash-charset\|hash-encoding'
1.3 登录失败与会话管理
# 查看Web子系统会话配置
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A20'subsystem xmlns="urn:jboss:domain:undertow:'
# 查看会话超时设置
cat$STANDALONE_BASE/configuration/standalone.xml |grep-i'session-timeout\|idle-timeout\|default-session-timeout'
# 查看Cookie安全配置
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'servlet-container name='|grep-i'cookie'
# 查看单点登录(SSO)配置(如启用)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'single-sign-on'
# 检查并发会话限制(通过部署描述符)
find$STANDALONE_BASE/deployments -name"jboss-web.xml"-execcat{}\;2>/dev/null |grep-A5'max-active-sessions'
# 查看登录失败处理(需应用层实现,检查web.xml)
find$STANDALONE_BASE/deployments -name"web.xml"-execgrep-A5'login-config\|form-login-config'{}\;2>/dev/null |head-20
1.4 管理接口访问控制
# 查看管理接口访问控制(接口白名单)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'interface name="management"'
# 查看套接字绑定组
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A20'socket-binding-group name="standard-sockets"'
# 检查管理端口是否暴露
netstat-tulnp|grep-E':9990|:9993|:9443'# 9990=http-mgmt, 9993=native-mgmt
# 查看是否配置管理接口SSL
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'security-realm name="ManagementRealm"'|grep-i'ssl\|keystore\|truststore'
# 检查CLI访问历史(审计)
ls-la$JBOSS_HOME/.jboss-cli-history 2>/dev/null ||echo"无CLI历史文件"
tail-20$JBOSS_HOME/.jboss-cli-history 2>/dev/null
# 查看是否禁用远程管理(生产环境建议)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A5'http-interface'|grep'console-enabled'
# 应为console-enabled="false"或未配置(默认false)
高风险项:管理接口暴露于公网、使用默认账户、未启用SSL,直接判定不符合三级要求。
二、访问控制(8.1.4.2)
2.1 部署与文件权限
| 控制项 | 测评命令 | 达标判据 | |
|---|---|---|---|
| 部署目录权限 | ls -la $STANDALONE_BASE/deployments/ | 仅jboss用户可写,其他用户只读 | |
| 配置目录权限 | ls -la $STANDALONE_BASE/configuration/ | 仅jboss用户可读写 | |
| 日志目录权限 | ls -la $STANDALONE_BASE/log/ | 仅jboss用户可写,组用户可读 | |
| 敏感文件保护 | `find $JBOSS_HOME -name “.properties” -o -name “.xml” | xargs ls -la` | 无全局可读密码文件 |
文件权限核查:
# 检查JBoss进程用户
ps aux |grep-E'java.*jboss|java.*wildfly'|grep-vgrep|awk'{print $1}'|sort|uniq
# 检查安装目录权限
ls-la$JBOSS_HOME/ |head-20
# 检查Standalone目录权限
ls-la$STANDALONE_BASE/
# 检查部署目录权限(关键)
ls-la$STANDALONE_BASE/deployments/
stat-c'%a %U:%G'$STANDALONE_BASE/deployments/
# 检查配置文件权限
ls-la$STANDALONE_BASE/configuration/*.xml
stat-c'%a %U:%G'$STANDALONE_BASE/configuration/standalone.xml
# 查找明文密码文件(高风险)
find$JBOSS_HOME-type f \(-name"*.properties"-o-name"*.xml"-o-name"*.conf"\)-execgrep-l'password.*='{}\;2>/dev/null |head-10
# 检查数据源密码加密(Elytron或Vault)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'datasource'|grep-i'password'
# 应使用${VAULT::...}或${ELYTRON::...}而非明文
# 检查Vault配置(传统方式)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'vault'
# 检查Credential Store配置(Elytron方式)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'credential-store'
2.2 运行时安全管理
# 查看Java安全管理器是否启用
ps aux |grep-E'java.*jboss|java.*wildfly'|grep-vgrep|grep-o'\-Djava.security.manager'
# 查看安全策略文件
cat$STANDALONE_BASE/configuration/server.policy 2>/dev/null ||echo"未配置server.policy"
# 查看JVM安全参数
ps aux |grep-E'java.*jboss|java.*wildfly'|grep-vgrep|grep-o'\-Djava.security.*'
# 查看是否禁用不安全的协议
cat$STANDALONE_BASE/configuration/standalone.xml |grep-i'protocol.*TLS\|ssl-protocol'
# 查看是否配置CORS(跨域)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'cors'2>/dev/null ||echo"未配置CORS"
# 检查是否启用JMX(应禁用或配置认证)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'remoting-connector'|grep-i'jmx'
# 查看是否配置JMX SSL
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A20'subsystem xmlns="urn:jboss:domain:jmx:'|grep-i'ssl\|registry-binding'
2.3 默认配置清理
# 检查是否删除默认应用
ls$STANDALONE_BASE/deployments/ # 应仅包含业务应用,无welcome-content等
# 检查默认欢迎页面(应禁用或替换)
ls-la$JBOSS_HOME/welcome-content/ 2>/dev/null
# 检查是否禁用示例DS
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A5'datasource.*ExampleDS'
# 应删除或禁用ExampleDS
# 检查是否禁用默认H2数据库(生产环境不应使用)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'h2'
# 检查是否删除默认用户
grep-E'^(admin|jboss|guest)='$STANDALONE_BASE/configuration/application-users.properties 2>/dev/null
grep-E'^(admin|jboss|guest)='$STANDALONE_BASE/configuration/mgmt-users.properties 2>/dev/null
# 检查是否禁用管理控制台(生产环境建议)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A5'http-interface'|grep'console-enabled'
# 应为false
三、安全审计(8.1.4.3)
3.1 日志配置与审计
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 日志级别 | cat $STANDALONE_BASE/configuration/standalone.xml | grep -A 5 'root-logger' | INFO或DEBUG级别 |
| 访问日志启用 | cat $STANDALONE_BASE/configuration/standalone.xml | grep -A 10 'access-log' | 启用,记录客户端IP、方法、URI、状态码 |
| 审计日志 | cat $STANDALONE_BASE/configuration/standalone.xml | grep -A 10 'audit-log' | 启用管理操作审计 |
| 日志保留 | find $STANDALONE_BASE/log -name "*.log" -mtime +30 | wc -l | 保留≥6个月 |
日志配置核查:
# 查看日志子系统配置
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A30'subsystem xmlns="urn:jboss:domain:logging:'
# 查看根日志级别
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A5'root-logger'
# 查看日志处理器(文件大小、保留策略)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'periodic-rotating-file-handler\|size-rotating-file-handler'
# 查看访问日志配置(Undertow)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-B5-A15'access-log'
# 查看访问日志模式(应包含必要字段)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A5'access-log'|grep'pattern'
# 查看审计日志配置(管理操作)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A20'audit-log'
# 检查日志文件
ls-la$STANDALONE_BASE/log/
ls-la$STANDALONE_BASE/log/access_log/ 2>/dev/null ||echo"访问日志目录不存在"
# 查看最近日志内容
tail-50$STANDALONE_BASE/log/server.log
tail-50$STANDALONE_BASE/log/audit.log 2>/dev/null ||echo"审计日志不存在"
# 检查日志文件权限
stat-c'%a %U:%G'$STANDALONE_BASE/log/server.log
# 查看日志轮转配置
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'suffix\|rotate-size\|max-backup-index'
3.2 审计日志详细配置
# 查看管理审计日志处理器
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A15'audit-log name="management"'
# 查看JSON格式审计日志(推荐)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'json-formatter'
# 查看Syslog转发(如配置)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A15'syslog-handler'
# 检查是否记录CLI命令
tail-100$STANDALONE_BASE/log/audit.log 2>/dev/null |grep-E'method-name|address'|head-20
# 查看安全事件(认证失败)
grep-i'failed\|unauthorized\|authentication'$STANDALONE_BASE/log/server.log |tail-20
# 查看部署记录(防止未授权部署)
grep-i'deploy\|undeploy'$STANDALONE_BASE/log/server.log |tail-20
四、入侵防范(8.1.4.4)
4.1 服务加固与组件管理
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 版本检查 | cat $JBOSS_HOME/version.txt | 使用最新稳定版,无已知CVE |
| 禁用不用的子系统 | cat $STANDALONE_BASE/configuration/standalone.xml | grep '<subsystem' | 仅启用必要子系统 |
| 禁用不用的端口 | netstat -tulnp | grep java | 仅监听必要端口(8080,8443,9993等) |
| 禁用JMX远程 | cat $STANDALONE_BASE/configuration/standalone.xml | grep -i 'jmx.*remoting' | 禁用或配置SSL认证 |
JBoss加固核查:
# 查看JBoss/WildFly版本
cat$JBOSS_HOME/version.txt 2>/dev/null ||ls$JBOSS_HOME/jboss-modules.jar
java-jar$JBOSS_HOME/jboss-modules.jar -version2>/dev/null
# 查看启动脚本中的JVM参数
cat$JBOSS_HOME/bin/standalone.conf |grep-v'^#'|grep-v'^$'
# 查看启用的子系统(最小化原则)
cat$STANDALONE_BASE/configuration/standalone.xml |grep'<subsystem'|wc-l
cat$STANDALONE_BASE/configuration/standalone.xml |grep'<subsystem'
# 检查是否禁用不用的子系统(如jaxrs、webservices如未使用)
# 标准子系统应包含:logging, deployment-scanner, ee, ejb3, infinispan, io, jaxrs, jca, jdr, jmx, jpa, jsf, mail, messaging-activemq, naming, pojos, remoting, resource-adapters, request-controller, sar, security, security-manager, transactions, undertow, weld, xts等
# 查看监听端口
netstat-tulnp|grep$(pgrep -f'java.*jboss\|java.*wildfly'|head-1)2>/dev/null
# 检查是否禁用IIOP(如未使用)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-i'iiop'
# 检查是否禁用远程JMX
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'subsystem xmlns="urn:jboss:domain:jmx:'|grep-i'connector\|remoting'
# 查看是否配置连接限制
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'request-controller'|grep-i'max-request\|track-individual'
# 查看Undertow缓冲区限制(防止溢出攻击)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'buffer-cache\|buffers-per-region'
4.2 SSL/TLS配置
# 查看HTTPS监听器配置
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A20'https-listener'
# 查看SSL上下文配置(Elytron)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A15'server-ssl-context'
# 查看密钥库配置
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'key-store name='
# 查看信任库配置
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'trust-store'
# 检查SSL协议版本(应禁用TLS 1.0/1.1)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'server-ssl-context'|grep-i'protocols\|cipher-suite'
# 查看是否启用客户端证书认证(双向SSL)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'trust-manager'|grep-i'client-certificate'
# 检查证书有效期
keytool -list-v-keystore$STANDALONE_BASE/configuration/server.keystore 2>/dev/null |grep-E'Valid from|Alias name'|head-10
# 查看是否配置HSTS
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'https-listener'|grep-i'enable-http2\|http2-enable'
4.3 防火墙与网络防护
# 查看防火墙状态(Linux)
systemctl status firewalld 2>/dev/null || systemctl status ufw 2>/dev/null || iptables -L-n|head-10
# 检查JBoss端口访问限制
iptables -L-n|grep-E':8080|:8443|:9990|:9993'
# 查看是否配置IP白名单(通过Undertow handler)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'ip-access-control\|access-control'
# 查看是否配置请求限制(DoS防护)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'request-limit\|connection-limit'
# 查看是否配置超时
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A5'idle-timeout\|read-timeout\|write-timeout'
# 查看是否禁用不安全的HTTP方法
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'filter-ref name='|grep-i'methods'
五、恶意代码防范(8.1.4.5)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 部署包扫描 | clamscan $STANDALONE_BASE/deployments/ | 无病毒,定期扫描 |
| 上传目录限制 | find $STANDALONE_BASE -name "upload" -o -name "temp" | 禁止执行权限,限制文件类型 |
| 序列化过滤 | cat $STANDALONE_BASE/configuration/standalone.xml | grep -i 'serial' | 启用JEP 290过滤 |
恶意代码防范核查:
# 检查是否安装杀毒软件
which clamscan && clamscan --version
systemctl status clamav-daemon 2>/dev/null ||echo"ClamAV未运行"
# 扫描部署目录
clamscan -r$STANDALONE_BASE/deployments/ 2>/dev/null |tail-10
# 检查上传目录配置(应用层实现,检查server配置)
find$STANDALONE_BASE-type d -name"*upload*"-o-name"*temp*"-o-name"*tmp*"2>/dev/null |head-5
# 检查Java序列化过滤(JEP 290)
cat$STANDALONE_BASE/configuration/standalone.conf |grep-i'jdk.serialFilter'
# 或在JVM参数中:-Djdk.serialFilter=...
# 检查是否禁用不安全的反序列化
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'marshalling'|grep-i'serial'
# 查看是否配置部署扫描器(防止热部署滥用)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'deployment-scanner'|grep-i'scan-interval\|auto-deploy-zipped\|auto-deploy-exploded'
# 检查是否限制部署源
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'deployment-scanner'|grep'path'
六、可信验证(8.1.4.6)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 安装包完整性 | sha256sum $JBOSS_HOME/jboss-modules.jar | 与官方发布值比对 |
| 模块签名验证 | jarsigner -verify $JBOSS_HOME/modules/system/layers/base/org/jboss/as/server/main/jboss-as-server-*.jar | 已验证 |
| 配置文件基线 | sha256sum $STANDALONE_BASE/configuration/standalone.xml | 基线比对 |
可信验证核查:
# 验证核心JAR签名
jarsigner -verify$JBOSS_HOME/jboss-modules.jar 2>/dev/null |head-5
# 计算核心文件哈希
sha256sum $JBOSS_HOME/jboss-modules.jar
sha256sum $JBOSS_HOME/bin/standalone.sh
# 验证模块完整性(WildFly/JBoss EAP)
find$JBOSS_HOME/modules -name"*.jar"-exec sha256sum {}\;2>/dev/null |head-10
# 配置文件基线比对
sha256sum $STANDALONE_BASE/configuration/standalone.xml > /tmp/standalone.xml.baseline
# 定期比对:diff <(sha256sum $STANDALONE_BASE/configuration/standalone.xml) /tmp/standalone.xml.baseline
# 检查是否使用官方源安装
ls-la$JBOSS_HOME/*.txt 2>/dev/null # 应包含版本和构建信息
# 查看补丁历史(EAP)
$JBOSS_HOME/bin/jboss-cli.sh --connect--command="patch history"2>/dev/null ||echo"无法连接CLI或未安装补丁"
# 检查是否启用安全启动(如适用)
mokutil --sb-state 2>/dev/null ||echo"非UEFI系统或不支持"
七、数据备份与恢复(8.1.4.9)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 配置备份 | ls -la /backup/jboss/config/ | 定期备份standalone.xml等 |
| 部署包备份 | ls -la /backup/jboss/deployments/ | 保留历史版本 |
| 数据目录备份 | ls -la /backup/jboss/data/ | 包含事务日志、消息存储 |
备份与恢复核查:
# 查看备份脚本
cat /etc/cron.d/jboss-backup 2>/dev/null ||crontab-l|grep jboss
# 手动备份配置
mkdir-p /backup/jboss/config-$(date +%F)
cp$STANDALONE_BASE/configuration/*.xml /backup/jboss/config-$(date +%F)/
cp$STANDALONE_BASE/configuration/*.properties /backup/jboss/config-$(date +%F)/
# 备份部署包
cp-r$STANDALONE_BASE/deployments /backup/jboss/deployments-$(date +%F)/
# 备份数据目录(Infinispan、消息等)
cp-r$STANDALONE_BASE/data /backup/jboss/data-$(date +%F)/ 2>/dev/null ||echo"无数据目录"
# 验证备份完整性
ls-la /backup/jboss/
# 测试恢复流程(创建测试实例)
# cp -r /backup/jboss/config-20240101 $STANDALONE_BASE/configuration/
# $JBOSS_HOME/bin/standalone.sh --admin-only # 验证配置加载
# 查看事务日志(XA恢复)
ls-la$STANDALONE_BASE/data/tx-object-store/ 2>/dev/null ||echo"无事务对象存储"
# 检查消息持久化(如使用JMS)
ls-la$STANDALONE_BASE/data/activemq/ 2>/dev/null ||echo"无ActiveMQ数据"
八、高可用与集群安全(扩展)
8.1 Domain模式安全(如使用)
# 查看Domain控制器配置
cat$DOMAIN_BASE/configuration/domain.xml |head-50
# 查看Host控制器配置
cat$DOMAIN_BASE/configuration/host.xml |grep-A20'management'
# 查看Server Group配置
cat$DOMAIN_BASE/configuration/domain.xml |grep-A10'server-group'
# 检查Domain间通信安全(应使用SSL)
cat$DOMAIN_BASE/configuration/host.xml |grep-A10'remote'|grep-i'security-realm\|ssl'
# 查看JGroups集群配置(UDP/TCP安全)
cat$DOMAIN_BASE/configuration/domain.xml |grep-A30'subsystem xmlns="urn:jboss:domain:jgroups:'
# 检查是否配置AUTH协议和加密(SYM_ENCRYPT/ASYM_ENCRYPT)
8.2 集群与负载均衡
# 查看ModCluster配置(如使用)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A20'modcluster'
# 查看Undertow负载均衡配置
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A10'reverse-proxy\|handler name="lb"'
# 检查Infinispan集群安全(如使用)
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A30'subsystem xmlns="urn:jboss:domain:infinispan:'|grep-i'security\|authorization'
# 查看JGroups加密配置
cat$STANDALONE_BASE/configuration/standalone.xml |grep-A5'SYM_ENCRYPT\|ASYM_ENCRYPT\|AUTH'
一键巡检脚本(JBoss/WildFly)
#!/bin/bash
# JBoss/WildFly 等保三级一键巡检脚本
# 适用:JBoss EAP 7.x / WildFly 20+
# 执行用户:jboss或root
exportJBOSS_HOME=${JBOSS_HOME:-/opt/jboss-eap-7.4}
exportSTANDALONE_BASE=$JBOSS_HOME/standalone
echo"===== JBoss/WildFly 等保巡检报告 ====="
echo"巡检时间: $(date'+%Y-%m-%d %H:%M:%S')"
echo"服务器: $(hostname)"
echo"JBoss Home: $JBOSS_HOME"
echo""
echo"===== 1 身份鉴别 ====="
echo"--- 管理接口认证 ---"
ifgrep-q'security-realm="ManagementRealm"'$STANDALONE_BASE/configuration/standalone.xml;then
echo"管理Realm配置: ✓"
else
echo"管理Realm配置: ✗"
fi
echo"--- 默认用户检查 ---"
ifgrep-qE'^(admin|jboss)='$STANDALONE_BASE/configuration/mgmt-users.properties 2>/dev/null;then
echo"存在默认用户: ✗"
grep-E'^(admin|jboss)='$STANDALONE_BASE/configuration/mgmt-users.properties 2>/dev/null
else
echo"默认用户已清理: ✓"
fi
echo"--- 控制台访问控制 ---"
ifgrep-A5'http-interface'$STANDALONE_BASE/configuration/standalone.xml |grep-q'console-enabled="false"';then
echo"管理控制台已禁用: ✓"
else
echo"管理控制台可能启用: ⚠"
fi
echo""
echo"===== 2 访问控制 ====="
echo"--- 部署目录权限 ---"
stat-c'%a %U:%G'$STANDALONE_BASE/deployments/
if[$(stat-c'%a' $STANDALONE_BASE/deployments/)-eq755];then
echo"权限符合要求: ✓"
else
echo"权限需检查: ⚠"
fi
echo"--- 默认应用清理 ---"
if[-d"$JBOSS_HOME/welcome-content"];then
echo"welcome-content存在: ⚠ (建议删除或限制访问)"
else
echo"默认内容已清理: ✓"
fi
echo"--- 敏感文件权限 ---"
find$STANDALONE_BASE/configuration -name"*.xml"-execstat-c'%a %n'{}\;|head-5
echo""
echo"===== 3 安全审计 ====="
echo"--- 日志配置 ---"
grep-A5'root-logger'$STANDALONE_BASE/configuration/standalone.xml |head-3
echo"--- 访问日志 ---"
ifgrep-q'access-log'$STANDALONE_BASE/configuration/standalone.xml;then
echo"访问日志已启用: ✓"
else
echo"访问日志未启用: ✗"
fi
echo"--- 审计日志 ---"
if[-f"$STANDALONE_BASE/log/audit.log"];then
echo"审计日志存在: ✓"
tail-3$STANDALONE_BASE/log/audit.log 2>/dev/null
else
echo"审计日志不存在: ⚠"
fi
echo""
echo"===== 4 入侵防范 ====="
echo"--- 版本信息 ---"
cat$JBOSS_HOME/version.txt 2>/dev/null ||echo"版本文件不存在"
echo"--- 监听端口 ---"
netstat-tulnp2>/dev/null |grep$(pgrep -f'java.*jboss\|java.*wildfly'|head-1)|head-5
echo"--- SSL配置 ---"
ifgrep-q'https-listener'$STANDALONE_BASE/configuration/standalone.xml;then
echo"HTTPS监听器已配置: ✓"
else
echo"HTTPS未配置: ✗"
fi
echo"--- 子系统数量 ---"
echo"启用子系统数: $(grep-c'<subsystem' $STANDALONE_BASE/configuration/standalone.xml)"
echo""
echo"===== 5 数据备份 ====="
echo"--- 配置备份 ---"
ls-la /backup/jboss/ 2>/dev/null |head-5||echo"备份目录不存在"
echo"--- 数据目录 ---"
ls-la$STANDALONE_BASE/data/ 2>/dev/null |head-5||echo"数据目录为空"
echo""
echo"===== 6 高风险项检查 ====="
# 检查明文密码
ifgrep-r'password="[^$]'$STANDALONE_BASE/configuration/*.xml 2>/dev/null |grep-v'password="${'|head -1;then
echo"⚠ 高风险: 发现可能的明文密码配置"
fi
# 检查管理接口暴露
ifnetstat-tulnp2>/dev/null |grep-q':9990';then
echo"⚠ 高风险: 管理接口(9990)正在监听"
fi
# 检查默认DS
ifgrep-q'ExampleDS'$STANDALONE_BASE/configuration/standalone.xml;then
echo"⚠ 高风险: 默认数据源ExampleDS未删除"
fi
echo""
echo"===== 巡检完成 ====="
高风险项重点核查清单
| 检查项 | 验证命令 | 不合规判定 | 整改建议 |
|---|---|---|---|
| 管理接口无认证 | grep 'security-realm' $STANDALONE_BASE/configuration/standalone.xml | 未配置ManagementRealm | 立即启用管理Realm |
| 使用默认账户 | grep '^admin=' $STANDALONE_BASE/configuration/mgmt-users.properties | 存在admin用户 | 删除默认用户,创建新管理员 |
| 管理控制台暴露 | netstat -tulnp | grep :9990 | 0.0.0.0:9990监听 | 绑定127.0.0.1或禁用控制台 |
| 明文存储密码 | grep 'password="[^$]' $STANDALONE_BASE/configuration/standalone.xml | 存在明文密码 | 使用Vault或Credential Store加密 |
| 默认数据源未删 | grep 'ExampleDS' $STANDALONE_BASE/configuration/standalone.xml | 存在ExampleDS | 删除默认数据源配置 |
| 目录浏览风险 | ls $JBOSS_HOME/welcome-content/ | 目录存在且可访问 | 删除或限制访问welcome-content |
| 未启用HTTPS | grep 'https-listener' $STANDALONE_BASE/configuration/standalone.xml | 无HTTPS配置 | 配置SSL证书和HTTPS监听器 |
| 弱SSL协议 | grep -i 'tls.*1\.0|sslv3' $STANDALONE_BASE/configuration/standalone.xml | 启用TLS 1.0/SSLv3 | 禁用弱协议,仅启用TLS 1.2+ |
| JMX远程未禁用 | grep -A 10 'subsystem.*jmx' | grep 'remoting' | 启用远程JMX | 禁用或配置SSL认证 |
| 部署扫描器风险 | grep 'auto-deploy-exploded="true"' | 自动展开部署启用 | 禁用自动展开,使用受控部署 |
JBoss/WildFly版本差异对照
| 功能项 | JBoss EAP 6.x | JBoss EAP 7.x | WildFly 20+ |
|---|---|---|---|
| 安全子系统 | PicketBox | Elytron + PicketBox | Elytron(默认) |
| 管理Realm | 传统 | Elytron集成 | 完全Elytron |
| HTTP/2支持 | 无 | 部分 | 完整 |
| TLS 1.3 | 不支持 | 部分支持 | 完整支持 |
| Vault机制 | PicketBox Vault | Elytron Credential Store | Credential Store |
| 等保合规 | 需大量加固 | 基础合规 | 完整合规 |
| 国密支持 | 无 | 需配置 | 部分支持 |
测评执行要点
1. 权限要求
- 所有命令需
jboss或root用户执行 - 部分命令需JBoss实例停止才能安全执行配置检查
2. 现场核查重点
- 管理接口安全:必须禁用或严格限制HTTP管理接口(9990),推荐使用Native接口(9993)并配置SSL
- 密码存储:严禁在配置文件中存储明文密码,必须使用Elytron Credential Store或传统Vault
- 部署安全:生产环境必须禁用部署扫描器的自动展开功能(auto-deploy-exploded=”false”)
- 默认清理:必须删除welcome-content、ExampleDS、默认用户等
3. 版本差异注意
- JBoss EAP 6.x:使用PicketBox安全框架,配置方式与Elytron不同
- JBoss EAP 7.0-7.3:过渡版本,同时支持PicketBox和Elytron
- JBoss EAP 7.4+ / WildFly 20+:默认使用Elytron,废弃PicketBox
常用命令速查
# JBoss CLI基础(连接后执行)
$JBOSS_HOME/bin/jboss-cli.sh --connect
# 或远程连接
$JBOSS_HOME/bin/jboss-cli.sh --controller=192.168.1.100:9993 --connect--user=admin
# 常用CLI命令
:whoami # 查看当前用户
ls# 列出资源
cd /subsystem=undertow # 导航到子系统
:read-resource # 读取资源配置
:read-resource(recursive=true)# 递归读取
# 部署管理
deploy /path/to/app.war # 部署应用
undeploy app.war # 卸载应用
deployment-info # 查看部署状态
# 数据源管理
/subsystem=datasources:read-resource
/subsystem=datasources/data-source=ExampleDS:read-resource
# 安全域管理(Elytron)
/subsystem=elytron:read-resource
/subsystem=elytron/security-domain=ApplicationDomain:read-resource
# 日志管理
/subsystem=logging:read-resource
/subsystem=logging/root-logger=ROOT:read-resource
# 服务器管理(Domain模式)
/host=master:read-resource
/server-group=main-server-group:read-resource
/server-group=main-server-group:read-server-group-status
# 补丁管理(EAP)
patch history
patch info
patch apply /path/to/patch.zip
# 启动脚本参数
$JBOSS_HOME/bin/standalone.sh --admin-only # 管理-only模式
$JBOSS_HOME/bin/standalone.sh -b0.0.0.0 -bmanagement127.0.0.1 # 绑定控制
参考标准:GB/T 22239-2019、GB/T 28448-2019、JBoss EAP Security Guide、WildFly Security Architecture、CIS JBoss Benchmark
适用版本:JBoss EAP 7.2 / 7.3 / 7.4 / WildFly 20 / 26 / 30
验证环境:Standalone / Domain / Standalone Cluster 模式
声明:来自汪汪虚拟空间,仅代表创作者观点。链接:https://eyangzhen.com/6708.html