1. 更新系統與安裝MongoDB
首先,確保Debian系統及軟件包為最新版本,減少已知漏洞風險:
sudo apt update && sudo apt upgrade -y
添加MongoDB官方APT倉庫(以6.0版本為例),并安裝mongodb-org包:
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [arch=amd64,arm64] https://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt update
sudo apt install -y mongodb-org
2. 啟用身份驗證(核心安全措施)
編輯MongoDB主配置文件/etc/mongod.conf,在security section添加以下配置以強制身份驗證:
security:
authorization: enabled
enableLocalhostAuthBypass: false # 禁用本地主機的身份驗證繞過(生產環境必須關閉)
重啟MongoDB服務使配置生效:
sudo systemctl restart mongod
創建管理員賬戶(用于管理用戶權限),切換至admin數據庫并執行:
mongo
use admin
db.createUser({
user: "adminUser",
pwd: "ComplexPassword123!", # 使用強密碼(包含大小寫、數字、特殊字符)
roles: [{ role: "userAdminAnyDatabase", db: "admin" }] # 分配管理所有數據庫用戶的權限
})
3. 限制網絡訪問(防止未授權連接)
修改/etc/mongod.conf中的net section,將bindIp設置為僅允許本地訪問(生產環境強烈建議):
net:
port: 27017
bindIp: 127.0.0.1 # 僅本機可訪問;若需遠程訪問,可添加特定IP(如192.168.1.100),但需配合防火墻
重啟MongoDB服務:
sudo systemctl restart mongod
4. 配置TLS/SSL加密通信(保護數據傳輸)
生成自簽名SSL證書(生產環境建議使用CA簽發的證書):
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 # 合并證書與私鑰
編輯/etc/mongod.conf,啟用SSL并要求客戶端使用:
net:
ssl:
mode: requireSSL # 強制使用SSL
PEMKeyFile: /etc/ssl/mongodb.pem # 證書路徑(需替換為實際路徑)
重啟MongoDB服務:
sudo systemctl restart mongod
5. 管理用戶權限(最小權限原則)
使用管理員賬戶登錄MongoDB,為特定數據庫創建只讀或讀寫用戶:
mongo -u adminUser -p --authenticationDatabase admin
use myDatabase
# 創建只讀用戶
db.createUser({
user: "readOnlyUser",
pwd: "ReadOnlyPass456!",
roles: [{ role: "read", db: "myDatabase" }]
})
# 創建讀寫用戶
db.createUser({
user: "readWriteUser",
pwd: "ReadWritePass789!",
roles: [{ role: "readWrite", db: "myDatabase" }]
})
6. 配置防火墻(阻斷非法IP訪問)
使用ufw(Ubuntu防火墻工具)限制MongoDB端口(默認27017)的訪問,僅允許受信任的IP段:
sudo ufw allow from 192.168.1.0/24 to any port 27017 proto tcp # 允許192.168.1.0/24網段
sudo ufw enable # 啟用防火墻
或使用iptables(傳統防火墻工具):
sudo iptables -A INPUT -p tcp --dport 27017 -s 192.168.1.100 -j ACCEPT # 允許特定IP
sudo iptables -A INPUT -p tcp --dport 27017 -j DROP # 拒絕其他所有IP
7. 啟用安全審計(跟蹤敏感操作)
編輯/etc/mongod.conf,配置審計日志以記錄數據庫操作(如用戶登錄、數據修改):
security:
auditLog:
destination: file # 日志輸出到文件
format: JSON # 日志格式為JSON(便于解析)
path: /var/log/mongodb/audit.json # 日志文件路徑(需確保目錄存在且有寫入權限)
重啟MongoDB服務:
sudo systemctl restart mongod
8. 定期更新與維護
定期檢查MongoDB及Debian系統的更新,及時安裝安全補丁以修復漏洞:
sudo apt update && sudo apt upgrade -y mongodb-org
定期審查MongoDB日志(/var/log/mongodb/mongod.log)及審計日志,監控異常訪問行為(如頻繁的登錄失敗、未授權的數據訪問)。