Ear*_*rlz 8 security arch-linux mongodb
我希望我的网站使用 MongoDB 作为数据存储。我在我的开发环境中使用了 MongoDB 没有任何后顾之忧,但我担心公共服务器的安全性。
我的服务器是运行 Arch Linux 的 VPS。Web 应用程序也将在其上运行,因此它只需要接受来自 localhost 的连接。并且没有其他用户(通过 ssh 或其他方式)可以直接访问我的服务器。
我应该怎么做才能保护我的 MongoDB 实例?
Dha*_*han 14
这是一个很好的清单
启用身份验证 - 即使您已将 Mongodb 服务器部署在受信任的网络中,启用身份验证也是一种很好的安全做法。如果您的网络受到威胁,它会为您提供“深度防御”。编辑您的 mongod 配置文件以启用身份验证
不要将您的生产数据库暴露在互联网上——限制对数据库的物理访问是安全的一个重要方面。如果没有必要,请不要将您的生产数据库暴露给 Internet。如果攻击者无法物理连接到您的 MongoDB 服务器,那么您的数据就会更加安全。如果您在 AWS 上,您可以将您的数据库放在 VPC 私有子网中。阅读博客文章在 VPC 中部署 MongoDB,了解更多信息。
使用防火墙 – 使用防火墙来限制允许哪些其他实体连接到您的 mongodb 服务器。最佳实践是只允许您的应用程序服务器访问数据库。如果您托管在 AWS 上,请使用“安全组”来限制访问。如果您托管在不支持防火墙结构的提供商上,您可以使用“iptables”轻松地自行配置它。请参阅 mongodb 文档为您的场景配置 iptables。
使用密钥文件设置副本集 - 指定共享密钥文件以启用副本集中 mongodb 实例之间的通信。要启用此功能,请将 keyfile 参数添加到配置文件中,如下所示。该文件的内容在所有机器上都必须相同。
禁用 HTTP 状态接口 Mongodb 默认提供了一个默认运行在端口 28017 上的 http 接口,它提供了“home”状态页面。不建议将此接口用于生产用途,最好禁用。使用“nohttpinterface”配置设置来禁用http 接口。
禁用 REST 接口 Monogdb REST 接口不推荐用于生产。它不支持任何身份验证。默认情况下它是关闭的。如果您使用“rest”配置选项打开它,您应该为生产系统关闭它。
配置 Bind_ip 如果您的系统有多个网络接口,您可以使用“bind_ip”选项来限制您的 mongodb 服务器仅侦听相关的接口。默认情况下 mongodb 将绑定到所有接口
启用 SSL – 如果您不使用 SSL,您的数据将在您的 Mongo 客户端和 Mongo 服务器之间以未加密的方式传输,并且容易受到窃听、篡改和“中间人”攻击。如果您通过互联网等不安全网络连接到 Mongodb 服务器,这一点尤其重要。
基于角色的授权——MongoDB 支持基于角色的身份验证,让您可以对每个用户可以执行的操作进行细粒度控制。使用基于角色的构造来限制访问,而不是让所有用户都成为管理员。有关更多详细信息,请参阅角色文档。
Enterprise mongodb & Kerberos Enterprise mongodb 与 Kerberos 集成以进行身份验证。有关更多详细信息,请参阅 mongodb 文档。用户名/密码系统本质上是不安全的——如果可能,使用基于遏制的身份验证。
https://scalegrid.io/blog/10-tips-to-improve-your-mongodb-security/
免责声明:我是 scalegrid.io 的创始人
Mongo 仅支持非常基本的安全性: