- 首页 >
- 问答 >
-
云计算 >
- MongoDB Linux配置中的安全设置有哪些
MongoDB Linux配置中的安全设置有哪些
小樊
44
2025-12-24 09:21:53
MongoDB Linux 安全设置清单
一 身份与访问控制
- 启用授权:在配置文件 /etc/mongod.conf 中开启 security.authorization: enabled,强制所有客户端进行身份验证。完成后重启服务。
- 创建管理员:连接 mongo shell,切换到 admin 库,创建高权限用户(如 root 或 userAdminAnyDatabase),用于后续用户与权限管理。
- 最小权限原则:按库/按应用创建用户并授予精确角色(如 readWrite、dbOwner),避免使用过于宽泛的角色。
- 本地主机例外:仅在初始化阶段临时利用 localhost 例外创建首个管理员,随后关闭该例外,防止未授权本地访问。
- 企业认证扩展:如需对接企业目录,可使用 LDAP 或 Kerberos(MongoDB Enterprise),并合理设置缓存与连接池参数以降低目录服务压力。
二 网络与传输安全
- 绑定地址最小化:在 net.bindIp 中仅绑定必要地址,优先 127.0.0.1;如为集群/多机通信,仅开放内网 LAN IP(如 192.168.0.0/16、10.0.0.0/8、172.16.0.0/12 等),避免 0.0.0.0。
- 防火墙隔离:使用 ufw/iptables/firewalld 限制对 27017 的访问,仅允许受信任网段或跳板机。
- 加密传输:启用 TLS/SSL,生产环境使用由受信任 CA 签发的证书;配置 net.ssl.mode: requireSSL,并正确设置 PEMKeyFile/CAFile;MongoDB 在支持的系统上默认禁用 TLS 1.0/1.1,仅允许强加密套件。
- 集群内部通信:副本集/分片集群建议使用 TLS 与 member certificates,并通过 net.tls.clusterAuthX509.attributes 统一证书属性以便成员认证。
三 进程与系统加固
- 最小权限运行:创建专用系统用户(如 mongod),使用 chown/chmod 收紧 /var/lib/mongodb、/var/log/mongodb 等目录权限,禁止以 root 运行。
- 禁用不必要接口:关闭 HTTP 接口 与 REST/JSONP 等历史接口,减少攻击面。
- 审计与日志:开启 审计日志(auditLog) 记录关键操作;配置 systemLog.destination: file、logAppend: true、path,并定期审计与轮转。
- 备份与恢复:建立例行 mongodump/mongorestore 备份策略,定期验证可恢复性。
四 复制集与分片场景的额外要点
- 密钥文件认证:在 security.keyFile 中配置共享密钥,用于副本集/分片成员间的内部认证;确保文件权限为 400,各成员密钥内容一致。
- 集群认证模式:根据部署选择 keyFile 或 x509 的 clusterAuthMode,并保持成员证书属性一致,确保滚动升级与节点互信稳定。
- 证书与属性一致性:为成员证书配置一致的 O/OU/DC 等属性,或在 net.tls.clusterAuthX509.attributes 中显式指定用于认证的字段。
五 快速配置示例
- 启用认证与本地仅监听
- /etc/mongod.conf
- security:
- net:
- bindIp: 127.0.0.1
- port: 27017
- systemLog:
- destination: file
- path: /var/log/mongodb/mongod.log
- logAppend: true
- processManagement:
- 创建管理员并重启
- mongo
- use admin
- db.createUser({ user: “admin”, pwd: “StrongPass!23”, roles: [“root”] })
- sudo systemctl restart mongod
- 启用 TLS(示例)
- 生成证书(测试可用自签,生产请用受信 CA)
- openssl req -newkey rsa:2048 -nodes -x509 -days 3650 -keyout mongodb-key.pem -out mongodb-cert.pem
- /etc/mongod.conf
- net:
- ssl:
- mode: requireSSL
- PEMKeyFile: /path/to/mongodb-key.pem
- CAFile: /path/to/mongodb-cert.pem
- sudo systemctl restart mongod
- 防火墙(UFW 示例,仅允许内网)
- sudo ufw allow from 192.168.1.0/24 to any port 27017
- sudo ufw enable