限制通过 IP 访问 RabbitMQ
Restrict access to RabbitMQ via IP
我通过 docker 图像在一台机器上安装了 rabbit mq,包括管理和 rabbitmq_auth_backend_ip_range 插件。我想限制对端口 5671/2 和 15672 的访问,只允许某些 IP 访问它们。
由于 15672 是网络界面,我目前没有解决方案。有什么想法吗?
对于 5671/2(哪个是安全的?)我想使用插件 rabbitmq_auth_backend_ip_range
因为据我所知,这就是它的目的。
我现在的 rabbitmq.config
是这样的:
[
{rabbit, [
{auth_backends, [{rabbit_auth_backend_ip_range}]}
]},
{rabbitmq_auth_backend_ip_range, [
{tag_masks,
[{'administrator', [<<"::FFFF:192.168.0.0/112">>]}]
}
]}
].
根据 documentation,仅允许标记为 administrator
的帐户访问。但是如果我做一个 telnet 没有任何改变:
telnet ip-address 5672
我可以访问它。您如何通过 telnet 传递凭据? rabbit mq是如何限制ip的?
rabbitmq-auth-backend-ip-range 仅向 login/talk rabbitmq 服务器提供身份验证机制。这并不意味着您的 5672 端口未打开。
您仍然可以在 5672 上远程登录,但如果某些管理员用户尝试连接到 RabbitMQ 服务器,而不是它应该与给定的 IP 地址匹配,否则身份验证失败将 return
对于 RabbitMQ 管理,您可以像这样定义 IP 地址:
{rabbitmq_management, [
{listener, [{port, 15672}, {ip, "127.0.0.1"}]}
]}
Rabbitmq-auth-backend-ip-range link 是基于源 IP 地址的客户端授权的社区插件。使用此社区插件,我们可以根据 IP 地址限制对客户端的访问
在 rabbitmq 版本 3 中配置插件的步骤6.X
- wget https://dl.bintray.com/rabbitmq/community-plugins/3.6.x/rabbitmq_auth_backend_ip_range/rabbitmq_auth_backend_ip_range-20180116-3.6.x.zip
- 将内容解压缩到 /usr/lib/rabbitmq/lib/rabbitmq_server-3.x/plugins
- 启用插件:
rabbitmq-plugins enable rabbitmq_auth_backend_ip_range
- 设置一个自定义标签,此插件将阻止特定 IP 地址
- rabbitmqctl set_user_tags custom_user custom_tag
- 配置rabbitmqctl配置文件
- vi /etc/rabbitmq/rabbitmq.config
[
{rabbit, [
{tcp_listeners, [5672]},
{auth_backends, [
{rabbit_auth_backend_internal,
[rabbit_auth_backend_internal, rabbit_auth_backend_ip_range]
}
]
}
]},
{rabbitmq_auth_backend_ip_range, [
{tag_masks,
[{'customtag', [<<"::FFFF:172.xx.xx.xxx">>]}]},
{default_masks, [<<"::0/0">>]}
]}
].
- 此配置将以这样的方式生效,即具有标签
customtag
的用户将能够连接到具有 IP 地址 172.xx.xx.xxx 的 rabbitmq 服务器,并且所有其他标签可以从任何 IP 地址访问
- sudo 服务 rabbitmq 服务器重启
PS: 由于网上没有有效的link配置rabbitmq_auth_backend_ip_range插件,所以我用配置步骤回答了这个问题
我通过 docker 图像在一台机器上安装了 rabbit mq,包括管理和 rabbitmq_auth_backend_ip_range 插件。我想限制对端口 5671/2 和 15672 的访问,只允许某些 IP 访问它们。
由于 15672 是网络界面,我目前没有解决方案。有什么想法吗?
对于 5671/2(哪个是安全的?)我想使用插件 rabbitmq_auth_backend_ip_range
因为据我所知,这就是它的目的。
我现在的 rabbitmq.config
是这样的:
[
{rabbit, [
{auth_backends, [{rabbit_auth_backend_ip_range}]}
]},
{rabbitmq_auth_backend_ip_range, [
{tag_masks,
[{'administrator', [<<"::FFFF:192.168.0.0/112">>]}]
}
]}
].
根据 documentation,仅允许标记为 administrator
的帐户访问。但是如果我做一个 telnet 没有任何改变:
telnet ip-address 5672
我可以访问它。您如何通过 telnet 传递凭据? rabbit mq是如何限制ip的?
rabbitmq-auth-backend-ip-range 仅向 login/talk rabbitmq 服务器提供身份验证机制。这并不意味着您的 5672 端口未打开。 您仍然可以在 5672 上远程登录,但如果某些管理员用户尝试连接到 RabbitMQ 服务器,而不是它应该与给定的 IP 地址匹配,否则身份验证失败将 return
对于 RabbitMQ 管理,您可以像这样定义 IP 地址:
{rabbitmq_management, [
{listener, [{port, 15672}, {ip, "127.0.0.1"}]}
]}
Rabbitmq-auth-backend-ip-range link 是基于源 IP 地址的客户端授权的社区插件。使用此社区插件,我们可以根据 IP 地址限制对客户端的访问
在 rabbitmq 版本 3 中配置插件的步骤6.X
- wget https://dl.bintray.com/rabbitmq/community-plugins/3.6.x/rabbitmq_auth_backend_ip_range/rabbitmq_auth_backend_ip_range-20180116-3.6.x.zip
- 将内容解压缩到 /usr/lib/rabbitmq/lib/rabbitmq_server-3.x/plugins
- 启用插件:
rabbitmq-plugins enable rabbitmq_auth_backend_ip_range
- 设置一个自定义标签,此插件将阻止特定 IP 地址
- rabbitmqctl set_user_tags custom_user custom_tag
- 配置rabbitmqctl配置文件
- vi /etc/rabbitmq/rabbitmq.config
[ {rabbit, [ {tcp_listeners, [5672]}, {auth_backends, [ {rabbit_auth_backend_internal, [rabbit_auth_backend_internal, rabbit_auth_backend_ip_range] } ] } ]}, {rabbitmq_auth_backend_ip_range, [ {tag_masks, [{'customtag', [<<"::FFFF:172.xx.xx.xxx">>]}]}, {default_masks, [<<"::0/0">>]} ]} ].
- 此配置将以这样的方式生效,即具有标签
customtag
的用户将能够连接到具有 IP 地址 172.xx.xx.xxx 的 rabbitmq 服务器,并且所有其他标签可以从任何 IP 地址访问 - sudo 服务 rabbitmq 服务器重启
PS: 由于网上没有有效的link配置rabbitmq_auth_backend_ip_range插件,所以我用配置步骤回答了这个问题