1. 程式人生 > >MongoDB 安全配置

MongoDB 安全配置

iptables sta 通過 input pwd ini 我們 min 鏈接

前言

隨著MongoDB使用人群企業越來越廣泛,黑客的註意力也轉移到了其中。比如去年很火熱的MongoDB劫持事件,很多人對MongoDB的安全也越來越重視。今天,我們就簡單總結一些MongoDB的安全防護。首先,關於這方面的內容,官方也有說明,參考如下鏈接:https://docs.mongodb.com/manual/administration/security-checklist/ ;

1、啟用訪問控制和強制認證

打開認證,創建認證用戶:

  • 在admin數據庫中,創建一個admin 用戶
use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
  • 對具體的庫進行授權
use reporting
db.createUser(
  {
    user: "reportsUser",
    pwd: "12345678",
    roles: [
       { role: "read", db: "reporting" },
       { role: "read", db: "products" },
       { role: "read", db: "sales" },
       { role: "readWrite", db: "accounts" }
    ]
  }
)

提示:在啟動項中加入 --auth 或者在配置文件中加入 security.authorization: enabled。並且,MongoDB還可以使用外部系統進行認證,比如LADP等;

2、配置基於角色的訪問控制

這裏需要明確的是,MongoDB的基本安全分為兩種,一種是認證,一種是鑒權。其實英語會說的比較明白點: authorization, authentication。

認證是作為用戶登錄的一種賬號密碼校驗,類似MySQL 的 root/password ,在大部分應用中,一旦創建一個連接(用於連接池的),那麽該連接只會做一次,所以大可不必擔心因為認證而帶來的開銷。

鑒權是在數據庫中的賬號擁有的權限做鑒定,類似MySQL中的privilege。

3、基於TSL的雙向認證

打開MongoDB 的TLS/SSl 的配置,社區版需要下載一個SSL版本,或者可以從社區版通過升級步驟升級到SSl版本,企業版自帶SSL。

SSL 可以保證MongoDB的 所有連接(輸入和輸出的連接)都是加密的。

4、限制網絡暴露

通過指定 bindip,以及Linux通過iptables來限制訪問的IP地址等,並在生產線上關閉 MongoDB 的 HTTP 接口和 REST API來達到規避網絡進口的安全問題。

iptables -A INPUT -s <ip-address> -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d <ip-address> -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

5、創建MongoDB專門的運行用戶

使用 mongodb 用戶啟動MongoDB,而不是使用 root 用戶;

useradd -M mongodb -s /bin/nologin
sudo -u mongodb -s

6、使用安全配置項運行MongoDB

MongoDB 安全配置