
استغلال للثغرة CVE-2023-37582 يستهدف Apache RocketMQ، وهي منصة مراسلة موزعة ذات زمن استجابة منخفض، إنتاجية عالية، ودعم للرسائل المعاملاتية، المصادقة، والتشفير.
Apache RocketMQ هي منصة رسائل وبث موزعة مع زمن انتقال منخفض وأداء عالٍ وموثوقية، وسعة بمستوى تريليون، وقابلية توسع مرنة.
توفر مجموعة متنوعة من الميزات:
توجهك هذه الفقرة خلال خطوات تثبيت RocketMQ بطرق مختلفة. للتطوير والاختبار المحلي، سيتم إنشاء مثيل واحد فقط لكل مكون.
يعمل RocketMQ على جميع أنظمة التشغيل الرئيسية ويتطلب فقط تثبيت Java JDK الإصدار 8 أو أعلى. للتحقق، قم بتشغيل java -version:
$ java -version
java version "1.8.0_121"
لمستخدمي Windows، انقر هنا لتنزيل إصدار RocketMQ الثنائي 4.9.3، وفك ضغطه إلى القرص المحلي لديك، مثل D:\rocketmq.
لمستخدمي macOS و Linux، قم بتنفيذ الأوامر التالية:
# Download release from the Apache mirror
$ wget https://archive.apache.org/dist/rocketmq/4.9.3/rocketmq-all-4.9.3-bin-release.zip
# Unpack the release
$ unzip rocketmq-all-4.9.3-bin-release.zip
قم بتجهيز طرفية وانتقل إلى دليل bin المستخرج:
$ cd rocketmq-4.9.3/bin
1) بدء NameServer
سيستمع NameServer على 0.0.0.0:9876، تأكد من أن المنفذ غير مستخدم من قبل الآخرين على الجهاز المحلي، ثم قم بما يلي.
لمستخدمي macOS و Linux:
### start Name Server
$ nohup sh mqnamesrv &
### check whether Name Server is successfully started
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
لمستخدمي Windows، تحتاج إلى تعيين متغيرات البيئة أولاً:
ROCKETMQ_HOME="D:\rocketmq.ثم انتقل إلى دليل rocketmq، واكتب وقم بتشغيل:
$ mqnamesrv.cmd
The Name Server boot success...
2) بدء Broker
لمستخدمي macOS و Linux:
### start Broker
$ nohup sh bin/mqbroker -n localhost:9876 &
### check whether Broker is successfully started, eg: Broker's IP is 192.168.1.2, Broker's name is broker-a
$ tail -f ~/logs/rocketmqlogs/broker.log
The broker[broker-a, 192.169.1.2:10911] boot success...
لمستخدمي Windows:
$ mqbroker.cmd -n localhost:9876
The broker[broker-a, 192.169.1.2:10911] boot success...
يمكنك تشغيل RocketMQ على جهازك الخاص داخل حاويات Docker،
سيتم استخدام شبكة host لكشف منفذ الاستماع في الحاوية.
1) بدء NameServer
$ docker run -it --net=host apache/rocketmq ./mqnamesrv
2) بدء Broker
$ docker run -it --net=host --mount source=/tmp/store,target=/home/rocketmq/store apache/rocketmq ./mqbroker -n localhost:9876
يمكنك أيضًا تشغيل مجموعة RocketMQ داخل مجموعة Kubernetes باستخدام RocketMQ Operator.
قبل عملياتك، تأكد من تثبيت kubectl وملف kubeconfig المرتبط على جهازك.
1) تثبيت CRDs
### install CRDs
$ git clone https://github.com/apache/rocketmq-operator
$ cd rocketmq-operator && make deploy
### check whether CRDs is successfully installed
$ kubectl get crd | grep rocketmq.apache.org
brokers.rocketmq.apache.org 2022-05-12T09:23:18Z
consoles.rocketmq.apache.org 2022-05-12T09:23:19Z
nameservices.rocketmq.apache.org 2022-05-12T09:23:18Z
topictransfers.rocketmq.apache.org 2022-05-12T09:23:19Z
### check whether operator is running
$ kubectl get pods | grep rocketmq-operator
rocketmq-operator-6f65c77c49-8hwmj 1/1 Running 0 93s
2) إنشاء مجموعة (Cluster Instance)
### create RocketMQ cluster resource
$ cd example && kubectl create -f rocketmq_v1alpha1_rocketmq_cluster.yaml
### check whether cluster resources is running
$ kubectl get sts
NAME READY AGE
broker-0-master 1/1 107m
broker-0-replica-1 1/1 107m
name-service 1/1 107m