【漏洞修复】docker 环境下,AMQP Cleartext认证漏洞,rabbitmq明文漏洞修复,超详细

这篇具有很好参考价值的文章主要介绍了【漏洞修复】docker 环境下,AMQP Cleartext认证漏洞,rabbitmq明文漏洞修复,超详细。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

docker rabbitmq amqp明文验证 漏洞

目录

1、拷贝docker配置文件到本地

2、重新启动容器:

3、添加SSL插件:

4、查看启动结果

5、基于CMF-AMQP-Configuration来生成SSL自签名文件

6、使用JDK的Keytool工具,将服务器公钥转换为JKS格式

7、创建etc/rabbitmq/rabbitmq.conf(如果不存在)

8、添加证书登录用户

9、验证证书有效性


1、拷贝docker配置文件到本地

通过docker ps 命令,查看CONTAINER ID

如:

docker cp 1ff:/etc/rabbitmq/conf.d /etc/rabbitmq/

docker cp 1ff:/etc/rabbitmq/enabled_plugins /etc/rabbitmq/

2、重新启动容器:

如:

docker run -dit --name rabbitmqserver -v /etc/rabbitmq:/etc/rabbitmq -e RABBITMQ_DEFAULT_USER=root -e RABBITMQ_DEFAULT_PASS=123456 -p 15672:15672 -p 5672:5672 -p 5671:5671 rabbitmq:management

3、添加SSL插件:

部署完成后,docker exec进入容器,在容器中添加插件才能启用SSL验证的功能

进入docker:

docker exec -it f12 /bin/sh

rabbitmq-plugins enable rabbitmq_auth_mechanism_ssl

4、查看启动结果

rabbitmq-plugins list

[E*] rabbitmq_auth_mechanism_ssl 表示成功

rabbitmq-plugins list
Listing plugins with pattern ".*" ...
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status: * = running on rabbit@f2d5bbd9c4ac
 |/
[  ] rabbitmq_amqp1_0                  3.10.5
[  ] rabbitmq_auth_backend_cache       3.10.5
[  ] rabbitmq_auth_backend_http        3.10.5
[  ] rabbitmq_auth_backend_ldap        3.10.5
[  ] rabbitmq_auth_backend_oauth2      3.10.5
[E*] rabbitmq_auth_mechanism_ssl       3.10.5
[  ] rabbitmq_consistent_hash_exchange 3.10.5
[  ] rabbitmq_event_exchange           3.10.5
[  ] rabbitmq_federation               3.10.5
[  ] rabbitmq_federation_management    3.10.5
[  ] rabbitmq_jms_topic_exchange       3.10.5
[E*] rabbitmq_management               3.10.5
[e*] rabbitmq_management_agent         3.10.5
[  ] rabbitmq_mqtt                     3.10.5
[  ] rabbitmq_peer_discovery_aws       3.10.5
[  ] rabbitmq_peer_discovery_common    3.10.5
[  ] rabbitmq_peer_discovery_consul    3.10.5
[  ] rabbitmq_peer_discovery_etcd      3.10.5
[  ] rabbitmq_peer_discovery_k8s       3.10.5
[E*] rabbitmq_prometheus               3.10.5
[  ] rabbitmq_random_exchange          3.10.5
[  ] rabbitmq_recent_history_exchange  3.10.5
[  ] rabbitmq_sharding                 3.10.5
[  ] rabbitmq_shovel                   3.10.5
[  ] rabbitmq_shovel_management        3.10.5
[  ] rabbitmq_stomp                    3.10.5
[  ] rabbitmq_stream                   3.10.5
[  ] rabbitmq_stream_management        3.10.5
[  ] rabbitmq_top                      3.10.5
[  ] rabbitmq_tracing                  3.10.5
[  ] rabbitmq_trust_store              3.10.5
[e*] rabbitmq_web_dispatch             3.10.5
[  ] rabbitmq_web_mqtt                 3.10.5
[  ] rabbitmq_web_mqtt_examples        3.10.5
[  ] rabbitmq_web_stomp                3.10.5
[  ] rabbitmq_web_stomp_examples       3.10.5

5、基于CMF-AMQP-Configuration来生成SSL自签名文件

下载CMF-AMQP-Configuration

git clone https://github.com/Berico-Technologies/CMF-AMQP-Configuration.git

进入CMF-AMQP-Configuration/ssl目录

cd CMF-AMQP-Configuration/ssl

修改配置,生成证书10年有效期

sed -i "s/valid=365/valid=3650/g" create_client_cert.sh

sed -i "s/valid=365/valid=3650/g" make_server_cert.sh

sed -i "s/valid=365/valid=3650/g" setup_ca.sh

sed -i "s/default_days = 365/default_days = 3650/g" openssl.cnf

生成ca证书,“MyRabbitMQCA”为自定义名称,名称任意。在当前目录下生成ca目录

sh setup_ca.sh testbmsca

生成服务端证书,第一个参数是服务端证书前缀,第二个参数是密码。密码任意,在当前目录下生成server目录

sh make_server_cert.sh rabbitmq-server 123456 #123456为自定义密码

生成客户端证书,第一个参数是客户端证书前缀(同时也是rabbitmq用户名),第二个参数是密码。密码任意,在当前目录下生成client目录

sh create_client_cert.sh rabbitmq-client 654321  #654321为自定义密码

复制文件到服务器/etc/rabbitmq/ssl

1. cacert.pem         # CA证书文件

2. server.cert.pem  # 服务器公钥

3. server.key.pem  # 服务器私钥

6、使用JDK的Keytool工具,将服务器公钥转换为JKS格式

keytool -import -alias rabbitmq-server \

-file server/rabbitmq-server.cert.pem \

-keystore rabbitmqStore -storepass 123456@testbms

# -alias后为别称,-file后是服务端公钥位置,-keystore后是输出JSK证书位置 STORE_PASS任意

7、创建etc/rabbitmq/rabbitmq.conf(如果不存在)

#listeners.tcp.default = 5672 

listeners.tcp = none # 关闭非tls的端口

listeners.ssl.default=5671  # tls认证监听端口

ssl_options.cacertfile=/etc/rabbitmq/ssl/cacert.pem

ssl_options.certfile=/etc/rabbitmq//ssl/rabbitmq-server.cert.pem

ssl_options.keyfile=/etc/rabbitmq//ssl/rabbitmq-server.key.pem

ssl_options.verify=verify_peer

ssl_options.fail_if_no_peer_cert=true

ssl_options.versions.1=tlsv1.2

ssl_options.versions.2=tlsv1.3

ssl_options.ciphers.1 = ECDHE-ECDSA-AES256-GCM-SHA384

ssl_options.ciphers.2 = ECDHE-RSA-AES256-GCM-SHA384

ssl_options.ciphers.3 = ECDHE-ECDSA-AES256-SHA384

ssl_options.ciphers.4 = ECDHE-RSA-AES256-SHA384

ssl_options.ciphers.5 = ECDHE-ECDSA-DES-CBC3-SHA

ssl_options.ciphers.6 = ECDH-ECDSA-AES256-GCM-SHA384

ssl_options.ciphers.7 = ECDH-RSA-AES256-GCM-SHA384

ssl_options.ciphers.8 = ECDH-ECDSA-AES256-SHA384

ssl_options.ciphers.9 = ECDH-RSA-AES256-SHA384

ssl_options.ciphers.10 = DHE-DSS-AES256-GCM-SHA384

ssl_options.ciphers.11= DHE-DSS-AES256-SHA256

ssl_options.ciphers.12 = AES256-GCM-SHA384

ssl_options.ciphers.13 = AES256-SHA256

ssl_options.ciphers.14 = ECDHE-ECDSA-AES128-GCM-SHA256

ssl_options.ciphers.15 = ECDHE-RSA-AES128-GCM-SHA256

ssl_options.ciphers.16 = ECDHE-ECDSA-AES128-SHA256

ssl_options.ciphers.17 = ECDHE-RSA-AES128-SHA256

ssl_options.ciphers.18 = ECDH-ECDSA-AES128-GCM-SHA256

ssl_options.ciphers.19= ECDH-RSA-AES128-GCM-SHA256

ssl_options.ciphers.20 = ECDH-ECDSA-AES128-SHA256

ssl_options.ciphers.21 = ECDH-RSA-AES128-SHA256

ssl_options.ciphers.22 = DHE-DSS-AES128-GCM-SHA256

ssl_options.ciphers.23 = DHE-DSS-AES128-SHA256

ssl_options.ciphers.24 = AES128-GCM-SHA256

ssl_options.ciphers.25 = AES128-SHA256

ssl_options.ciphers.26 = ECDHE-ECDSA-AES256-SHA

ssl_options.ciphers.27 = ECDHE-RSA-AES256-SHA

ssl_options.ciphers.28 = DHE-DSS-AES256-SHA

ssl_options.ciphers.29 = ECDH-ECDSA-AES256-SHA

ssl_options.ciphers.30 = ECDH-RSA-AES256-SHA

ssl_options.ciphers.31= AES256-SHA

ssl_options.ciphers.32 = ECDHE-ECDSA-AES128-SHA

ssl_options.ciphers.33 = ECDHE-RSA-AES128-SHA

ssl_options.ciphers.34 = DHE-DSS-AES128-SHA

ssl_options.ciphers.35 = DHE-DSS-AES128-SHA256

ssl_options.ciphers.36 = ECDH-ECDSA-AES128-SHA

ssl_options.ciphers.37 = ECDH-RSA-AES128-SHA

ssl_options.ciphers.38 = AES128-SHA

auth_mechanisms.1 = EXTERNAL # 使用rabbit-ssl插件进行认证 首先要配置SSL插件

#auth_mechanisms.2 = PLAIN # 明文

#auth_mechanisms.3 = AMQPLAIN # 明文

management.tcp.port = 15672

ssl_cert_login_from = common_name # 使用证书种的CN作为登录用户名

loopback_users.guest = false

重启动容器

进入容器查看运行环境:rabbitmqctl environment

8、添加证书登录用户

用户名要与客户端证书名称前缀一致

rabbitmqctl add_user 'rabbitmq-client' 'wsajg5df'

添加权限 不要忘记了

rabbitmqctl set_permissions -p "/" "rabbitmq-client" "." "." ".*"

9、验证证书有效性

openssl s_client -connect localhost:5671 \

-cert client/rabbitmq-client.cert.pem \

-key client/rabbitmq-client.key.pem \

-CAfile ca/cacert.pem

 文章来源地址https://www.toymoban.com/news/detail-743878.html

到了这里,关于【漏洞修复】docker 环境下,AMQP Cleartext认证漏洞,rabbitmq明文漏洞修复,超详细的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [漏洞修复]Docker runc容器逃逸漏洞(CVE-2021-30465)

    2021年5月31日,阿里云应急响应中心监测到国外安全研究人员披露 CVE-2021-30465 runc 符号链接挂载与容器逃逸漏洞。 针对该漏洞的整改过程。 runc是一个轻量级通用容器运行环境,它允许一个简化的探针到运行和调试的底层容器的功能,不需要整个docker守护进程的接口。 runc存在

    2024年02月12日
    浏览(42)
  • 修复漏洞(一)离线升级Docker版本

    一般人最好用的修复漏洞的方式就是更新版本 起因是使用的Docker版本被检测出来有一堆漏洞(例如:Docker 操作系统命令注入漏洞(CVE-2019-5736)) 更新环境无法联网,只能通过下载二进制文件的形式进行安装 可先通过 which docker 查看Docker可执行文件的地址 然后查看自己docker的版

    2024年02月16日
    浏览(44)
  • RabbitMQ---Spring AMQP

    Spring有很多不同的项目,其中就有对AMQP的支持: Spring AMQP的页面:http://spring.io/projects/spring-amqp 注意这里一段描述: Spring-amqp是对AMQP协议的抽象实现,而spring-rabbit 是对协议的具体实现,也是目前的唯一实现。底层使用的就是RabbitMQ。 添加AMQP的启动器: 在application.yml中添加

    2024年02月11日
    浏览(28)
  • RabbitMQ(基于AMQP的开源消息代理软件)

    (1)介绍 AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准 高级消息队列协议 ,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。

    2024年02月02日
    浏览(38)
  • 2023-07-06:RabbitMQ中的AMQP是什么?

    2023-07-06:RabbitMQ中的AMQP是什么? 答案2023-07-06: AMQP AMQP(Advanced Message Queuing Protocol)是一个应用层协议的开放标准,旨在设计面向消息的中间件。基于AMQP协议的客户端和消息中间件可以自由地传递消息,不受客户端、中间件产品或开发语言的限制。其目标是实现一种被广泛

    2024年02月12日
    浏览(51)
  • RabbitMQ 消息队列(Spring boot AMQP)

    几种常见MQ的对比: RabbitMQ ActiveMQ RocketMQ Kafka 公司/社区 Rabbit Apache 阿里 Apache 开发语言 Erlang Java Java ScalaJava 协议支持 AMQP,XMPP,SMTP,STOMP OpenWire,STOMP,REST,XMPP,AMQP 自定义协议 自定义协议 可用性 高 一般 高 高 单机吞吐量 一般 差 高 非常高 消息延迟 微秒级 毫秒级 毫秒级 毫

    2024年02月13日
    浏览(43)
  • 修复漏洞(三)升级Docker里面的镜像(MySQL、Nginx等)

    因原版本检测出来存在漏洞,故需升级底层镜像 先看看自己现在的是什么版本,教你们一个骚操作,查看Docker里面的Mysql或者其他容器版本都不用百度出来的这么麻烦 首先 docker images ,查看镜像ID 然后 docker inspect 镜像ID ,然后就可以看到以下的类似信息 上面两张图就说明

    2024年02月16日
    浏览(43)
  • 理解RabbitMQ中的AMQP-0-9-1模型,全网最全

    Type:交换器的类型。 Durability:(交换器)持久化特性,如果启动此特性,则Broker重启后交换器依然存在,否则交换器会被删除。 Auto-delete:是否自动删除,如果启用此特性,当最后一个队列解除与交换器的绑定关系,交换器会被删除。 Arguments:可选参数,一般配合插件或者

    2024年04月26日
    浏览(43)
  • (一)RabbitMQ概念-优势、劣势、应用场景 、AMQP、工作原理

    Lison dreamlison@163.com , v1.0.0 , 2023.06.22 RabbitMQ,俗称“兔子MQ”(可见其轻巧,敏捷),是目前非常热门的一款开源消息中间件,不管是互联网行业还是传统行业都广泛使用(最早是为了解决电信行业系统之间的可靠通信而设计)。 高可靠性、易扩展、高可用、功能丰富等 支持

    2024年02月15日
    浏览(52)
  • 【严重】Grafana Azure AD环境身份认证绕过漏洞

     Grafana 是一个跨平台、开源的数据可视化网络应用平台。Azure AD 是由微软提供的一种云身份验证和访问管理服务。 在 Azure AD 中,多个用户可以拥有相同的电子邮件地址。攻击者可以创建一个与目标 Grafana 账户相同的电子邮件地址的恶意帐户,并且在 Azure AD 中配置支持多租户

    2024年02月17日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包