在Debian系统上安全配置MongoDB涉及多个步骤,包括绑定IP、启用身份验证、配置防火墙、使用TLS/SSL加密通信等。以下是一个详细的指南:
1. 安装MongoDB
首先,确保你的Debian系统是最新的:
sudo apt update && sudo apt upgrade -y
然后,安装MongoDB:
sudo apt install -y mongodb-org
2. 配置MongoDB
编辑MongoDB配置文件 /etc/mongod.conf
:
sudo nano /etc/mongod.conf
2.1 绑定IP
将MongoDB绑定到本地主机(127.0.0.1),以防止互联网访问:
net: port: 27017 bindIp: 127.0.0.1
2.2 启用身份验证
在配置文件中启用身份验证:
security: authorization: enabled
2.3 禁用HTTP接口和REST API
如果你使用的是MongoDB 3.6或更高版本,可以禁用HTTP接口和REST API:
net: http: enabled: false restApi: enabled: false
3. 创建管理员用户
启动MongoDB shell:
mongo
切换到 admin
数据库并创建管理员用户:
use admin db.createUser({ user: "myAdminUser", pwd: "myStrongPassword", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })
4. 重启MongoDB服务
保存配置文件并重启MongoDB服务以应用更改:
sudo systemctl restart mongod
5. 使用TLS/SSL加密通信
生成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
6. 配置防火墙
使用 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
7. 使用VPN进行内部网络访问
对于公司内部网络,可以使用VPN来加强访问控制。
8. 验证配置
使用管理员账户连接到MongoDB shell以验证配置:
mongo -u myAdminUser -p myStrongPassword --ssl --sslmode requireSSL --sslpemfile mongodb.pem
通过以上步骤,你可以在Debian系统上安全地配置MongoDB,确保只有受信任的主机才能访问数据库,并且所有通信都是加密的。