溫馨提示×

Linux環境下MongoDB安全如何保障

小樊
41
2025-10-24 22:52:28
欄目: 云計算

1. 啟用身份認證(核心安全機制)
/etc/mongod.conf配置文件中添加security.authorization: enabled,強制所有客戶端連接需通過用戶名和密碼認證。修改后重啟MongoDB服務:sudo systemctl restart mongod。創建管理員賬戶(需切換至admin數據庫):

use admin
db.createUser({
  user: "admin",
  pwd: "StrongPassword@123",  # 使用強密碼(包含大小寫字母、數字、特殊字符)
  roles: ["root"]             # 分配root角色(擁有所有數據庫管理權限)
})

后續為用戶分配最小必要權限(如僅允許某用戶訪問特定數據庫并具備readWrite權限)。

2. 限制網絡訪問范圍
/etc/mongod.conf中配置net.bindIp,僅允許受信任的IP地址或網段訪問MongoDB服務。例如:

  • 僅本地訪問:bindIp: 127.0.0.1
  • 允許本地及特定內網IP:bindIp: 127.0.0.1,192.168.1.100
    若需遠程訪問,建議結合防火墻規則進一步限制端口訪問。

3. 強制使用TLS/SSL加密通信
生成SSL證書(可使用OpenSSL生成自簽名證書,生產環境建議使用CA簽發的證書):

sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/ssl/mongodb-key.pem -out /etc/ssl/mongodb-cert.pem

/etc/mongod.conf中配置SSL參數:

net:
  ssl:
    mode: requireSSL           # 強制使用SSL
    PEMKeyFile: /etc/ssl/mongodb-key.pem  # 私鑰文件路徑
    CAFile: /etc/ssl/mongodb-cert.pem     # 證書文件路徑

重啟服務使配置生效:sudo systemctl restart mongod。

4. 配置防火墻規則
使用Linux防火墻(如firewalldufw)限制對MongoDB默認端口(27017)的訪問:

  • firewalld
    sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="27017" accept'
    sudo firewall-cmd --reload
    
  • ufw
    sudo ufw allow from 192.168.1.0/24 to any port 27017 proto tcp
    sudo ufw enable
    

僅允許可信IP段訪問MongoDB端口。

5. 使用非特權用戶運行MongoDB
創建專用系統用戶(如mongodb)用于運行MongoDB服務,避免以root權限運行:

sudo useradd -r -s /bin/false mongodb  # 創建專用用戶(無登錄權限)
sudo chown -R mongodb:mongodb /var/lib/mongodb  # 修改數據目錄歸屬
sudo chown -R mongodb:mongodb /var/log/mongodb  # 修改日志目錄歸屬

修改/etc/mongod.conf中的processManagement.forktrue(后臺運行),并以專用用戶啟動服務:

sudo -u mongodb mongod --config /etc/mongod.conf

設置開機自啟:sudo systemctl enable mongod。

6. 禁用不必要的接口與功能
/etc/mongod.conf中禁用HTTP接口、REST接口和JSONP,減少攻擊面:

net:
  http:
    enabled: false             # 禁用HTTP接口
    RESTInterfaceEnabled: false # 禁用REST接口
    JSONPEnabled: false         # 禁用JSONP

重啟服務使配置生效。

7. 配置審計日志(Enterprise版功能)
若使用MongoDB Enterprise版,可在/etc/mongod.conf中啟用審計日志,記錄用戶操作(如查詢、插入、刪除):

security:
  auditLog:
    destination: file          # 日志輸出到文件
    format: JSON               # 日志格式為JSON(便于解析)
    path: /var/log/mongodb/audit.json  # 日志文件路徑

重啟服務后,審計日志將記錄所有用戶操作,便于后續安全審計和事件追溯。

8. 定期更新與補丁管理
定期檢查MongoDB官方安全公告(如通過MongoDB Security Advisories頁面),及時升級到最新穩定版本,修復已知漏洞。使用包管理器(如aptyum)升級:

  • Ubuntu/Debian
    sudo apt update && sudo apt upgrade mongodb-org
    
  • CentOS/RHEL
    sudo yum update mongodb-org
    

升級前備份數據,避免升級失敗導致數據丟失。

9. 定期備份數據
使用mongodump工具定期備份數據(如每日凌晨2點),并將備份文件存儲至安全位置(如異地服務器或云存儲):

# 備份所有數據庫
mongodump --host 127.0.0.1 --port 27017 --username admin --password StrongPassword@123 --authenticationDatabase admin --out /backup/mongodb_$(date +%F)

# 備份特定數據庫(如test_db)
mongodump --host 127.0.0.1 --port 27017 --username admin --password StrongPassword@123 --authenticationDatabase admin --db test_db --out /backup/mongodb_$(date +%F)

定期測試備份文件的恢復流程,確保備份有效性。

10. 監控與日志分析
配置MongoDB日志記錄(systemLog.destination: file、logAppend: true),并使用監控工具(如Prometheus+Granafa、Zabbix)監控數據庫性能指標(如連接數、查詢延遲、磁盤空間)。設置告警規則(如連接數超過閾值、磁盤空間不足),及時發現異常行為。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女