irpas技术客

【漏洞修复】AMQP Cleartext认证漏洞,配置EXTERNAL鉴权方式_不太灵光的程序员_amqp明文验证

大大的周 3512

文章目录 问题描述RabbitMQ鉴权机制验证rabbitMQ服务配置修改rabbitmq.config服务器 部署docker部署


问题描述

漏洞编号 76311 风险级别 中风险 远程主机正在运行允许明文身份验证的服务。 远程高级消息队列协议(AMQP)服务支持一个或多个身份验证机制,允许以清晰的方式发送凭据。 解决办法 在AMQP配置中禁用明文认证机制。

RabbitMQ鉴权机制

RabbitMQ 支持多种 SASL 鉴权机制。服务器中内置了三种:PLAIN、AMQPLAIN 和 RABBIT-CR-DEMO,以及一种通过插件方式的 EXTERNAL。 更多鉴权机制可以通过插件提供。查阅插件开发指南获取更多关于通用插件开发的信息。

机制类型描述PLAINSASL PLAIN 鉴权。在 RabbitMQ 服务器和客户端都是默认开启,大部分其他客户端也是该默认设置。AMQPPLAIN为像后兼容的非标准版 PLAIN,这个在 RabbitMQ 服务端默认开启。EXTERNAL鉴权发生在使用带外机制,如 x509 证书的对等验证,客户端 IP 地址范围,或者类似的。这样的机制通用由 RabbitMQ 插件提供。RABBIT-CR-DEMO展示质询-响应鉴权的非标准机制。这个机制安全性与 PLAIN 相等,在 RabbitMQ 服务端默认不开启。

RabbitMQ 应用中配置变量 auth_mechanisms 决定了提供哪一种已安装的机制给连接的客户端。该变量应该是相应机制名称的原子列表,如:默认的 [‘PLAIN’, ‘AMQPLAIN’]。该服务端的列表不代表特定的顺序。

验证rabbitMQ服务配置 # 服务器 部署 rabbitmqctl environment # docker 部署 docker exec rabbitmq rabbitmqctl environment

修改rabbitmq.config 服务器 部署

vi /etc/rabbitmq/rabbitmq.config

[ {rabbit, [ { tcp_listeners, [ 5672 ] }, { ssl_listeners, [ ] }, {default_user, <<"your_user">>}, {default_pass, <<"your_pass">>}, {loopback_users, []}, {auth_mechanisms,['EXTERNAL']} ] }, { rabbitmq_management, [ { listener, [ { port, 15672 }, { ssl, false } ] } ] } ]. docker部署

我们使用RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS环境变量,例如,配置channel_max看起来像 -e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbit auth_mechanisms ['EXTERNAL']". 在环境中翻译时,变量 auth_mechanisms 与 [‘EXTERNAL’]之间的空格会翻译成逗号。

# 删除原有的容器 docker stop rabbitmq docker rm rabbitmq # 运行新容器 docker run -dit --name rabbitmq -e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbit auth_mechanisms ['EXTERNAL']" -v /mnt/service-data/rabbitmq/lib:/var/lib/rabbitmq -v /mnt/service-data/rabbitmq/log:/var/log/rabbitmq rabbitmq:3.5.7 # 验证配置 docker exec rabbitmq rabbitmqctl environment


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #amqp明文验证 #支持多种 #sasl