服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Fedora - 在Fedora中结合权能使用Podman

在Fedora中结合权能使用Podman

2020-11-26 23:12Linux中国Shiwanibiradar Fedora

容器化是一项蓬勃发展的技术。在不久的将来,多达百分之七十五的全球组织可能会运行某种类型的容器化技术。由于广泛使用的技术更容易成为黑客攻击的目标,因此保护容器的安全就显得尤为重要。本文将演示如何使用 POSIX 权

在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)

最后一个例子,如果你的容器只需要 SETUID 和 SETGID 权能,你可以删除所有权能,然后只重新添加这两个权能来实现这样的权限设置。

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

上面的 pscap 命令会显示容器被授予的权能。

我希望你喜欢这个关于如何使用权能来保护 Podman 容器的简短探索。

谢谢!

延伸 · 阅读

精彩推荐
  • Fedora【转载】fedora22和win10之间的文件共享互访

    【转载】fedora22和win10之间的文件共享互访

      钢铁侠与孔子  关注 2016.06.04 14:10*  字数 1327  阅读 2170 评论 0 喜欢 1  一,相关知识了解(本文执行环境为fedora22和win10) 在局域网内windows系统之间共享...

    未知872023-05-09
  • FedoraHostwinds教程:如何在Fedora上安装Docker

    Hostwinds教程:如何在Fedora上安装Docker

    docker 是一个开源应用容器引擎,以类似于虚拟机但不虚拟化的方式在自包含的环境中创建相关应用程序和服务。您可以在多个平台上下载并安装Docker,比如...

    未知1232023-05-09
  • Fedora阿里云服务器配置低选择什么系统比较好

    阿里云服务器配置低选择什么系统比较好

    在选择阿里 云服务器 时,除了考虑服务器的大小和价格,还需要考虑哪个操作系统最适合该服务器。操作系统是服务器的基础,因为它提供了一个框架,...

    未知1152023-05-10
  • FedoraFedora 35 将搭载 LLVM 13 和 Go 1.17

    Fedora 35 将搭载 LLVM 13 和 Go 1.17

    Fedora工程和指导委员会 (FESCo) 批准了将于秋季发布的 Fedora 35 的一些额外变更。...

    开源中国6002021-08-19
  • Fedorafedora8 下mysql 安装的安装方法

    fedora8 下mysql 安装的安装方法

    fedora8 下mysql 安装的安装方法...

    fedora教程网6422019-10-14
  • Fedora阿里云购买镜像服务器

    阿里云购买镜像服务器

    阿里云 作为国内的领先云计算服务提供商,为用户提供了各种可靠、高效的云计算产品,其中就包括镜像服务器。镜像服务器是一个非常优秀的解决方案,...

    未知1342023-06-02
  • FedoraFedora 33开始测试切换到Btrfs

    Fedora 33开始测试切换到Btrfs

    尽管距离 Fedora 的下一个稳定版本(Fedora 33)还有几个月的距离,但仍有一些值得关注的变化。在所有其他 Fedora 33 接受的系统范围的更改中,最有趣的提议...

    Linux中国3392020-07-27
  • Fedorafedora phpMyAdmin 安装方法及介绍

    fedora phpMyAdmin 安装方法及介绍

    在安装fedora的时候,把基本该选择的组件都选上,其中就有Appache,mysql,和php,但是在我们管了数据库的时候,还是有个图形界面比较方便,所以我们自己...

    fedora教程网5742019-10-15