Linux-CentOS7安装RocketMQ
下载地址
https://archive.apache.org/dist/rocketmq/
注意过滤漏洞版本,见后
基础安装
# 解压 unzip rocketmq-all-4.7.0-bin-release.zip
修改bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
修改bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
修改conf/broker.conf文件,添加配置
namesrvAddr=10.101.37.145:9876 brokerIP1=10.101.37.145
启动
启动 NameServer
# 终端启动,直接输出日志信息,按 ctrl+c 可直接关闭退出 sh ./bin/mqnamesrv # 后台启动 nohup sh bin/mqnamesrv &
在当前目录下会有一个 nohup.out 的日志文件,可以打开查看 namesrv 的启动情况。看到 The Name Server boot success.serializeType=JSON 表示启动成功
启动 Broker
# 属于终端启动,直接输出日志信息,按 ctrl+c 可直接关闭退出 sh bin/mqbroker -n 10.101.37.145:9876 # 后台启动:10.101.37.145:9876为namesrv的IP和端口,保证地址以及端口能够访问。并且指定配置文件启动 nohup sh bin/mqbroker -n 10.101.37.145:9876 -c ./conf/broker.conf &
同样去看nohup.out 文件,看到 boot success 表示启动成功
修改配置
在rocketmq的conf目录下添加namesrv.properties文件,文件中添加端口配置
listenPort=8876
使用配置信息后台启动namesrv
nohup sh bin/mqnamesrv -c conf/namesrv.properties &
修改broker默认端口
brokerClusterName = DefaultCluster brokerName = broker-a brokerId = 0 deleteWhen = 04 fileReservedTime = 48 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH # 新增的配置,broker默认端口 namesrvAddr=10.238.57.206:8876 brokerIP1=10.238.57.206 listenPort=8911
使用配置信息后台启动broker
nohup sh bin/mqbroker -n localhost:8876 -c conf/broker.conf &
ACL权限控制
原文链接:https://blog.csdn.net/menxu_work/article/details/125282239
权限控制(ACL)主要为RocketMQ提供Topic资源级别的用户访问控制,用户在使用RocketMQ权限控制时,可以在Client客户端通过 RPCHook注入AccessKey和SecretKey签名;
将对应的权限控制属性(包括Topic访问权限、IP白名单和AccessKey和SecretKey签名等)设置在:$ROCKETMQ_HOME/conf/plain_acl.yml
的配置文件中
Broker端对AccessKey所拥有的权限进行校验,校验不过,抛出异常;
Broker端具体的配置信息可以参见:
https://github.com/apache/rocketmq/blob/develop/docs/cn/acl/user_guide.md
主要是在broker.conf中打开acl的标志:
aclEnable=true
权限配置 plain_acl.yml, 配置文件是热加载, 不用重启Broker服务
#全局白名单,不受ACL控制 #通常需要将主从架构中的所有节点加进来 globalWhiteRemoteAddresses: - 10.10.103.* - 192.168.0.* accounts: #第一个账户 - accessKey: RocketMQ secretKey: 12345678 whiteRemoteAddress: admin: false defaultTopicPerm: DENY #默认Topic访问策略是拒绝 defaultGroupPerm: SUB #默认Group访问策略是只允许订阅 topicPerms: - topicA=DENY #topicA拒绝 - topicB=PUB|SUB #topicB允许发布和订阅消息 - topicC=SUB #topicC只允许订阅 groupPerms: # the group should convert to retry topic - groupA=DENY - groupB=PUB|SUB - groupC=SUB #第二个账户,只要是来自192.168.1.*的IP,就可以访问所有资源 - accessKey: rocketmq2 secretKey: 12345678 whiteRemoteAddress: 192.168.1.* # if it is admin, it could access all resources admin: true
springboot
--- # rocketmq rocketmq: name-server: xxx.xxx.xxx.xxx:9876 isVIPChannel: false producer: group: xxx_group send-message-timeout: 300000 access-key: rocketmq secret-key: 123456 # 生产者发送消息最大字节数,默认4MB max-message-size: 4194304 # 生产者发送异步消息失败后重试次数,默认0次 retry-times-when-send-async-failed: 2 # 生产者消息失败容错策略,默认false不开启,生产环境建议开启 retry-next-server: true # 生产者发送同步消息失败后重试次数,默认2次 retry-times-when-send-failed: 2 data: notice-topic: xxx_notice_topic notice-group: xxx_notice_group event-topic: xxx_event_topic event-group: xxx_event_group
漏洞版本
【深信服-紧急漏洞通告】
漏洞名称:Apache RocketMQ远程命令执行漏洞(CVE-2023-37582)
【检测结果】
1、通过MSSP大数据平台分析近一个月服务资产访问行为数据,尚未发现受此组件版本影响的服务资产。
2、为确保无遗漏,建议业务运维进行二次核实,检查业务资产是否有使用相关组件的情况,如有可参考详细修复建议操作避免漏洞被恶意利用。
【漏洞详情】
该漏洞是由于RocketMQ的NameServer组件缺乏有效的身份认证,攻击者可利用该漏洞在未授权的情况下,利用更新配置功能构造恶意数据远程命令执行攻击,最终造成什么后果最终获取服务器最高权限。
影响范围:
目前受影响的Apache RocketMQ版本:
Apache RocketMQ < 4.9.7
Apache RocketMQ < 5.1.2
官方解决方案:
当前官方已发布最新版本,建议受影响的用户及时更新升级到最新版本。链接如下:
https://github.com/apache/rocketmq
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理