如何安全地配置生产MongoDB服务器

来自菜鸟教程
跳转至:导航、​搜索

安全地配置生产 MongoDB 服务器

如果 MongoDB 是您选择的文档存储,那么本文应该可以帮助您安全、正确地配置所有内容以实现生产就绪环境。

MongoDB安装教程介绍了如何在Droplet上安装MongoDB。

一如既往,请阅读 Security and Authentication 的官方文档。

脚步

有两种不同的推荐路径可用。 第一个是通过 SSH 隧道安全地连接到您的数据库。 另一种方法是允许通过 Internet 连接到您的数据库。 在这两种选择中,推荐使用前者。

通过 SSH 隧道连接

通过 SSH 隧道连接到 Mongo 虚拟专用服务器,可以避免很多潜在的安全问题。 需要注意的是,您的 VPS 必须完全锁定,几乎没有其他端口打开。 推荐的 SSH 配置是仅密钥或密钥+密码。

要设置 SSH 隧道,您需要确保:

  • 您可以通过 SSH 连接到您的 Mongo Droplet
  • 您的 Mongo 实例绑定到 localhost

接下来,运行以下命令来初始化连接:

# The \s are just to multiline the command and make it more readable
ssh \
-L 4321:localhost:27017 \
-i ~/.ssh/my_secure_key \
ssh_user@mongo_db_droplet_host_or_ip

让我们一步一步地运行:

  1. SSH 隧道只需要 SSH - 您不需要特殊的其他程序/二进制文件
  2. `-L` 选项告诉 SSH 设置一个隧道,您当前机器上的端口 4321 将转发到 Mongo Droplet 上端口 `27017` 上的主机 `localhost` 被 SSH'ed 进入
  3. `-i` 选项仅代表上面提出的使用 SSH 密钥而不是密码连接的建议
  4. `ssh_user@mongo_db_droplet_host_or_ip` 是建立 SSH 连接的标准

2号真的是指令的核心。 这将决定您如何告诉您的应用程序或服务连接到您的 MongoDB Droplets。

通过互联网连接

如果不一定要通过 SSH 隧道进行连接,则您始终可以通过 Internet 进行连接。 这里有一些安全策略需要考虑。

第一种是使用非标准端口。 这更像是一种混淆技术,仅意味着默认连接适配器将不起作用。

# In your MongoDB configuration file, change the following line to something other than 27017
port = 27017

其次,您需要将 Mongo 直接绑定到应用程序服务器的 IP 地址。 将此设置为 127.0.0.1 将确保 Mongo 仅接受本地连接。

# In your MongoDB configuration file, change the following line to your application server's IP address
bind_ip = 127.0.0.1

最后,考虑使用 MongoDB 的身份验证功能并设置用户名和密码。 要进行此设置,请使用 `mongo` 命令以管理员身份连接到 MongoDB shell 并添加一个用户。 完成后,确保在 MongoDB 连接字符串中添加新添加的用户名/密码。

结论

请考虑以上是 MongoDB 安全性的起点,而不是万能的。 这里没有提到的一个关键因素是服务器防火墙规则。 要查看 MongoDB 的 10gen 防火墙建议,请访问他们的 安全文档

资源

埃特尔·斯维尔德洛夫