ActiveMQ-Artemis
Categories:
4 分钟阅读
适用范围:Apache ActiveMQ Artemis 2.x 单机、主备、集群场景。
不适用标识说明:
- 使用
【不适用】明确标记现场可判定为不适用的控制点。 - 判定依据采用 GB/T 28448-2019 的对象边界原则;消息内容和控制插件能力需结合现场实际启用情况判定。
基础信息
核查命令:
./artemis version 2>/dev/null
ps -ef | grep artemis
find . -name broker.xml -o -name bootstrap.xml
- 备注:确认版本、实例目录、配置目录、控制台地址、端口和数据目录。
- 预期证据:版本截图、进程截图、配置目录截图、端口截图。
示例输出(节选)
./artemis version
Apache ActiveMQ Artemis 2.28.0
ps -ef | grep artemis
artemis 5501 java -Xms512M -Xmx2G -jar artemis-boot.jar
./broker0/etc/broker.xml
./broker0/etc/bootstrap.xml
身份鉴别
A. 管理控制台登录
核查命令:
grep -R "console\\|hawtio\\|management" etc 2>/dev/null
- 备注:核查控制台是否启用、地址和认证方式。
- 预期证据:控制台截图、地址截图。
示例输出(节选)
grep console/hawtio etc(节选)
etc/bootstrap.xml: <binding uri="http://0.0.0.0:8161" name="artemis">
etc/broker.xml: <web bind="http://192.168.10.51:8161" path="console">
(控制台经 Nginx 反代+SSO 访问,直连仅限内网)
B. 用户与角色
核查命令:
grep -R "artemis-users.properties\\|artemis-roles.properties" etc 2>/dev/null
- 备注:核查本地用户、角色、默认账户和共享账户。
- 预期证据:用户配置截图、访谈记录。
示例输出(节选)
grep users/roles properties etc
etc/artemis-users.properties: demo-admin=***
etc/artemis-roles.properties: admins=demo-admin
(口令默认经 mask 加密存储:ENC(...))
C. 口令与失败处理
核查命令:
grep -R "security-setting\\|authentication\\|authorization" etc 2>/dev/null
- 备注:锁定能力有限,应结合来源限制、统一认证或上位平台综合判断。
- 预期证据:配置截图、平台材料。
示例输出(节选)
grep security-setting/authentication etc/broker.xml(节选)
<security-enabled>true</security-enabled>
<security-setting match="#">
<permission type="send" roles="producers"/>
<permission type="consume" roles="consumers"/>
</security-setting>
D. 会话与 HTTPS
核查命令:
grep -R "sslEnabled\\|keyStorePath\\|trustStorePath" etc 2>/dev/null
- 备注:管理和客户端接入应关注 TLS 和远程运维保护。
- 预期证据:HTTPS/TLS 截图、证书材料。
示例输出(节选)
grep sslEnabled etc
etc/broker.xml: <acceptor name="artemis">tcp://192.168.10.51:61617?sslEnabled=true;keyStorePath=...
(对外仅开放 TLS 端口,61616 明文端口关闭)
访问控制
A. 地址与队列授权
核查命令:
grep -R "security-setting" etc/broker.xml 2>/dev/null
- 备注:应区分发送、消费、创建队列、管理等权限。
- 预期证据:授权配置截图、权限说明。
示例输出(节选)
grep security-setting etc/broker.xml
<security-setting match="demo.#">
<permission type="send" roles="producers"/>
<permission type="consume" roles="consumers"/>
<permission type="createNonDurableQueue" roles="producers"/>
</security-setting>
(队列级最小授权,# 通配权限已收敛)
B. 管理接口来源限制
核查命令:
grep -R "bind\\|host\\|http-upgrade-enabled" etc 2>/dev/null
- 备注:控制台和管理接口应限制来源。
- 预期证据:配置截图、网络材料。
示例输出(节选)
grep bind/host etc
etc/bootstrap.xml: <binding uri="http://192.168.10.51:8161">
etc/broker.xml: http-upgrade-enabled=true
(控制台绑定内网地址,未监听 0.0.0.0)
C. 默认账户与测试对象
核查命令:
grep -R "guest" etc 2>/dev/null
- 备注:默认账户、测试队列和示例配置应清理或限制。
- 预期证据:配置截图、处置说明。
示例输出(节选)
grep guest etc
(无输出,guest 角色未定义,匿名接入被拒绝)
D. 文件权限
核查命令:
find etc -maxdepth 1 -type f -exec ls -l {} \\
2>/dev/null
- 备注:配置、日志和数据目录权限应最小化。
- 预期证据:权限截图、运行用户截图。
示例输出(节选)
-rw-r----- 1 artemis artemis 5230 broker.xml
-rw-r----- 1 artemis artemis 1102 bootstrap.xml
-rw------- 1 artemis artemis 340 artemis-users.properties
(配置文件权限合规)
安全审计
A. 日志配置
核查命令:
find log -type f 2>/dev/null
grep -R "logging\\|audit" etc 2>/dev/null
- 备注:核查访问、认证、管理和异常日志。
- 预期证据:日志目录截图、配置截图。
示例输出(节选)
find log -type f
log/artemis.log
log/artemis.audit.log
grep logging etc
etc/logging.properties: logger.handlers=FILE
(audit 日志独立文件,记录管理操作)
B. 日志样例
核查命令:
tail -n 20 log/* 2>/dev/null
- 备注:需证明关键连接、认证失败和异常事件留痕。
- 预期证据:日志样例、平台截图。
示例输出(节选)
tail log/artemis.log(节选)
2026-08-24 09:00:01,001 INFO [org.apache.activemq.artemis] AMQ241001: HTTP Server started
2026-08-24 10:11:22,340 WARN [org.apache.activemq.artemis.core.client] AMQ212037: Connection failure: /192.168.8.66 authentication failed
tail log/artemis.audit.log
2026-08-24 10:05:40 AUDIT admin created queue demo.dlq
C. 留存与轮转
核查命令:
grep -R "size-rotating\\|periodic" etc 2>/dev/null
- 备注:需核实留存和轮转策略。
- 预期证据:配置截图、制度、访谈记录。
示例输出(节选)
grep size-rotating/periodic etc
etc/logging.properties: handler.FILE.formatter=PATTERN
(日志按大小轮转,配合外部脚本归档保留 90 天)
D. 集中审计
核查命令:
journalctl | grep artemis | tail -n 50
- 备注:如日志进入平台,应补平台证据。
- 预期证据:平台截图、告警截图。
示例输出(节选)
journalctl | grep artemis(节选)
Aug 24 08:59:30 host systemd[1]: Started artemis.service.
Aug 24 09:00:02 host java[5501]: AMQ241001: HTTP Server started at http://192.168.10.51:8161
Aug 24 10:11:22 host java[5501]: AMQ212037: authentication failed /192.168.8.66
数据完整性
A. 地址与消息持久化
核查命令:
grep -R "persistence-enabled\\|journal-type" etc/broker.xml 2>/dev/null
- 备注:需核查持久化、镜像、复制和主备情况。
- 预期证据:配置截图、架构说明。
示例输出(节选)
grep persistence-enabled/journal-type etc/broker.xml
<persistence-enabled>true</persistence-enabled>
<journal-type>NIO</journal-type>
(持久化开启,消息写入 journal 后确认)
B. 传输完整性
核查命令:
grep -R "sslEnabled\\|connectors\\|acceptors" etc/broker.xml 2>/dev/null
- 备注:客户端和节点间通信如使用 TLS,应明确其完整性保护作用。
- 预期证据:SSL 配置截图、证书材料。
示例输出(节选)
grep sslEnabled/connectors/acceptors etc/broker.xml
<acceptor name="netty-ssl">tcp://192.168.10.51:61617?sslEnabled=true
<connector name="netty-ssl">tcp://mq-node2:61617?sslEnabled=true
(集群互联与客户端均走 TLS)
数据保密性
A. TLS 与证书
核查命令:
grep -R "keyStorePath\\|trustStorePath\\|sslEnabled" etc 2>/dev/null
- 备注:管理和敏感业务连接应优先启用 TLS。
- 预期证据:TLS 截图、证书截图。
示例输出(节选)
grep keyStorePath etc
keyStorePath=/opt/artemis/certs/broker.jks
trustStorePath=/opt/artemis/certs/truststore.jks
sslEnabled=true
(密钥库口令经 artemis.mask 加密存储)
B. 敏感配置保护
核查命令:
grep -R "password\\|secret\\|credential" etc 2>/dev/null
- 备注:用户名、密码、信任库和密钥库保护是重点。
- 预期证据:脱敏截图、权限说明。
示例输出(节选)
grep password etc(节选)
artemis-users.properties: demo-admin=ENC(1024:A1b2...)
broker.xml: cluster-password=ENC(...)
(口令均 ENC() 掩码存储,未见明文)
备份恢复
A. 配置备份
核查命令:
find etc -type f 2>/dev/null
- 备注:应覆盖 broker、bootstrap、用户角色和证书配置。
- 预期证据:备份目录截图、策略说明。
示例输出(节选)
find etc -type f
broker.xml bootstrap.xml jolokia-access.xml
artemis-users.properties artemis-roles.properties
logging.properties broker.password.codec
B. 数据与日志备份
核查命令:
find data log -type f 2>/dev/null | head
- 备注:需说明 Journal、Paging、Bindings 等目录备份策略。
- 预期证据:目录截图、备份说明。
示例输出(节选)
find data log | head
data/journal/activemq-journal.act
data/paging/demo/#page.bin
log/artemis.log
log/artemis.audit.log
C. 恢复能力
核查命令:
./artemis data print 2>/dev/null
- 备注:可通过主备切换、数据恢复和实例重建说明恢复能力。
- 预期证据:恢复手册、演练记录、工单。
示例输出(节选)
./artemis data print(节选)
Journal is read from data/journal
Journal records: 152340 messages, 88 files
(journal 完整可读,用于故障后消息恢复核查)
剩余信息保护
A. 历史数据与临时目录
核查命令:
find . -type d | grep -E "tmp|backup|old|paging|journal"
- 备注:旧实例、测试队列数据和临时目录应清理。
- 预期证据:目录截图、清理说明。
示例输出(节选)
find . -type d
data/paging data/journal backup-broker0 tmp/
(存在旧版本备份目录 backup-broker0,纳入备份台账)
B. 凭据残留
核查命令:
grep -R "password\\|secret\\|token" . 2>/dev/null
- 备注:配置、日志和脚本中的敏感信息残留应重点核查。
- 预期证据:脱敏截图、整改说明。
示例输出(节选)
grep password/secret/token .(节选)
etc/artemis-users.properties: demo-admin=ENC(***)
log/artemis.log: authentication failed(无敏感明文)
个人信息保护
A. 消息中的个人信息
核查命令:
grep -R "address-setting" etc/broker.xml 2>/dev/null
- 备注:不建议现场直接查看敏感消息正文,应结合业务访谈判断。
- 【不适用】若承载消息不含个人信息,则该点可判定不适用。
- 预期证据:业务说明、访谈记录、队列/地址清单。
示例输出(节选)
grep address-setting etc/broker.xml
<address-setting match="demo.#">
<dead-letter-address>demo.dlq</dead-letter-address>
<max-size-bytes>104857600</max-size-bytes>
<message-counter-history-day-limit>7</message-counter-history-day-limit>
</address-setting>
B. 导出与共享控制
核查命令:
find . -type f | grep -i "export\\|cli\\|consumer" 2>/dev/null
- 备注:消费工具、管理控制台和数据导出能力需关注个人信息扩散风险。
- 【不适用】若不承载个人信息,且无相关导出共享能力,则该点不适用。
- 预期证据:权限说明、制度、访谈记录。
示例输出(节选)
find . | grep export|cli|consumer
bin/artemis consumer
bin/artemis producer
bin/artemis data print
(CLI 工具使用需堡垒机授权并留痕)
入侵防范
A. 控制台与管理端口暴露
核查命令:
grep -R "console\\|management\\|acceptors" etc 2>/dev/null
- 备注:重点核查控制台、管理端口和客户端接入端口暴露情况。
- 预期证据:配置截图、端口截图、网络材料。
示例输出(节选)
grep console/management/acceptors etc
bootstrap.xml: binding http://192.168.10.51:8161
broker.xml: acceptor tcp://192.168.10.51:61617?sslEnabled=true
(控制台与接入端口均已收敛并启用认证/TLS)
B. 默认账户与危险地址权限
核查命令:
grep -R "artemis-users.properties\\|security-setting" etc 2>/dev/null
- 备注:关注默认用户、过度开放地址权限和测试队列。
- 预期证据:用户截图、权限截图、处置说明。
示例输出(节选)
grep users/security-setting etc
artemis-users.properties: demo-admin=***
security-setting match="demo.#": send/consume 最小授权
(无匿名用户,角色映射实名对应运维人员)
C. 版本与漏洞风险
核查命令:
./artemis version 2>/dev/null
- 备注:需确认版本和高危漏洞整改情况。
- 预期证据:版本截图、补丁或整改记录。
示例输出(节选)
./artemis version
Apache ActiveMQ Artemis 2.28.0
(版本较新,CVE 修复情况见补丁台账)
D. 防护与告警联动
核查命令:
tail -n 20 log/* 2>/dev/null
- 备注:Artemis 入侵防范通常依赖网络隔离、主机防护和日志告警平台联动。
- 预期证据:平台截图、告警记录、主机防护材料。
示例输出(节选)
tail log/artemis.log(节选)
2026-08-24 10:11:22,340 WARN AMQ212037: Connection failure: /192.168.8.66 authentication failed
2026-08-24 10:11:25,101 INFO RemotingService: Removed connection for /192.168.8.66
(认证失败事件完整记录并联动防火墙封禁告警)