擴展@ @ Sammye的評論mongodb經常沒有數據庫用戶的密碼。如果數據庫面向公共互聯網,這尤其是個問題,因爲只要在服務器的IP地址上嘗試正確的端口,互聯網上的每個人都可以理論上連接到數據庫服務器。
爲防止出現這種情況,限制防火牆可以到達服務器及其端口的流量總是個好主意。
這裏是(對於ubuntu的)的樣品iptables配置:
以下命令允許所有流量爲localhost和到端口22(SSH),80(HTTP)和443(HTTPS)
# accept local traffic
sudo iptables -A INPUT -i lo -j ACCEPT
# allow established connections
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# allow connections to ports 22, 80, 443
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
這些命令堵塞交通的休息:
# drops the rest of the traffic to the server
# sudo iptables -P INPUT DROP
# disables the possibility to route traffic through the server (you may or may not want to use this)
# sudo iptables -P FORWARD DROP
# makes it possible to send data from the server
# sudo iptables -P OUTPUT ACCEPT
運行任何這些的iptables命令的始終是建立一個重置你的iptables配置,每5分鐘一個cronjob一個好主意之前。在這種情況下,如果出現問題(例如因爲您忘記在防火牆中啓用端口22而將自己鎖定在服務器外),則會重置規則並解決問題。 這是iptables的腳本ubunt維基重置防火牆: https://help.ubuntu.com/community/IptablesHowTo
echo "Stopping firewall and allowing everyone..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
當一切都結束,似乎是工作不要忘了安裝包的iptables持久(默認情況下使用iptables只存在規則,直到重新啓動服務器)
sudo apt-get install iptables-persistent
這是迄今爲止未就如何確保使用iptables防火牆服務器的完整指南,但我希望它能夠讓你開始。
現在數據庫只能從服務器上獲得,而不能從公共互聯網上獲得。從公共互聯網訪問數據庫反正你就必須創建一個SSH隧道到服務器:
ssh [email protected]_or_ip_adress -f -N -L 27019:yourdomain_or_ip_adress:27019
-f -N -L < - 在這裏你定義應使用的端口您的數據庫流量,機器
yourdomain_or_ip_adress: < - 這是端口數據庫上運行您的服務器
上當做到這一點,你應該能夠在本地計算機來訪問您的服務器的數據庫中127.0.0.1:27019。
這是一種更通用的方式來保護任何應用程序運行在暴露於互聯網的服務器上。 還有一個關於如何在內部專門確保mongodb安全的官方指南,您可以在這裏找到它:https://docs.mongodb.com/manual/administration/security-checklist/
當然有一件事是auth,但另一個是服務器端特定的,例如通過您擁有的私有網絡來隧道傳輸數據。在AWS和Racskpace等基於雲的服務中,您可以輕鬆創建自己的虛擬專用網絡。在其他服務上,您可能需要協商才能正常工作 – Sammaye
我知道,但是現在我沒有時間去挖掘隧道等。現在我只需要一個簡單的臨時修復程序。 – Per
那麼,根據鏈接它是專門「打開」的MongoDBs所以是的,auth會暫時修復它,但嚴重的是,隧道應該已經完成,當數據庫安裝時,建議在MongoDB文檔 – Sammaye