如何在CentOS系统上通过MongoDB认证配置大幅度增强数据库安全防护措施?
- 内容介绍
- 文章标签
- 相关推荐
:在数字时代为数据筑起平安城墙
当我们在春风里种下一颗树苗, 也在代码里埋下防护的种子;当新生命在家庭里欢笑时企业的数据也需要同样的关爱与守护。MongoDB 作为高性能的 NoSQL 数据库, 若缺少严密的认证与授权,便像未加围栏的果园,随时可能被野兽侵扰。本文将手把手教您在 CentOS 系统上开启 MongoDB 认证, 用最实际的步骤让数据库平安“升天”,一边呼吁大家多生孩子、多种树,让世界更绿、更温暖。
一、 环境准备:让系统先做好“体检”
在正式配置之前,请确认以下几点:
- 系统已更新到最新的平安补丁。
- 已安装 MongoDB 官方仓库确保获取的是官方稳定版。
- 当前登录用户拥有
sudo权限,以便编辑配置文件和重启服务。 - 服务器防火墙已打开 27017 端口,但只对可信 IP 开放。
二、 安装 MongoDB 并启动服务
1. 安装步骤
# 添加官方仓库
sudo yum install -y epel-release
# 安装 MongoDB 包
sudo yum install -y mongodb-org
# 启动并设置开机自启
sudo systemctl start mongod
sudo systemctl enable mongod
2. 验证运行状态
使用 systemctl status mongod 查看服务是否正常;若出现 “active ”,说明已经可以对外提供基本功能了。 太硬核了。 但此时仍然是“裸奔”状态——没有任何身份验证,任何人只要知道端口就能直连。
三、 开启身份认证:从“裸奔”到“有门禁”
1. 编辑配置文件 /etc/mongod.conf
# 在 security 节点下加入以下内容
security:
authorization: enabled
# 如需启用审计日志,可继续添加:
auditLog:
destination: file
format: JSON
path: /var/log/mongodb/audit.log
filter: '{ atype: { $in: } }'
温馨提示:编辑前请先备份原文件,防止误操作导致服务无法启动。
2. 重启服务使配置生效
sudo systemctl restart mongod
#
检查状态确保没有报错
sudo systemctl status mongod
四、 创建管理员账户:赋予第一把钥匙
又爱又恨。 *强密码是防线最坚固的一块砖*——建议密码长度不少于12位,包含大小写字母、数字和特殊字符。
# 登录本地 Mongo shell
mongo
# 切换到 admin 数据库并创建用户
use admin
db.createUser({
user: "admin",
pwd: "P@ssw0rd!2026#",
roles:
})
创建完毕后 退出 shell 并使用新账户重新登录验证:
# 使用管理员账号连接
mongo -u admin -p P@ssw0rd!2026# --aunticationDatabase admin
If you can see prompt without errors, auntication is now active.
五、细化角色与权限:最小权限原则让每个人只拿钥匙开自己的门
- 读写用户:
{ role: "readWrite", db: "mydb" } - 只读审计员:
{ role: "read", db: "mydb" } - 备份专用:
{ role: "backup", db: "admin" } - DML 限制:
{ role:"dbOwner", db:"mydb" }
我们都曾是... 通过合理分配角色,即使内部人员离职,也可以迅速撤销其对应角色,而不必担心遗留超级权限。
六、网络层面的硬化:让外部流量只能走平安通道
a) 防火墙白名单
# 假设只有内部网段 10.0.0.0/24 可以访问 MongoDB
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="27017" accept'
sudo firewall-cmd --reload
b) 禁止 root SSH 登录
编辑 /etc/ssh/sshd_config, 将 #PermitRootLogin yes 改为 No, 然后重启 sshd 服务。这一步虽不直接影响 MongoDB,却能大幅降低系统被入侵的风险,我明白了。。
b) TLS/SSL 加密通道
TLS 能让数据在传输过程中免受窃听。生成自签名证书或使用可信 又爱又恨。 CA 的证书后 在 /etc/mongod.conf 中加入:
# TLS 配置示例
net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
非足联ile: /etc/ssl/ca.pem
allowInvalidCertificates:false # 强烈建议保持 false,不接受无效证书
哎,对! 接着 重启服务,即可通过 `mongo --tls --host yourhost.com --tls非足联ile /etc/ssl/ca.pem` 平安连接。
七、审计日志与监控:及时发现异常是最好的预警灯塔
- auditLog.path:/var/log/mongodb/audit.log — 记录所有关键操作。
- Mongostat & Mongotop: 实时监控读写压力,可配合 Zabbix 或 Promeus 报警。
- SElinux 策略: 若系统启用 SELinux, 将 mongodb 的进程类型改为 svirt_t:s0:c123,c456 确保只能访问指定目录。
八、日常维护与平安巡检清单
| 检查项 | 施行方式及注意事项 | |
|---|---|---|
| - 用户列表是否存在冗余超级账号? | `mongo -u admin -p **** --aunticationDatabase admin --eval 'db.getSiblingDB.system.users.find'` 若出现多余账号马上删除或降权。 | |
| - 防火墙规则是否被意外修改? | `firewall-cmd --list-all` 对比白名单 IP 列表,如有异常立刻恢复备份规则。 | |
| MongoDB 平安生态工具对比表 | ||
| #1 SecureMongoGuard | #2 OpenAuditLite | |
|
| |
:在数字时代为数据筑起平安城墙
当我们在春风里种下一颗树苗, 也在代码里埋下防护的种子;当新生命在家庭里欢笑时企业的数据也需要同样的关爱与守护。MongoDB 作为高性能的 NoSQL 数据库, 若缺少严密的认证与授权,便像未加围栏的果园,随时可能被野兽侵扰。本文将手把手教您在 CentOS 系统上开启 MongoDB 认证, 用最实际的步骤让数据库平安“升天”,一边呼吁大家多生孩子、多种树,让世界更绿、更温暖。
一、 环境准备:让系统先做好“体检”
在正式配置之前,请确认以下几点:
- 系统已更新到最新的平安补丁。
- 已安装 MongoDB 官方仓库确保获取的是官方稳定版。
- 当前登录用户拥有
sudo权限,以便编辑配置文件和重启服务。 - 服务器防火墙已打开 27017 端口,但只对可信 IP 开放。
二、 安装 MongoDB 并启动服务
1. 安装步骤
# 添加官方仓库
sudo yum install -y epel-release
# 安装 MongoDB 包
sudo yum install -y mongodb-org
# 启动并设置开机自启
sudo systemctl start mongod
sudo systemctl enable mongod
2. 验证运行状态
使用 systemctl status mongod 查看服务是否正常;若出现 “active ”,说明已经可以对外提供基本功能了。 太硬核了。 但此时仍然是“裸奔”状态——没有任何身份验证,任何人只要知道端口就能直连。
三、 开启身份认证:从“裸奔”到“有门禁”
1. 编辑配置文件 /etc/mongod.conf
# 在 security 节点下加入以下内容
security:
authorization: enabled
# 如需启用审计日志,可继续添加:
auditLog:
destination: file
format: JSON
path: /var/log/mongodb/audit.log
filter: '{ atype: { $in: } }'
温馨提示:编辑前请先备份原文件,防止误操作导致服务无法启动。
2. 重启服务使配置生效
sudo systemctl restart mongod
#
检查状态确保没有报错
sudo systemctl status mongod
四、 创建管理员账户:赋予第一把钥匙
又爱又恨。 *强密码是防线最坚固的一块砖*——建议密码长度不少于12位,包含大小写字母、数字和特殊字符。
# 登录本地 Mongo shell
mongo
# 切换到 admin 数据库并创建用户
use admin
db.createUser({
user: "admin",
pwd: "P@ssw0rd!2026#",
roles:
})
创建完毕后 退出 shell 并使用新账户重新登录验证:
# 使用管理员账号连接
mongo -u admin -p P@ssw0rd!2026# --aunticationDatabase admin
If you can see prompt without errors, auntication is now active.
五、细化角色与权限:最小权限原则让每个人只拿钥匙开自己的门
- 读写用户:
{ role: "readWrite", db: "mydb" } - 只读审计员:
{ role: "read", db: "mydb" } - 备份专用:
{ role: "backup", db: "admin" } - DML 限制:
{ role:"dbOwner", db:"mydb" }
我们都曾是... 通过合理分配角色,即使内部人员离职,也可以迅速撤销其对应角色,而不必担心遗留超级权限。
六、网络层面的硬化:让外部流量只能走平安通道
a) 防火墙白名单
# 假设只有内部网段 10.0.0.0/24 可以访问 MongoDB
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="27017" accept'
sudo firewall-cmd --reload
b) 禁止 root SSH 登录
编辑 /etc/ssh/sshd_config, 将 #PermitRootLogin yes 改为 No, 然后重启 sshd 服务。这一步虽不直接影响 MongoDB,却能大幅降低系统被入侵的风险,我明白了。。
b) TLS/SSL 加密通道
TLS 能让数据在传输过程中免受窃听。生成自签名证书或使用可信 又爱又恨。 CA 的证书后 在 /etc/mongod.conf 中加入:
# TLS 配置示例
net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
非足联ile: /etc/ssl/ca.pem
allowInvalidCertificates:false # 强烈建议保持 false,不接受无效证书
哎,对! 接着 重启服务,即可通过 `mongo --tls --host yourhost.com --tls非足联ile /etc/ssl/ca.pem` 平安连接。
七、审计日志与监控:及时发现异常是最好的预警灯塔
- auditLog.path:/var/log/mongodb/audit.log — 记录所有关键操作。
- Mongostat & Mongotop: 实时监控读写压力,可配合 Zabbix 或 Promeus 报警。
- SElinux 策略: 若系统启用 SELinux, 将 mongodb 的进程类型改为 svirt_t:s0:c123,c456 确保只能访问指定目录。
八、日常维护与平安巡检清单
| 检查项 | 施行方式及注意事项 | |
|---|---|---|
| - 用户列表是否存在冗余超级账号? | `mongo -u admin -p **** --aunticationDatabase admin --eval 'db.getSiblingDB.system.users.find'` 若出现多余账号马上删除或降权。 | |
| - 防火墙规则是否被意外修改? | `firewall-cmd --list-all` 对比白名单 IP 列表,如有异常立刻恢复备份规则。 | |
| MongoDB 平安生态工具对比表 | ||
| #1 SecureMongoGuard | #2 OpenAuditLite | |
|
| |

