美文网首页容器安全
日更第30日: 容器安全之启用用户命名空间

日更第30日: 容器安全之启用用户命名空间

作者: 微凉哇 | 来源:发表于2021-11-11 08:29 被阅读0次

描述

Docker守护程序中启用用户命名空间支持,可对用户进行重新映射。该建议对镜像中没有指定用户是有帮助的。

如果在容器镜像中已经定义了非root运行,可跳过此建议。

隐患分析

Docker守护程序中对Linux内核用户命名空间支持为Docker主机系统提供了额外的安全性。
它允许容器具有独特的用户和组ID,这些用户和组ID在主机系统所使用的传统用户和组范围之外。
例如,root用户希望有容器内的管理权限,可映射到主机系统上的非rootUID

审计

如果容器进程以root身份运行,则不符合安全要求

[root@localhost ~]# ps -ef|grep 15eebdabbb8b
root      80060  73608  0 04:03 ?        00:00:00 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/15eebdabbb8bd59366348ae95a89d79100370b9c9381b070fdfbb0119b516400 -address /var/run/docker/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc -systemd-cgroup
root     111259   1482  0 07:08 pts/0    00:00:00 grep --color=auto 15eebdabbb8b

修复建议

修改系统参数

$ sed -i "/user.max_user_namespaces/d" /etc/sysctl.conf
$ echo "user.max_user_namespaces=15000" >> /etc/sysctl.conf
$ sysctl -p

编辑配置文件

$ vi /etc/systemd/system/docker.service

ExecStart=/usr/bin/dockerd添加参数--userns-remap=default

重载服务

$ systemctl daemon-reload
$ systemctl restart docker

启动一个容器

[root@localhost ~]# docker run -idt --name ccc alpine

查看容器内进程用户

[root@localhost ~]# ps -p $(docker inspect --format='{{.State.Pid}}' $(docker ps |grep ccc|awk '{print $1}')) -o pid,user
 PID USER
2535 100000

参考文档

相关文章

  • 日更第30日: 容器安全之启用用户命名空间

    描述 在Docker守护程序中启用用户命名空间支持,可对用户进行重新映射。该建议对镜像中没有指定用户是有帮助的。 ...

  • 容器安全之命名空间加固

    不共享主机的UTS命令空间 描述 UTS命名空间提供两个系统标识符的隔离:主机名和NIS域名。它用于设置在该名称空...

  • nsenter命令

    作用: 进入其他linux命名空间执行操作。如从主机进入容器的命名空间,或者从容器进入主机的命名空间。一般情况下,...

  • 给网络命名空间增加或删除网卡(容器通用)

    上次学习了网络命名空间,那么如何进入容器的命名空间呢? 运行的容器都对应一个PID,每个PID都有自己的命名空间。...

  • 日更第21日: 容器学习笔记之容器安全

    文档内容基于Docker 19.03.8 概述 云原生时代下,容器广受欢迎,因为它能简化应用或服务及其所有依赖项的...

  • 容器安全之启用实时恢复

    描述 live-restore参数可以支持无守护程序的容器运行。它确保Docker在关闭或恢复时不会停止容器,并在...

  • 十三、docker网络的命名空间

    查看当前电脑的全名空间 查看docker容器中的网络命名空间 查看本机有的网络命名空间 删除网络命名空间 添加网络...

  • kubernetes flannel 网络流程熟练

    pod IPdocker 把容器网络命名空间隐藏起来了,查看容器网络需要把对应的网络命名空间显示出来:容器Id:1...

  • linux内核的命名空间

    命名空间是linux内核针对实现容器虚拟化映入的一个特性。 命名空间的作用:它让我们创建的每个容器都有自己的命名空...

  • STL容器之字符串

    STL容器之字符串 STL容器字符串的简单介绍   #include 作为头文件引入, 需要使用std的命名空间...

网友评论

    本文标题:日更第30日: 容器安全之启用用户命名空间

    本文链接:https://www.haomeiwen.com/subject/fffyaltx.html