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 @ 2022-12-28 16:07  生生灯火半杯月  阅读(275)  评论(0)    收藏  举报