关于rabbitmq安全漏洞的问题

2/22/2017来源:ASP.NET技巧人气:1680

在我们的很多个项目中都用到了消息中间件,虽然现在有些已经改用了kafka,但是还有相当一部分依然用的是rabbitmq。 而最近呢,我们收到了一份关于安全漏洞扫描的文档,说我们的rabbitmq存在着一些安全漏洞问题,既然是有问题,自然是需要整改的,但是看完文档以后,发现这种安全漏洞问题似乎并不是很好解决。 文档中指出的问题主要有这样三个: 一、更改密码没有验证旧密码 说的具体点,就是在登录系统后,在更改密码处,未验证原来密码,只需要两次新的密码一致便可以修改密码成功。如图所示: 这里写图片描述

二、用户名枚举 具体来说就是,首页用户登录认证时,连续认证失败后,服务器没有对帐号或ip地址实施锁定等任何措施,也就是说可以无限制的尝试和猜测用户名和密码,如图: 这里写图片描述 三、登录无验证码 这个问题和上边的问题在同一个地方,因此便不再截图,很显然的可以看到登录的时候只需要用户名和密码就够了,也就加大了安全隐患。

主要的问题也就是这么三个,从上边的截图及描述中很容易发现,这三个问题实际上是rabbitmq management的问题,是rabbitmq web ui管理界面的问题。 rabbitmq management算是rabbitmq的一个插件,从某中程度上来说并不是必要的,只是为了方便使用,有一个可视化的界面进行操作和查看自然要比全命令行要方便。 正因为这个东西是rabbitmq自有的插件,所以要解决似乎就不是那么容易了,这就不仅仅需要涉及到rabbitmq的使用,而是更要熟悉rabbitmq本身的构造代码,对于我来说,难度不是一般的大。 因此在网络上是在找不到解决办法,百度和谷歌都没能找到任何一条说这个漏洞的信息后,我只好采取一个不是很想采取,但是目前来说似乎又是唯一能解决这个问题的办法。 那就是关闭这个rabbitmq management,停止使用这个web ui。 好处是这样一来能解决这三个漏洞,当我根本不让你访问这个页面的时候,完全没有这个页面的时候,这个页面的漏洞是否还存在呢? 但是坏处也是显而易见的,这个界面本身的目的就是为了方便,关了之后,很多的操作就只能使用shell命令,也就不是那么简便了。 那么最后就说一说怎么关闭的,实际上也很简单。 我们知道linux中安装rabbitmq要启动这个rabbitmq management是使用的如下命令:

./rabbitmq-plugins enable rabbitmq_management

那么稍微有一些开发经验的大概就能设想到关闭应该是这样了:

./rabbitmq-plugins disable rabbitmq_management

事实上,我就是这么做的,执行这个命令然后重启rabbitmq,经测试,程序连接和shell命令都整成,但是那个web ui界面就不能再访问了。 好了,就是这样,不知其他朋友是否还有更好的解决办法呢?