2017-01-09 29 views
-1

有一台服务器暴露给最近的MongoDB赎金骗局。 https://www.bleepingcomputer.com/news/security/mongodb-databases-held-for-ransom-by-mysterious-attacker/防止外部访问,mongodb

我关闭它,直到我解决这个问题。

解决此问题的最简单方法是什么?是添加用户吗?

mongo 
use admin 
db.createUser({ user: "root", pwd: "password", roles: [ "root" ] }) 

这足以避免被黑客入侵吗?

+0

当然有一件事是auth,但另一个是服务器端特定的,例如通过您拥有的私有网络来隧道传输数据。在AWS和Racskpace等基于云的服务中,您可以轻松创建自己的虚拟专用网络。在其他服务上,您可能需要协商才能正常工作 – Sammaye

+0

我知道,但是现在我没有时间去挖掘隧道等。现在我只需要一个简单的临时修复程序。 – Per

+0

那么,根据链接它是专门“打开”的MongoDBs所以是的,auth会暂时修复它,但严重的是,隧道应该已经完成​​,当数据库安装时,建议在MongoDB文档 – Sammaye

回答

1

扩展@ @ 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/

+0

是本手册如果你正在运行'ufw',需要配置iptables吗?设置规则似乎更容易...但是我无法使其工作 – dcsan