MongoDB在Linux上的安全配置指南
身份验证是防止未授权访问的第一道防线。需在MongoDB配置文件(/etc/mongod.conf)中启用认证,并创建专用管理员账户:
security.authorization参数:security:
authorization: enabled
sudo systemctl restart mongod
mongo),切换至admin数据库并创建管理员账户(赋予root角色,拥有最高权限):use admin
db.createUser({
user: "admin",
pwd: "YourStrongPassword123!",
roles: [{ role: "root", db: "admin" }]
})
mongo -u admin -p YourStrongPassword123 --authenticationDatabase admin)。通过配置绑定IP和防火墙规则,仅允许受信任的IP访问MongoDB:
/etc/mongod.conf中的net.bindIp参数,推荐设置为本地IP或特定服务器IP(如127.0.0.1或192.168.1.100),避免使用0.0.0.0(允许所有IP访问):net:
bindIp: 127.0.0.1,192.168.1.100 # 允许本地和指定局域网IP
port: 27017
ufw(Ubuntu):允许MongoDB端口(默认27017)并限制来源IP:sudo ufw allow from 192.168.1.100 to any port 27017/tcp # 仅允许指定IP
sudo ufw enable
firewalld(CentOS/RHEL):添加永久规则并重载: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
sudo systemctl restart mongod
加密MongoDB客户端与服务端之间的通信,防止数据被窃听或篡改:
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout mongodb-key.pem -out mongodb-cert.pem
cat mongodb-key.pem mongodb-cert.pem > mongodb.pem
/etc/mongod.conf,添加SSL参数:net:
ssl:
mode: requireSSL # 强制使用SSL
PEMKeyFile: /etc/ssl/mongodb.pem # 证书路径
CAFile: /etc/ssl/ca.pem # CA证书路径(可选,自签名时可省略)
sudo systemctl restart mongod
mongo --ssl --sslCAFile /etc/ssl/ca.pem --sslPEMKeyFile /etc/ssl/mongodb.pem -u admin -p YourStrongPassword123 --authenticationDatabase admin
审计日志可记录所有用户操作(如查询、修改、删除),便于事后追溯安全事件:
/etc/mongod.conf,添加security.auditLog配置(MongoDB Enterprise版支持):security:
auditLog:
destination: file # 日志输出到文件
format: JSON # 日志格式为JSON(易解析)
path: /var/log/mongodb/audit.json # 日志文件路径
sudo mkdir -p /var/log/mongodb
sudo chown mongodb:mongodb /var/log/mongodb
sudo systemctl restart mongod
{
"timestamp": "2025-10-27T10:00:00.000Z",
"operation": "query",
"database": "admin",
"user": "admin",
"command": { "find": "users", "filter": {} }
}
避免以root用户运行MongoDB,减少潜在的安全风险:
mongodb):sudo useradd -r -s /bin/false mongodb
/var/lib/mongodb)和日志目录(默认/var/log/mongodb)的所有权赋予该用户:sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/log/mongodb
sudo -u mongodb mongod --config /etc/mongod.conf
sudo systemctl enable mongod
关闭MongoDB默认开启的非必要功能,如HTTP接口、REST API:
/etc/mongod.conf,添加以下配置:net:
http:
enabled: false # 禁用HTTP接口
RESTInterfaceEnabled: false # 禁用REST API
JSONPEnabled: false # 禁用JSONP
sudo systemctl restart mongod
保持MongoDB版本最新,及时修复安全漏洞,并通过监控及时发现异常:
sudo apt update && sudo apt upgrade mongodb-org,CentOS使用sudo yum update mongodb-org)。/var/log/mongodb/mongod.log)和审计日志,关注异常操作(如大量失败登录、未授权访问尝试)。