Linux中國

在 Fedora 中結合權能使用 Podman

容器化是一項蓬勃發展的技術。在不久的將來,多達百分之七十五的全球組織可能會運行某種類型的容器化技術。由於廣泛使用的技術更容易成為黑客攻擊的目標,因此保護容器的安全就顯得尤為重要。本文將演示如何使用 POSIX 權能 Capability 來保護 Podman 容器的安全。Podman 是 RHEL8 中默認的容器管理工具。

確定 Podman 容器的許可權模式

容器以特權模式或無特權模式運行。在特權模式下,容器的 uid 0 被映射到宿主機的 uid 0。對於某些情況,無特權的容器缺乏對宿主機資源的充分訪問能力。但不管其操作模式如何,包括 強制訪問控制 Mandatory Access Control (MAC:如 apparmor、SELinux 等)、seccomp 過濾器、刪除 權能 Capability 、命名空間等在內的技術有助於確保容器的安全。

要從容器外部確定特權模式:

$ podman inspect --format="{{.HostConfig.Privileged}}" <container id>

如果上面的命令返回 true,那麼容器在特權模式下運行。如果返回 false,那麼容器在非特權模式下運行。

要從容器內部確定特權模式:

$ ip link add dummy0 type dummy

如果該命令允許你創建一個介面,那麼你運行的是一個特權容器,否則你運行的是一個非特權容器。

權能

命名空間隔離了容器的進程,使其無法任意訪問宿主機的資源,也無法訪問在同一宿主機上運行的其他容器的資源。然而,在特權容器內的進程仍然可以做一些事情,如改變 IP 路由表、跟蹤任意進程和載入內核模塊。 權能 Capability 允許人們對容器內的進程可以訪問或更改的資源施加更細微的限制,即使容器在特權模式下運行也一樣。權能還允許人們為無特權的容器分配它本來不會擁有的特權。

例如,如果要將 NET_ADMIN 功能添加到一個無特權的容器中,以便在容器內部創建一個網路介面,你可以用下面的參數運行 podman

[root@vm1 ~]# podman run -it --cap-add=NET_ADMIN centos
[root@b27fea33ccf1 /]# ip link add dummy0 type dummy
[root@b27fea33ccf1 /]# ip link

上面的命令演示了在一個無特權的容器中創建一個 dummy0 介面。如果沒有 NET_ADMIN 權能,非特權容器將無法創建介面。上面的命令演示了如何將一個權能授予一個無特權的容器。

目前,大約有 39 種權能可以被授予或拒絕。特權容器默認會被授予許多權能。建議從特權容器中刪除不需要的權能,以使其更加安全。

要從容器中刪除所有權能:

$ podman run -it -d --name mycontainer --cap-drop=all centos

列出一個容器的權能:

$ podman exec -it 48f11d9fa512 capsh --print

上述命令顯示沒有向容器授予任何權能。

請參考 capabilities 手冊頁以獲取完整的權能列表:

$ man capabilities

可以使用 capsh 命令來列出目前擁有的權能:

$ capsh --print

作為另一個例子,下面的命令演示了如何從容器中刪除 NET_RAW 權能。如果沒有 NET_RAW 權能,就不能從容器中 ping 互聯網上的伺服器。

$ podman run -it --name mycontainer1 --cap-drop=net_raw centos
>>> ping google.com (will output error, operation not permitted)

最後一個例子,如果你的容器只需要 SETUIDSETGID 權能,你可以刪除所有權能,然後只重新添加這兩個權能來實現這樣的許可權設置。

$ podman run -d --cap-drop=all --cap-add=setuid --cap-add=setgid fedora sleep 5 > /dev/null; pscap | grep sleep

上面的 pscap 命令會顯示容器被授予的權能。

我希望你喜歡這個關於如何使用權能來保護 Podman 容器的簡短探索。

謝謝!

via: https://fedoramagazine.org/podman-with-capabilities-on-fedora/

作者:shiwanibiradar 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...
    Linux中國

    SSL/TLS 加密新紀元 – Lets Encrypt

    根據 Let's Encrypt 官方博客消息,Let's Encrypt 服務將在下周(11 月 16 日)正式對外開放。 Let's Encrypt 項目是由互聯網安全研究小組(ISRG,Internet Security Research Group)主導並開發的一個新型數字證書認證機構(CA,Certificate ...