2017-01-19 172 views
0

我刚刚在我的一个Dev服务器上玩过MongoDB,没有做任何过于严肃的事情,尽管知道的更好,我允许从任何IP进行远程连接。数天后,数据库被勒索,并进行赎金。我耸了耸肩,决定继续将IP与我的个人公共IP和本地服务器绑定,以为它会关闭违规。MongoDB被未经授权的IP访问

没有。数据库再次遭到破坏,因此我决定查看日志,并清楚地显示连接是从未包含在我的配置中的IP完成的。这怎么会发生呢?

此外,我做了ipbind更改后执行service mongodb restart

这里是我的配置的网络接口部分

# network interfaces 
net: 
    port: 27017 
    bindIp: [127.0.0.1,90.207.xxx.xxx,76.94.xxx.xxx,23.23.xxx.xxx] 
+1

试试这个问题在http://security.stackexchange.com/,你可能会发现一些答案 –

+1

Doh!好点,对不起。 –

+0

您可以只允许这些来自服务器的有限IP连接到您的数据库。我想你现在可能已经将它们设置为0.0.0.0。 –

回答

0

bindIp setting是您的MongoDB服务器收听的IP地址列表,而不是限制远程访问的防火墙。如果您的服务器具有私有IP和公有IP,则bindIp列表最多应该有三个条目:127.0.0.1(本地主机),私有IP和公有IP。

理想情况下,您应该将MongoDB部署限制为仅侦听本地主机或私有IP,并通过SSH或VPN进行远程连接。

深度安全需要采取多种措施,如MongoDB security checklist中所述。

例如,除了纠正你bindIp设置你应该:

+0

我刚刚结束了安全清单,并没有出现问题。标记为正确的答案。 –

0

尝试

netstat -tulpn | grep mongod 

,那么你会知道在哪个IP是蒙戈服务绑定...

0

我发现问题。 [xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx]不能是IP绑定的正确语法。为了测试我改变了IP绑定回

# network interfaces 
net: 
    port: 27017 
    bindIp: 127.0.0.1 

哪件事INFACT挡住我的连接企图,所以我又试图

# network interfaces 
net: 
    port: 27017 
    bindIp: [127.0.0.1,1.1.1.1] 

这是一个公然错误的IP,它让我连接没有问的问题。我已经从之前的一个stackoverflow问题中复制了这个语法。现在我只需要找到适当的方法来做到这一点。

+0

不正确。这不是找到适当的方法来做到这一点。 bindIp不是防火墙。它只定义了mongodb绑定的IP地址列表。您只能放置当前承载mongodb服务器的机器M的IP地址。为了允许远程访问,您需要将公共IP设置为M.为了允许LAN连接,您需要将M的本地私有IP,并且最终只允许来自同一台机器的连接,该机器当前承载您将编写127.0的mongodb服务器。 0.1(注意多个IP的语法不同)。 – valenz