自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在Fedora中結(jié)合權(quán)能使用Podman

系統(tǒng) Linux
容器化是一項蓬勃發(fā)展的技術(shù)。在不久的將來,多達百分之七十五的全球組織可能會運行某種類型的容器化技術(shù)。由于廣泛使用的技術(shù)更容易成為黑客攻擊的目標,因此保護容器的安全就顯得尤為重要。本文將演示如何使用 POSIX 權(quán)能Capability 來保護 Podman 容器的安全。

在Fedora中結(jié)合權(quán)能使用Podman

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

確定 Podman 容器的權(quán)限模式

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

要從容器外部確定特權(quán)模式:

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

如果上面的命令返回 true,那么容器在特權(quán)模式下運行。如果返回 false,那么容器在非特權(quán)模式下運行。

要從容器內(nèi)部確定特權(quán)模式:

  1. $ ip link add dummy0 type dummy

如果該命令允許你創(chuàng)建一個接口,那么你運行的是一個特權(quán)容器,否則你運行的是一個非特權(quán)容器。

權(quán)能

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

例如,如果要將 NET_ADMIN 功能添加到一個無特權(quán)的容器中,以便在容器內(nèi)部創(chuàng)建一個網(wǎng)絡(luò)接口,你可以用下面的參數(shù)運行 podman

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

上面的命令演示了在一個無特權(quán)的容器中創(chuàng)建一個 dummy0 接口。如果沒有 NET_ADMIN 權(quán)能,非特權(quán)容器將無法創(chuàng)建接口。上面的命令演示了如何將一個權(quán)能授予一個無特權(quán)的容器。

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

要從容器中刪除所有權(quán)能:

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

列出一個容器的權(quán)能:

  1. $ podman exec -it 48f11d9fa512 capsh --print

上述命令顯示沒有向容器授予任何權(quán)能。

請參考 capabilities 手冊頁以獲取完整的權(quán)能列表:

  1. $ man capabilities

可以使用 capsh 命令來列出目前擁有的權(quán)能:

  1. $ capsh --print

作為另一個例子,下面的命令演示了如何從容器中刪除 NET_RAW 權(quán)能。如果沒有 NET_RAW 權(quán)能,就不能從容器中 ping 互聯(lián)網(wǎng)上的服務(wù)器。

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

最后一個例子,如果你的容器只需要 SETUID 和 SETGID 權(quán)能,你可以刪除所有權(quán)能,然后只重新添加這兩個權(quán)能來實現(xiàn)這樣的權(quán)限設(shè)置。

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

上面的 pscap 命令會顯示容器被授予的權(quán)能。

我希望你喜歡這個關(guān)于如何使用權(quán)能來保護 Podman 容器的簡短探索。

謝謝! 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2021-07-25 10:34:17

FedoraPodmanLinux

2022-09-22 16:21:43

開源GUI 應(yīng)用

2019-07-05 18:06:18

ffsendFirefox SenLinux

2023-06-27 16:55:43

GNOMEFedora分數(shù)縮放

2009-09-22 12:20:12

ibmdwLotus

2022-01-18 17:57:21

PodmanLinux容器

2021-08-19 18:28:22

FedoraLinuxOpenCV

2019-10-29 16:30:10

FedoraSSH端口Linux

2019-06-27 14:00:13

edoraMycroft開源

2021-05-17 12:54:04

AnsiblePodman開源

2021-03-29 09:10:23

Python內(nèi)存inux

2019-12-02 15:23:34

FedoraLinuxGIMP

2020-03-07 18:51:11

EclipseFedoraPHP

2021-07-31 12:58:53

PodmanLinux虛擬機

2019-06-24 13:34:29

FedoraAnsible 2.8系統(tǒng)運維

2022-05-26 10:30:48

Fedora操作系統(tǒng)root 密碼

2021-07-29 09:07:44

React視圖庫Web 開發(fā)

2022-02-23 10:13:55

人工智能機器互聯(lián)網(wǎng)

2019-12-26 15:45:23

FedoraLinuxCockpit

2021-08-02 12:41:09

FedoraFedora 34Linux
點贊
收藏

51CTO技術(shù)棧公眾號