linux命名空间的禁用
linux命名空间的禁用
xiaoxin-topCVE-2024-1086
由于linux命名空间是默认开启的,所以需要禁用,否则会存在一些漏洞
- 用户命名空间:用户命名空间的功能主要是为了提供进程和用户 ID 的隔离,通常用于安全容器环境。禁用用户命名空间后,普通用户将无法创建这样的隔离环境。
- 用户命名空间是 Linux 内核的一个特性,它允许非特权用户创建自己的隔离环境,其中的用户和组 ID 可以重新映射,主要用于容器和沙箱环境。禁用用户命名空间后,普通用户将无法创建这些隔离环境。
禁用用户命名空间
添加配置用户命名空间允许非特权用户创建隔离的用户和组 ID 映射,从而可以执行一些特权操作。为了增强安全性,你可以禁用它。
1 | echo “user.max_user_namespaces=0” > /etc/sysctl.d/userns.conf |
1 | sudo sysctl --system |
1.使用 sysctl 命令查看当前 user.max_user_namespaces 的值:
如果输出为 user.max_user_namespaces = 0,说明用户命名空间已经被禁用。
1 sysctl user.max_user_namespaces
2.普通用户命名空间的创建
尝试用非特权用户创建用户命名空间。如果命名空间被禁用,应该会报错
1 unshare --user --map-root-user id如果命令返回类似 unshare: unshare failed: Invalid argument 的错误,表示用户命名空间的创建已被禁用。
- 尝试运行容器
容器技术,如 Docker 或 Podman,通常依赖于用户命名空间。你可以尝试用非特权用户运行一个简单的容器,看看是否会失败。
例如,使用 Docker 运行一个简单的容器:
1 docker run --rm -it busybox如果用户命名空间被禁用,Docker 可能会因为无法创建用户命名空间而失败。
- 使用 newuidmap 和 newgidmap
用户命名空间的创建也涉及到 newuidmap 和 newgidmap 工具。这些工具用于映射用户和组 ID
1 newuidmap 0 1000 1 1000如果你看到错误,例如 newuidmap: write to uid_map failed: Invalid argument,说明用户命名空间已经被禁用。
使用命名空间
使用unshare创建命名空间
- UTS(主机名和域名)命名空间:隔离主机名和域名。
- IPC(消息队列、信号量、共享内存)命名空间:隔离消息队列、信号量和共享内存。
- PID(进程ID)命名空间:隔离进程ID。
- Mount(挂载)命名空间:隔离文件系统挂载点
- Network(网络)命名空间:隔离网络设备、IP 地址、端口号等。
- User(用户)命名空间:隔离用户和用户组。
- Cgroup(资源限制)命名空间:隔离资源限制,如CPU、内存等。
unshare 命令可以分离当前进程或一个新创建的进程进入一个新的命名空间
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果