首页主机资讯CentOS MongoDB安全配置指南

CentOS MongoDB安全配置指南

时间2025-10-24 14:44:03发布访客分类主机资讯浏览1269
导读:CentOS MongoDB安全配置指南 1. 系统与MongoDB基础准备 更新系统:运行sudo yum update -y确保CentOS系统为最新版本,修复已知安全漏洞。 安装MongoDB:通过官方YUM仓库安装MongoDB(...

CentOS MongoDB安全配置指南

1. 系统与MongoDB基础准备

  • 更新系统:运行sudo yum update -y确保CentOS系统为最新版本,修复已知安全漏洞。
  • 安装MongoDB:通过官方YUM仓库安装MongoDB(以4.2版本为例),创建仓库文件/etc/yum.repos.d/mongodb-org-4.2.repo,内容如下:
    [mongodb-org-4.2]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
    
    执行sudo yum install -y mongodb-org安装MongoDB。
  • 启动服务:启动MongoDB并设置开机自启:sudo systemctl start mongod & & sudo systemctl enable mongod

2. 启用身份验证(核心安全措施)

编辑MongoDB配置文件/etc/mongod.conf,在security section添加以下内容以强制身份验证:

security:
  authorization: enabled

保存后重启服务使配置生效:sudo systemctl restart mongod

3. 创建管理员账户(超级权限)

使用MongoDB Shell(mongo)切换至admin数据库,创建拥有root角色(超级管理员)的账户:

use admin
db.createUser({

  user: "admin",
  pwd: "YourStrongPassword123!", // 替换为包含大小写字母、数字和符号的强密码
  roles: [{
 role: "root", db: "admin" }
]
}
    )

退出Shell:exit

4. 配置防火墙限制访问

使用firewalld开放MongoDB默认端口(27017),并限制仅允许可信IP访问:

sudo firewall-cmd --permanent --zone=public --add-port=27017/tcp
sudo firewall-cmd --reload

若需进一步限制源IP(如仅允许公司IP192.168.1.100访问),可添加富规则:

sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="27017" accept'
sudo firewall-cmd --reload

5. 限制网络访问(绑定IP)

修改/etc/mongod.conf中的net section,将bindIp设置为仅允许本地连接(127.0.0.1)。若需远程访问,可添加特定IP(如192.168.1.100):

net:
  bindIp: 127.0.0.1,192.168.1.100 # 多个IP用逗号分隔
  port: 27017

重启服务使配置生效:sudo systemctl restart mongod

6. 启用SSL/TLS加密通信

6.1 生成SSL证书

使用OpenSSL生成自签名证书(生产环境建议使用CA签发的证书):

sudo mkdir -p /etc/ssl/mongodb
sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/ssl/mongodb/mongodb.key -out /etc/ssl/mongodb/mongodb.crt
sudo chmod 600 /etc/ssl/mongodb/mongodb.key
sudo cat /etc/ssl/mongodb/mongodb.key /etc/ssl/mongodb/mongodb.crt >
 /etc/ssl/mongodb/mongodb.pem

6.2 配置MongoDB使用SSL

编辑/etc/mongod.conf,添加以下内容:

net:
  ssl:
    mode: requireSSL
    PEMKeyFile: /etc/ssl/mongodb/mongodb.pem
    # 若使用CA签发的证书,取消以下注释并指定CA文件路径
    # CAFile: /path/to/ca.crt

重启服务:sudo systemctl restart mongod

7. 配置审计日志(合规需求)

编辑/etc/mongod.conf,在systemLog section添加以下内容以记录所有数据库操作:

systemLog:
  destination: file
  path: /var/log/mongodb/mongod.log
  logAppend: true
  verbosity: 1 # 1为基本日志,2为详细日志(根据需求调整)

重启服务:sudo systemctl restart mongod

8. 细化用户权限管理(RBAC)

8.1 创建普通用户(最小权限原则)

例如,为mydatabase数据库创建只读用户readonlyUser

use mydatabase
db.createUser({

  user: "readonlyUser",
  pwd: "ReadOnlyPass123!",
  roles: [{
 role: "read", db: "mydatabase" }
]
}
)

创建读写用户readwriteUser

use mydatabase
db.createUser({

  user: "readwriteUser",
  pwd: "ReadWritePass123!",
  roles: [{
 role: "readWrite", db: "mydatabase" }
]
}
)

8.2 创建自定义角色(满足特殊需求)

若内置角色无法满足需求,可创建自定义角色。例如,创建允许在mydatabasemycollection集合上执行findaggregate操作的角色:

use admin
db.createRole({

  role: "customDataAnalyzer",
  privileges: [
    {

      resource: {
 db: "mydatabase", collection: "mycollection" }
,
      actions: ["find", "aggregate"]
    }

  ],
  roles: []
}
    )

将自定义角色分配给用户:

use admin
db.grantRolesToUser("readonlyUser", ["customDataAnalyzer"])

8.3 定期审查权限

定期检查用户权限,确保符合当前业务需求:

// 查看用户权限详情
db.getUser("readonlyUser")
// 删除不再需要的用户
db.dropUser("oldUser")

9. 定期更新与维护

  • 更新MongoDB:定期检查MongoDB官方YUM仓库,升级至最新稳定版本以修复安全漏洞:
    sudo yum update mongodb-org
    
  • 备份数据:使用mongodump定期备份数据,存储至安全位置:
    mongodump --out /backup/mongodb_$(date +%F)
    
  • 监控系统:使用监控工具(如Prometheus+Granafa)监控MongoDB性能与安全事件,及时响应异常。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS MongoDB安全配置指南
本文地址: https://pptw.com/jishu/734579.html
MongoDB在CentOS如何监控状态 MongoDB在CentOS如何恢复数据

游客 回复需填写必要信息