如何确保Linux环境下MongoDB配置的安全性
启用MongoDB的身份验证机制,强制用户通过用户名和密码访问数据库,防止未授权连接。编辑配置文件/etc/mongod.conf,添加或修改以下内容:
security:
authorization: enabled
重启MongoDB服务使配置生效:sudo systemctl restart mongod。创建管理员账户(需切换至admin数据库):
use admin
db.createUser({
user: "admin",
pwd: "StrongPassword@123", // 使用强密码
roles: [{ role: "root", db: "admin" }] // 分配root角色(管理所有数据库)
})
后续所有数据库操作需通过该管理员账户登录。
mongod.conf中的bindIp参数,仅允许受信任的IP地址访问(如本地或内部网络)。例如,仅允许本地访问:net:
bindIp: 127.0.0.1
若需允许远程IP(如192.168.1.100),可添加为逗号分隔的列表:bindIp: 127.0.0.1,192.168.1.100。net:
http:
enabled: false
RESTInterfaceEnabled: false
JSONPEnabled: false
重启服务使配置生效。加密MongoDB客户端与服务器之间的数据传输,防止中间人攻击。步骤如下:
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
sudo chmod 600 /etc/ssl/mongodb.*
mongod.conf中添加SSL参数:net:
ssl:
mode: requireSSL # 强制使用SSL
PEMKeyFile: /etc/ssl/mongodb.pem # 证书文件路径
CAFile: /etc/ssl/mongodb.crt # CA证书路径(若使用CA签发)
重启服务使配置生效。记录所有数据库操作(如查询、插入、删除),便于事后追溯安全事件。需MongoDB Enterprise版本支持,编辑mongod.conf:
security:
auditLog:
destination: file # 日志输出到文件
format: JSON # 日志格式为JSON(便于解析)
path: /var/log/mongodb/audit.json # 日志文件路径
重启服务后,所有操作将被记录到指定文件。
避免以root用户运行MongoDB,降低系统被入侵后的风险。创建专用用户(如mongodb):
sudo useradd -r -s /bin/false mongodb # 创建系统用户(无登录权限)
sudo chown -R mongodb:mongodb /var/lib/mongodb # 修改数据目录所有者
sudo chown -R mongodb:mongodb /var/log/mongodb # 修改日志目录所有者
修改mongod.service文件(位于/lib/systemd/system/或/etc/systemd/system/),将User和Group设置为mongodb,然后重启服务:
sudo systemctl daemon-reload
sudo systemctl restart mongod
使用Linux防火墙(如ufw或firewalld)限制对MongoDB端口(默认27017)的访问,仅允许受信任的IP地址。例如,使用ufw:
sudo ufw allow from 192.168.1.0/24 to any port 27017/tcp # 允许192.168.1.0/24网段访问
sudo ufw enable # 启用防火墙
或使用firewalld:
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
保持MongoDB及依赖组件(如Linux内核、OpenSSL)为最新版本,及时修复已知漏洞。使用包管理器更新:
sudo apt update && sudo apt upgrade mongodb-orgsudo yum update mongodb-orgmyDatabase:use myDatabase
db.createUser({
user: "readOnlyUser",
pwd: "ReadOnlyPass@123",
roles: [{ role: "read", db: "myDatabase" }] // 仅读权限
})
通过以上步骤,可显著提升Linux环境下MongoDB配置的安全性,防范未授权访问、数据泄露等风险。需根据实际业务需求调整配置(如远程访问需求、审计日志要求),并定期进行安全评估。