不應該在沒有 sudo 的情況下運行 Docker 的 3 個原因
Docker 是最常用的容器化平台之一,深受軟件工程師的喜愛。它帶有一個強大的 CLI 工具,用於管理 Docker 容器和其他相關任務。
默認情況下,您需要 root 權限才能在 Linux 上運行任何與 Docker 相關的命令。當然,為了方便起見,您可以更改此設置並在沒有 root 權限的情況下運行 Docker 命令,但您應該了解安全隱患。
什麼是 Docker 攻擊面?
攻擊面是攻擊點的數量,更像是窗口的數量,惡意用戶可以用來進入您的系統並造成破壞。根據經驗,IT 系統應該具有最小的攻擊面以降低安全風險。
一般來說,Docker 的攻擊面非常小。容器在安全的隔離環境中運行,除非另有原因,否則不會影響主機操作系統。此外,Docker 容器僅運行最少的服務,這使其更加安全。
您可以將 Linux 系統配置為在沒有 sudo 權限的情況下控制 Docker。這在開發環境中可能很方便,但在生產系統中可能是一個嚴重的安全漏洞。這就是為什麼你不應該在沒有 sudo 的情況下運行 Docker 的原因。
1. 控制Docker容器的能力
如果沒有 sudo 權限,任何有權訪問您的系統或服務器的人都可以控制 Docker 的各個方面。他們可以訪問您的 Docker 日誌文件,並且可以隨意或意外地停止和刪除容器。您還可能丟失對業務連續性至關重要的關鍵數據。
如果您在生產環境中使用 Docker 容器,停機會導致業務和信任損失。
2. 控制主機操作系統目錄
Docker Volumes 是一項功能強大的服務,允許您通過將容器數據寫入主機操作系統上的指定文件夾來共享和保留容器數據。
在沒有 sudo 的情況下運行 Docker 的最大威脅之一是系統上的任何人都可以控制主機操作系統的目錄,包括根目錄。
您所要做的就是運行 Linux Docker 映像,例如 Ubuntu 映像,並使用以下命令將其掛載到根文件夾中:
docker run -ti -v /:/hostproot ubuntu bash
由於 Linux Docker 容器以根用戶身份運行,這實際上意味著您可以訪問整個根文件夾。
上述命令將下載並運行最新的 Ubuntu 映像並將其掛載到根目錄。
在 Docker 容器終端上,使用 cd 命令進入/hostproot目錄:
cd /hostproot
使用 ls 命令列出此目錄的內容會顯示容器中現在可用的主機操作系統的所有文件。現在,您可以操作文件、查看機密文件、隱藏和取消隱藏文件、更改權限等。
3.安裝惡意軟件
精心製作的 Docker 鏡像可以在後台運行並操縱您的系統或收集敏感數據。更糟糕的是,惡意用戶可能會通過 Docker 容器在您的網絡上傳播惡意代碼。
Docker 容器有幾個實際用例,每個應用程序都會帶來一組不同的安全威脅。
在 Linux 上保護您的 Docker 容器
Docker 是一個強大而安全的平台。在沒有 sudo 的情況下運行 Docker 會增加您的攻擊面並使您的系統容易受到攻擊。在生產環境中,強烈建議您對 Docker 使用 sudo。
由於系統上有這麼多用戶,因此很難為每個用戶分配權限。在這種情況下,遵循最佳訪問控制實踐可以幫助您維護系統的安全性。
發佈留言