等保测评命令——jboss

各位大佬,想看那种网络设备/操作系统/数据库/中间件的测评命令清单,可在留言区留言,我会以最快速度给你们总结,然后发出来!依据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-realmauth-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 :99900.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
未启用HTTPSgrep '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.xJBoss EAP 7.xWildFly 20+
安全子系统PicketBoxElytron + PicketBoxElytron(默认)
管理Realm传统Elytron集成完全Elytron
HTTP/2支持部分完整
TLS 1.3不支持部分支持完整支持
Vault机制PicketBox VaultElytron Credential StoreCredential 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

汪汪虚拟空间的头像汪汪虚拟空间

相关推荐

添加微信
添加微信
Ai学习群
返回顶部