扩展@ @ Sammye的评论mongodb经常没有数据库用户的密码。如果数据库面向公共互联网,这尤其是个问题,因为只要在服务器的IP地址上尝试正确的端口,互联网上的每个人都可以理论上连接到数据库服务器。
为防止出现这种情况,限制防火墙可以到达服务器及其端口的流量总是个好主意。
这里是(对于ubuntu的)的样品iptables配置:
以下命令允许所有流量为localhost和到端口22(SSH),80(HTTP)和443(HTTPS)
# accept local traffic
sudo iptables -A INPUT -i lo -j ACCEPT
# allow established connections
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# allow connections to ports 22, 80, 443
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
这些命令堵塞交通的休息:
# drops the rest of the traffic to the server
# sudo iptables -P INPUT DROP
# disables the possibility to route traffic through the server (you may or may not want to use this)
# sudo iptables -P FORWARD DROP
# makes it possible to send data from the server
# sudo iptables -P OUTPUT ACCEPT
运行任何这些的iptables命令的始终是建立一个重置你的iptables配置,每5分钟一个cronjob一个好主意之前。在这种情况下,如果出现问题(例如因为您忘记在防火墙中启用端口22而将自己锁定在服务器外),则会重置规则并解决问题。 这是iptables的脚本ubunt维基重置防火墙: https://help.ubuntu.com/community/IptablesHowTo
echo "Stopping firewall and allowing everyone..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
当一切都结束,似乎是工作不要忘了安装包的iptables持久(默认情况下使用iptables只存在规则,直到重新启动服务器)
sudo apt-get install iptables-persistent
这是迄今为止未就如何确保使用iptables防火墙服务器的完整指南,但我希望它能够让你开始。
现在数据库只能从服务器上获得,而不能从公共互联网上获得。从公共互联网访问数据库反正你就必须创建一个SSH隧道到服务器:
ssh [email protected]_or_ip_adress -f -N -L 27019:yourdomain_or_ip_adress:27019
-f -N -L < - 在这里你定义应使用的端口您的数据库流量,机器
yourdomain_or_ip_adress: < - 这是端口数据库上运行您的服务器
上当做到这一点,你应该能够在本地计算机来访问您的服务器的数据库中127.0.0.1:27019。
这是一种更通用的方式来保护任何应用程序运行在暴露于互联网的服务器上。 还有一个关于如何在内部专门确保mongodb安全的官方指南,您可以在这里找到它:https://docs.mongodb.com/manual/administration/security-checklist/
当然有一件事是auth,但另一个是服务器端特定的,例如通过您拥有的私有网络来隧道传输数据。在AWS和Racskpace等基于云的服务中,您可以轻松创建自己的虚拟专用网络。在其他服务上,您可能需要协商才能正常工作 – Sammaye
我知道,但是现在我没有时间去挖掘隧道等。现在我只需要一个简单的临时修复程序。 – Per
那么,根据链接它是专门“打开”的MongoDBs所以是的,auth会暂时修复它,但严重的是,隧道应该已经完成,当数据库安装时,建议在MongoDB文档 – Sammaye