配置MongoDB的網絡訪問控制涉及多個步驟,以確保數據庫的安全性。以下是詳細的配置指南:
啟用認證
在MongoDB配置文件 /etc/mongod.conf
中添加或修改以下內容以啟用認證:
security:
authorization: enabled
然后重啟MongoDB服務:
sudo systemctl restart mongod
限制網絡訪問
編輯MongoDB配置文件 /etc/mongod.conf
,在 net
部分設置 bindIp
參數來限制允許連接的IP地址。例如,只允許本地連接:
net:
bindIp: 127.0.0.1
或者允許特定的IP地址連接:
net:
bindIp: 192.168.1.100
保存并關閉配置文件后,重啟MongoDB服務以使更改生效:
sudo systemctl restart mongod
配置防火墻
使用 iptables
或 ufw
限制允許哪些實體連接MongoDB服務器。例如,只允許本地連接:
sudo iptables -A INPUT -p tcp --dport 27017 -s 127.0.0.1 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 27017 -j DROP
或者使用 ufw
:
sudo ufw allow 27017/tcp
sudo ufw disable
使用SSL/TLS加密通信
生成或獲取有效的SSL證書和私鑰文件,然后在 mongod.conf
配置文件中添加以下參數:
net:
ssl:
mode: requireSSL
PEMKeyFile: /path/to/your/ssl.pem
CAFile: /path/to/your/ca.pem
sslAllowInvalidCertificates: false
重新啟動MongoDB服務使配置生效:
sudo systemctl restart mongod
創建管理員用戶 切換到MongoDB shell:
mongo
切換到 admin
數據庫:
use admin
創建一個管理員用戶并授予其root角色:
db.createUser({
user: "yourAdminUsername",
pwd: "yourAdminPassword",
roles: [ { role: "root", db: "admin" } ]
})
退出MongoDB shell:
exit()
定期備份數據
定期備份MongoDB的數據以確保備份數據的完整性和可恢復性??梢允褂?mongodump
命令進行備份:
mongodump --out /path/to/backup
監控和日志
啟用審計日志記錄所有用戶的操作,定期審查和分析審計日志以檢測異常行為。在 mongod.conf
中配置審計日志:
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
角色管理 使用內置角色或創建自定義角色來控制用戶對數據庫的訪問權限。例如,創建一個具有讀寫權限的用戶:
use mydatabase
db.createUser({
user: "myuser",
pwd: "mypassword",
roles: [
{ role: "readWrite", db: "mydatabase" }
]
})