linux

MongoDB在Linux上的安全设置有哪些

小樊
38
2025-10-26 23:31:29
栏目: 云计算

1. 启用身份验证(核心安全机制)
MongoDB默认未启用身份验证,需通过配置强制用户认证。编辑/etc/mongod.conf文件,添加/修改security.authorization参数:

security:
  authorization: enabled

重启MongoDB服务使配置生效:sudo systemctl restart mongod
创建管理员用户(需在admin数据库中操作):

use admin
db.createUser({
  user: "admin",
  pwd: "强密码(包含大小写、数字、特殊字符)",
  roles: ["root"]  // root角色拥有最高权限
})

后续连接需指定用户名、密码及认证数据库(如mongo -u admin -p 密码 --authenticationDatabase admin)。

2. 限制网络访问(缩小攻击面)
通过配置bindIp参数,仅允许特定IP地址访问MongoDB。编辑/etc/mongod.conf

net:
  bindIp: 127.0.0.1,192.168.1.100  # 本地+受信任的局域网IP(根据需求调整)
  port: 27017  # 建议保持默认端口,避免频繁变更增加维护成本

重启服务生效:sudo systemctl restart mongod
补充:防火墙规则
使用ufw(Ubuntu)或firewalld(CentOS)限制端口访问:

3. 使用非特权用户运行MongoDB(降低权限风险)
避免以root用户运行MongoDB,创建专用用户:

sudo useradd -r -s /bin/false mongodb  # 创建系统用户(无登录权限)
sudo chown -R mongodb:mongodb /var/lib/mongodb  # 数据目录归属
sudo chown -R mongodb:mongodb /var/log/mongodb  # 日志目录归属

修改/etc/systemd/system/mongod.service(若不存在则创建),指定用户:

[Service]
User=mongodb
Group=mongodb

重新加载systemd并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart mongod
```。


**4. 配置SSL/TLS加密通信(防数据泄露)**  
生成自签名证书(生产环境建议使用CA签发的证书):  
```bash
sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/ssl/private/mongodb-key.pem -out /etc/ssl/certs/mongodb-cert.pem

编辑/etc/mongod.conf,启用SSL:

net:
  ssl:
    mode: requireSSL  # 强制使用SSL
    PEMKeyFile: /etc/ssl/private/mongodb-key.pem  # 私钥路径
    CAFile: /etc/ssl/certs/mongodb-cert.pem  # 证书路径(自签名时可省略或指向自身)

重启服务:sudo systemctl restart mongod
客户端连接时需指定证书:

mongo --ssl --sslCAFile /etc/ssl/certs/mongodb-cert.pem --sslPEMKeyFile /etc/ssl/private/mongodb-key.pem -u admin -p 密码 --authenticationDatabase admin
```。


**5. 配置访问控制(细粒度权限管理)**  
遵循**最小权限原则**,为不同数据库创建专用用户:  
```javascript
use myDatabase  // 切换至目标数据库
db.createUser({
  user: "appUser",
  pwd: "应用专用密码",
  roles: ["readWrite", "dbOwner"]  // 仅授予应用所需权限(如读写、数据库管理)
})

创建只读用户(适用于报表查询等场景):

use myDatabase
db.createUser({
  user: "reportUser",
  pwd: "报表密码",
  roles: ["read"]  // 仅允许读取数据
})

定期审计用户权限,删除闲置账户。

6. 配置审计日志(记录敏感操作)
MongoDB Enterprise版支持审计日志,记录用户操作(如查询、修改、删除)。编辑/etc/mongod.conf

security:
  auditLog:
    destination: file  # 日志输出到文件
    format: JSON       # 日志格式(JSON易解析)
    path: /var/log/mongodb/audit.json  # 日志路径
    filter: '{ "users": ["admin"], "operationType": ["find", "update", "delete"] }'  # 可选:过滤特定操作

重启服务:sudo systemctl restart mongod
日志可用于追踪异常操作(如未授权访问、数据篡改)。

7. 禁用不必要的接口(减少攻击入口)
MongoDB默认开启HTTP接口和REST API,建议禁用:
编辑/etc/mongod.conf

net:
  http:
    enabled: false  # 关闭HTTP接口
    RESTInterfaceEnabled: false  # 关闭REST API
    JSONPEnabled: false  # 关闭JSONP(防止跨站脚本攻击)

重启服务:sudo systemctl restart mongod

8. 定期更新与监控(应对新威胁)

0
看了该问题的人还看了