如何防止不需要的模塊加載以保護(hù)Kubernetes集群?
譯文【51CTO.com快譯】Kubernetes是一種出色的容器管理系統(tǒng),但開發(fā)人員和管理員肩上的擔(dān)子也隨之變大。如果你沒有在安全集群上部署安全容器,一開始就面臨必輸無疑的困境。
幸好我們談?wù)摰氖荓inux,因此你可以做許多事來幫助確保部署的安全性。
你可以執(zhí)行的一項很關(guān)鍵的任務(wù)是防止不需要的內(nèi)核模塊加載到容器中。你會驚訝于啟動時眾多模塊加載,其中許多模塊是你在容器中不需要使用的。
那么如何阻止它們加載呢?下面介紹方法。
你需要什么?
我將使用基于最新Ubuntu Server映像的容器來演示,將通過Multipass工具來進(jìn)行這番操作。想進(jìn)一步了解如何安裝和使用Multipass,請參閱這篇教程:《如何使用啟動虛擬機的新工具M(jìn)ultipass?》(https://www.techrepublic.com/article/multipass-is-a-new-tool-for-launching-virtual-machines/)。
如果你未使用Multipass,無論在使用哪種容器技術(shù),只要容器基于Linux的,仍可以解決這個問題。
如何部署和訪問Ubuntu容器?
不妨先使用Multipass部署一個新容器。我們將使用以下命令部署Ubuntu Daily 20.04:
- multipass launch daily:20.04
一旦容器啟動,系統(tǒng)會為你顯示該部署的隨機生成的名稱。如果你未留意到該名稱,可以使用以下命令來查看:
- multipass list
鑒于容器業(yè)已部署,使用以下命令訪問其外殼:
- multipass shell NAME
其中NAME是容器的隨機生成的名稱。
如何卸載模塊并列入黑名單?
我們要做的是將不希望加載到容器中的模塊列入黑名單。為此,你要先知道哪些模塊在加載。想列出所有目前已加載的模塊,請執(zhí)行以下命令:
- lsmod
你會看到目前加載到內(nèi)核中的每個模塊(圖A)。
圖A. Ubuntu 20.04中目前已加載的模塊
仔細(xì)瀏覽該列表,會找到你不想要加載到容器內(nèi)核中的所有模塊。鑒于容器通常有很特定的用途,因此可能有好多容器可以列入黑名單。
在我們將不想要啟動時加載的模塊實際列入黑名單之前,我們先要卸載模塊。為什么?這是容器,不是虛擬機或標(biāo)準(zhǔn)操作系統(tǒng),因此你無法重新啟動。這就是為什么我們需要手動卸載模塊。
想手動卸載運行中的模塊,請執(zhí)行以下命令:
- sudo modprobe -r MODULENAME
其中MODULENAME是模塊的名稱。
如果你執(zhí)行l(wèi)smod命令,應(yīng)該會看到模塊不再被加載到內(nèi)核中。
一旦你做好了列表后,使用以下命令打開黑名單文件進(jìn)行編輯:
- sudo nano /etc/modprobe.d/blacklist.conf
在該文件中,你將添加希望以以下形式防止加載的所有模塊:
- blacklist MODULENAME
其中MODULENAME是模塊的名稱。舉例來說,你想要防止軟盤內(nèi)核模塊加載。為此,該條目將是:
- blacklist floppy
注意:你要小心,別將對操作系統(tǒng)運行而言至關(guān)重要的模塊或容器依賴的模塊列入黑名單。因此,將模塊列入黑名單之前,確保大致了解該模塊的功能。
至此,你已手動刪除了不想加載的所有內(nèi)核模塊,并創(chuàng)建了一份黑名單,防止它們被加載。你應(yīng)該能夠停止和啟動容器,看到那些已列入黑名單的模塊不再加載。
然而,如果你發(fā)現(xiàn)模塊仍在加載,意味著映像仍在使用不含有你所作更改的initramfs的舊副本。使用以下命令重建initramfs:
- sudo update-initramfs -u
下次你停止并啟動容器時,會發(fā)現(xiàn)已列入黑名單的模塊肯定不會加載。
并非一應(yīng)俱全
對于Kubernetes容器來說,這不是一應(yīng)俱全的安全措施。然而,你在開發(fā)依賴Linux容器的應(yīng)用程序和服務(wù)時,應(yīng)考慮這一點。你不希望多余的、有時不安全的模塊在容器上運行。
為了部署真正安全的容器,這個過程就好比是你必須跨過的好多墊腳石之一。
原文標(biāo)題:How to secure a Kubernetes cluster by preventing unwanted modules from loading,作者:Jack Wallen
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】