我最近刚刚在我的一台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]
答案 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
设置外,您应该:
mongod
and mongos
servers to require SSL for all network communication。答案 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问题中复制了这个语法。现在我只需要找到合适的方法来做到这一点。