linux

MongoDB在Linux上怎样配置安全设置

小樊
37
2025-10-01 18:29:30
栏目: 云计算

1. 启用身份验证(核心安全机制)
编辑MongoDB配置文件(通常位于/etc/mongod.conf),在security section添加或修改以下内容以强制启用认证:

security:
  authorization: enabled

修改后重启MongoDB服务使配置生效:

sudo systemctl restart mongod

创建管理员账户(需连接到MongoDB Shell操作):

mongo
use admin
db.createUser({
  user: "admin",
  pwd: "YourStrongPassword123!",
  roles: ["root"]  # root角色拥有最高权限
})

退出Shell后,后续连接需使用认证信息(如mongo -u admin -p YourStrongPassword123 --authenticationDatabase admin)。

2. 配置网络访问控制(限制访问范围)
修改/etc/mongod.conf中的net.bindIp参数,仅允许特定IP地址或本地访问:

net:
  bindIp: 127.0.0.1,192.168.1.100  # 示例:本地+局域网IP(根据需求调整)
  port: 27017  # 默认端口,可修改但需同步更新防火墙规则

重启服务应用更改:

sudo systemctl restart mongod

通过防火墙(如ufwfirewalld)限制MongoDB端口(默认27017)的访问:

禁用不必要的接口(如HTTP/REST),在/etc/mongod.conf中添加:

net:
  http:
    enabled: false
  RESTInterfaceEnabled: false
  JSONPEnabled: false
```。  

**3. 使用TLS/SSL加密连接(保护数据传输)**  
生成SSL证书(可使用OpenSSL创建自签名证书,生产环境建议使用CA签发的证书):  
```bash
sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/ssl/mongodb.key -out /etc/ssl/mongodb.crt
sudo cat /etc/ssl/mongodb.key /etc/ssl/mongodb.crt > /etc/ssl/mongodb.pem  # 合并为PEM格式

修改/etc/mongod.conf配置SSL:

net:
  ssl:
    mode: requireSSL  # 强制使用SSL
    PEMKeyFile: /etc/ssl/mongodb.pem  # 证书路径
    CAFile: /etc/ssl/mongodb.crt      # CA证书路径(自签名时可省略或指向自身)

重启MongoDB服务:

sudo systemctl restart mongod

客户端连接时需指定SSL参数:

mongo --ssl --sslCAFile /etc/ssl/mongodb.crt --sslPEMKeyFile /etc/ssl/mongodb.pem -u admin -p YourStrongPassword123 --authenticationDatabase admin
```。  

**4. 配置审计日志(记录操作行为)**  
若使用MongoDB Enterprise版本,可在`/etc/mongod.conf`中启用审计日志:  
```yaml
security:
  auditLog:
    destination: file  # 日志输出到文件
    format: JSON       # 日志格式(JSON/CSV)
    path: /var/log/mongodb/audit.json  # 日志文件路径

重启服务后,所有用户操作(如查询、修改、登录)将被记录到指定文件,便于后续审计和追踪异常行为。

5. 使用非特权用户运行MongoDB(降低权限风险)
创建专用用户(如mongodb)用于运行MongoDB服务:

sudo useradd -r -s /bin/false mongodb  # -r表示系统用户,-s指定无登录shell

修改MongoDB数据目录和日志目录的权限(假设路径为/var/lib/mongodb/var/log/mongodb):

sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/log/mongodb

以非特权用户身份启动MongoDB:

sudo -u mongodb mongod --config /etc/mongod.conf

或修改systemd服务文件(/etc/systemd/system/mongod.service)中的UserGroup参数,然后重新加载systemd:

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

**6. 定期更新与监控(持续安全维护)**  
定期检查MongoDB官方安全公告,使用包管理器更新到最新稳定版本(如Ubuntu使用`sudo apt update && sudo apt upgrade mongodb-org`,CentOS使用`sudo yum update mongodb-org`)。  
配置监控工具(如Prometheus+Granafa)监控MongoDB的运行状态(CPU、内存、磁盘使用率)和连接数,设置警报规则(如连接数超过阈值时发送邮件通知)。  
定期备份数据(使用`mongodump`命令),并将备份文件存储在安全的位置(如异地存储或加密存储):  
```bash
mongodump --out /path/to/backup --authenticationDatabase admin -u admin -p YourStrongPassword123
```。

0
看了该问题的人还看了