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

posted @   生生灯火半杯月  阅读(224)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示