服务器暴露于最近的MongoDB赎金骗局。 https://www.bleepingcomputer.com/news/security/mongodb-databases-held-for-ransom-by-mysterious-attacker/
我关闭了它,直到我解决了这个问题。
解决此问题的最简单方法是什么?是添加用户吗?
mongo
use admin
db.createUser( { user: "root", pwd: "password", roles: [ "root" ] } )
这足以避免被黑客入侵吗?
答案 0 :(得分:1)
扩展@ Sammye的评论mongodb通常没有数据库用户的密码。如果数据库面向公共互联网,这尤其成问题,因为只需在服务器的IP地址上尝试正确的端口,互联网上的每个人理论上都可以连接到数据库服务器。
为防止出现这种情况,最好限制防火墙可以到达服务器及其端口的流量。
这是一个示例iptables配置(对于ubuntu):
以下命令允许所有到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命令之前,最好设置一个每5分钟重置iptables配置的cronjob。在这种情况下,如果出现问题(例如,因为您忘记在防火墙中启用端口22,您将自己锁定在服务器外),规则将重置,您可以解决问题。 这是来自iptables ubunt wiki的脚本来重置防火墙: 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-persistent (默认情况下,iptables规则只存在,直到服务器重新启动)
sudo apt-get install iptables-persistent
到目前为止,这还不是关于如何使用iptables作为防火墙保护服务器的完整指南,但我希望它可以帮助您入门。
现在数据库只能从服务器上访问,而不能从公共互联网上访问。要从公共互联网访问您的数据库,您必须创建一个到您的服务器的ssh隧道:
ssh youruser@yourdomain_or_ip_adress -f -N -L 27019:yourdomain_or_ip_adress:27019
-f -N -L 27019 < - 在此定义应在数据库的您的 计算机上使用的端口交通
yourdomain_or_ip_adress: 27019 < - 这是端口,数据库在 服务器上运行
完成此操作后,您应该能够从本地计算机上的服务器访问数据库,地址为127.0.0.1:27019。
这是一种更通用的方法来保护在暴露于互联网的服务器上运行的任何应用程序。 还有关于如何在内部专门保护mongodb的官方指南,您可以在此处找到它:https://docs.mongodb.com/manual/administration/security-checklist/