linux 沙盒化工具 ¶
#systemd #bwrap #container
#网络安全 /
- Systemd 现代系统预装,可以将用户服务沙盒化
- systemd-run 可用于交互式应用,现代系统预装
- sudo systemd-run --pty \
- -p User=hsiaotien \
- -p ProtectSystem=strict \
- -p ReadWritePaths="/home/user/dir1 /home/user/dir2" \
- -p ReadOnlyPaths=/path/to/readonly-path \
- ./your_app
- 注意,your_app不能是tmux之类的应用,或者正在运行的应用,否则,应用可能会产生权限逃逸,因为已运行的应用权限通常难以收回。
- 使用 -p 标记可以控制的安全选项
- PrivateTmp=yes 使用私有临时目录
- NoNewPrivilege=yes 禁止使用su/sudo 等工具提权
- ProtectHome=yes 禁止访问/home 目录
- ProtectSystem=full/strict 保护系统根分区
- InaccessibleDirectories=… 不可访问路径,里面的内容被完全隐藏了。
- ReadOnlyPaths=… 只读路径
- ReadWritePaths=… 完全访问路径
- 还是不能使用tmux/screen之类的应用,因为这类应用通常已经运行,新运行的应用会使用之前应用的权限。
- bwrap 基于 namespace 的沙盒化工具,fedora ubuntu 等系统预装,注bwrap是需要root权限的
- bwrap \
- --ro-bind / / \
- --bind /home/user/dir1 /home/user/dir1 \
- --bind /home/user/dir2 /home/user/dir2 \
- --dev /dev \
- --proc /proc \
- ./your_app
- --ro-bind / /: 将整个根目录挂载为只读。
- --bind: 将特定目录挂载为可读写(覆盖之前的只读设置)。
- --dev / --proc: 映射必要的系统资源,保证程序能正常运行。
综合看起来好像systemd-run 要简单一点,使用system-run后,在/run/systemd/transient目录下会生成一个配置文件,可以拷贝出来备用。另外就是,只要有 --scope 参数,系统必不会接受一些安全参数,交互式程序的话,可以用-t参数。
用DOCKER 容器化
拉取一个基本系统镜像,比如 Ub24.04,将应用和目录映射到容器里面,然后调用应用的启动命令,这样应用的活动目录被限制在映射的空间。
评论
请登录后发表评论。
暂无评论。成为第一个评论者!