在Debian系统上安全配置MongoDB涉及多个步骤,包括绑定IP、启用身份验证、配置防火墙、使用TLS/SSL加密通信等。以下是一个详细的指南:
首先,确保你的Debian系统是最新的:
sudo apt update && sudo apt upgrade -y
然后,安装MongoDB:
sudo apt install -y mongodb-org
编辑MongoDB配置文件 /etc/mongod.conf
:
sudo nano /etc/mongod.conf
将MongoDB绑定到本地主机(127.0.0.1),以防止互联网访问:
net:
port: 27017
bindIp: 127.0.0.1
在配置文件中启用身份验证:
security:
authorization: enabled
如果你使用的是MongoDB 3.6或更高版本,可以禁用HTTP接口和REST API:
net:
http:
enabled: false
restApi:
enabled: false
启动MongoDB shell:
mongo
切换到 admin
数据库并创建管理员用户:
use admin
db.createUser({
user: "myAdminUser",
pwd: "myStrongPassword",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
保存配置文件并重启MongoDB服务以应用更改:
sudo systemctl restart mongod
生成SSL证书和密钥:
openssl req -newkey rsa:2048 -new -x509 -days 365 -nodes -out mongodb-cert.crt -keyout mongodb-cert.key
cat mongodb-cert.key mongodb-cert.crt > mongodb.pem
启动MongoDB服务器时使用SSL证书:
sudo mongod --ssl --sslmode requireSSL --sslpemfile mongodb.pem
使用 iptables
配置防火墙规则,只允许特定IP地址访问MongoDB端口:
sudo iptables -A INPUT -p tcp --dport 27017 -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A INPUT -j DROP
对于公司内部网络,可以使用VPN来加强访问控制。
使用管理员账户连接到MongoDB shell以验证配置:
mongo -u myAdminUser -p myStrongPassword --ssl --sslmode requireSSL --sslpemfile mongodb.pem
通过以上步骤,你可以在Debian系统上安全地配置MongoDB,确保只有受信任的主机才能访问数据库,并且所有通信都是加密的。