Tag: linux namespaces

不安全的procfs-linux命名空间暴露

我读过这里https://www.nccgroup.trust/globalassets/our-research/us/whitepapers/2016/april/ncc_group_understanding_hardening_linux_containers-1-1.pdf关于linux命名空间威胁之一: 由于缺乏名称空间支持,/ proc /的暴露提供了重要的攻击面和信息披露的来源(…) 我怕我不明白。 毕竟,创build一个挂载命名空间是可能的,那么上面这个ciatation是什么意思,怎么看呢? 例如,当我ls /proc/在我的主机上,我在ls /proc/在docker容器中看到一个区别

`/ etc / sub {u,g} id`中用户的意义是什么? (帮我grok用户名称空间)

我想确保我的docker容器内的任何用户总是映射到我的docker主机上的特定用户。 我已经尝试使用此参考https://stackoverflow.com/a/35854547/1020678 /etc/subuid的用户名似乎被严格用作映射到值<start id>:<range> key <start id>:<range>的关键字<start id>:<range> ,但除此之外似乎没有任何用途。 真正困扰我的是在/etc/subuid需要一个用户,当这个用户在/etc/subuid容器中装入卷时似乎没有权限写入文件系统。 按照链接中的示例,我以用户ns1身份执行以下操作: $ mkdir test && docker run -ti -v $(pwd)/test:/tmp alpine touch /tmp/foobar 返回: touch: /tmp/foobar: Permission denied 看起来用户ns1没有–userns-remap=ns1好处,那么为什么在为ns1-root和ns1-user1启用用户命名空间时需要此用户? 这些用户可以在权限设置正确时写入泊坞窗卷,但为什么不是ns1 ? 是否有可能实现我的目标,或者我必须显式定义在我的容器内外的所有用户/组,使用/etc/subuid中的起始ID的偏移量(在我链接的示例中为500000)?

在Ubuntu上,实现容器隔离(用户名空间),more / proc / / gid_map,不输出

当我学习docker时,章节中的代码:[user namespace]: 演示的含义是使用[user namespace]来实现: 容器外面是普通用户的权限,在容器中是root权限。 #define _GNU_SOURCE #include <sys/types.h> #include <sys/wait.h> #include <stdio.h> #include <sched.h> #include <signal.h> #include <unistd.h> #include <sys/capability.h> // sudo apt install libcap-dev #define STACK_SIZE (1024 * 1024) static char child_stack[STACK_SIZE]; char* const child_args[] = { "/bin/bash", NULL }; void set_uid_map(pid_t pid, int inside_id, int outside_id, int length){ char path[256]; sprintf(path, "/proc/%d/uid_map", […]

允许容器在端口80上收听的副作用

为了简化Docker容器之间的服务端口pipe理,我希望允许包含的HTTP服务侦听各自容器IP地址的HTTP默认TCP端口80。 监听1025以下的端口号通常限于具有特权的用户,如root 。 据我所知,这样做的原因是禁止多用户系统上的非特权用户充当整个机器的授权HTTP服务。 在较新的Linux版本中,也可以通过应用Linux内核functionCAP_NET_BIND_SERVICE来允许特定的可执行文件。 为了在Docker容器中工作,我似乎还需要通过Docker客户端上的–add-cap标志或Docker-Compose cap_add部分将此function应用于Docker容器本身。 理论上,这种端口号限制的原因在这种情况下已经过时了,因为Linux内核的networking命名空间允许容器内的进程只绑定在他们自己独有的IP地址上。 现在我的问题是,如果有这样的严重警告。 这是否会成为一个安全问题,而不会被我忽视? 或者还有其他的问题吗?