通过IP限制对RabbitMQ的访问

时间:2016-12-22 13:04:59

标签: rabbitmq port telnet access ip-restrictions

我在包含管理和rabbitmq_auth_backend_ip_range插件的计算机上通过docker image安装了rabbit mq。我想限制对端口5671/2和15672的访问,只允许某些IP访问它们。

由于15672是Web界面,我目前还没有解决方案。有什么想法?

对于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传递凭证?如何用兔子mq完成ip限制?

2 个答案:

答案 0 :(得分:2)

rabbitmq-auth-backend-ip-range仅提供登录/与rabbitmq服务器通信的认证机制。这并不意味着您的5672端口未打开。 您仍然可以在5672上进行telnet但是如果某些管理员用户尝试特别连接到RabbitMQ服务器,那么它应该与给定的IP地址匹配,否则验证失败将返回

对于RabbitMQ管理,您可以定义如下所示的IP地址:

{rabbitmq_management, [
        {listener, [{port, 15672}, {ip, "127.0.0.1"}]}
    ]}

答案 1 :(得分:1)

Rabbitmq-auth-backend-ip-range link是基于源IP地址的客户端授权的社区插件。使用此社区插件,我们可以根据IP地址限制对客户端的访问

步骤在rabbitmq版本3.6.X中配置插件

[
{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且所有其他标签可以从任何IP地址访问的rabbitmq服务器
  • sudo service rabbitmq-server restart

PS:由于没有在线配置rabbitmq_auth_backend_ip_range插件的有效链接,所以我通过配置步骤回答了这个问题