MongoDB由未经授权的IP访问

时间:2017-01-19 04:20:04

标签: mongodb security

我最近刚刚在我的一台Dev服务器上玩MongoDB而没有做太严肃的事情,尽管我知道更好,但我允许从任何IP进行远程连接。在几天之内,数据库遭到了黑客入侵。赎金尝试。我耸了耸肩,决定继续将IP绑定到我的个人公共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]

3 个答案:

答案 0 :(得分:1)

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

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

深度安全需要MongoDB security checklist中列出的多项措施。

例如,除了更正bindIp设置外,您应该:

答案 1 :(得分:0)

netstat -tulpn | grep mongod

那么你就会知道哪个ip的mongo服务是绑定的......

答案 2 :(得分:-1)

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

$(document).ready(function(){
    $('#food_type1').on('change', function() {
        if ( this.value == '1') {
            $("#food1").show();
            $("#food2").hide();
        }
        else if ( this.value ==  '2') {
            $("#food2").show();
            $("#food1").hide();
        } else {
            $("#food1").hide();
            $("#food2").hide();
        }
    });
});

这确实阻止了我的连接尝试,所以我尝试了

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1

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