📜  保护了以前不安全的 MongoDB 服务器,但服务器仍然不需要身份验证:(1)

📅  最后修改于: 2023-12-03 15:36:42.963000             🧑  作者: Mango

保护了以前不安全的 MongoDB 服务器,但服务器仍然不需要身份验证:

在MongoDB早期版本中,默认是没有开启身份验证功能的。这使得攻击者可以轻易地利用弱密码或其他漏洞来远程访问MongoDB服务器,这样就会导致数据泄露、黑客入侵等风险。

为了保护MongoDB服务器,我们需要采取一些措施,比如:

  • 更新MongoDB到最新版本。新版本通常会包含许多安全漏洞的修复,从而提高MongoDB服务器的安全性;
  • 开启身份验证功能。在MongoDB中,通过设置用户名和密码作为登录凭证,只有具备凭证的用户才能访问数据库,从而提高服务器的安全性;
  • 配置访问控制。可以通过设置白名单、IP限制等方式,限制MongoDB服务器的访问,从而减小遭受攻击的风险。

如果你的MongoDB服务器之前没有开启身份验证功能,现在该怎么办呢?下面是一些具体的步骤,帮助你保护以前不安全的MongoDB服务器:

步骤一:启用身份验证

启用身份验证的第一步,是设置管理员账户。管理员账户可以用来管理用户、授权等安全设置。你可以通过以下步骤,创建一个管理员账户:

  1. 连接MongoDB服务器
mongo --port 27017
  1. 切换到admin数据库
use admin
  1. 创建管理员账户
db.createUser({
    user: "<admin_username>",
    pwd: "<admin_password>",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})

其中:

  • <admin_username> 为你想要设置的管理员用户名;
  • <admin_password> 为你想要设置的管理员密码。

在创建完管理员账户之后,就可以启用身份验证了。只需要重启MongoDB服务器时,加上--auth参数即可:

mongod --auth
步骤二:配置访问控制

在启用身份验证之后,我们还需要配置访问控制,以进一步提高服务器的安全性。您可以通过以下方式之一来配置MongoDB访问控制:

  • 配置白名单

您可以在MongoDB配置文件中,使用bindIp参数设置白名单,只允许指定IP地址的客户端访问MongoDB服务器。比如,以下配置将只允许 192.168.0.10192.168.0.11 来访问MongoDB:

bindIp = 192.168.0.10,192.168.0.11

这样就能保证只有特定IP的机器可以访问MongoDB了。

  • 配置IP限制

MongoDB还可以通过iptables命令,限制某些IP的访问。比如,以下iptables规则将禁止来自192.168.0.10的访问MongoDB:

iptables -A INPUT -s 192.168.0.10 -p tcp --dport 27017 -j DROP

这样就能保证某些IP的机器不能访问MongoDB了。

总结

对于以前没有开启身份验证功能的MongoDB服务器,我们需要启用身份验证功能,并采取一些措施,进一步提高服务器的安全性。以上为一些具体的步骤,希望可以帮助到你。