【发布时间】:2011-12-28 00:46:50
【问题描述】:
我有一个程序可能会受到威胁,但最初需要 root 权限。目前,程序chroots 进入预配置目录,然后删除权限。
但是,我想阻止我的程序在删除 root 权限后访问文件系统,并且如果可能的话不需要任何配置。有没有比 /tmp 中的 creating a temporary directory 更好的方法并 chroot 进入它?
【问题讨论】:
我有一个程序可能会受到威胁,但最初需要 root 权限。目前,程序chroots 进入预配置目录,然后删除权限。
但是,我想阻止我的程序在删除 root 权限后访问文件系统,并且如果可能的话不需要任何配置。有没有比 /tmp 中的 creating a temporary directory 更好的方法并 chroot 进入它?
【问题讨论】:
你基本上有两种选择:
这是正确的方法,但需要您学习框架并进行大量配置。您基本上可以设置策略,以便此进程或运行它的用户(或两者)无法访问系统的其余部分。
这是一个不太优雅的解决方案,可能会产生更大的性能影响,但只需要很少的配置,只需要一点编码。我在我写的安全模块中做了类似的事情:
https://github.com/cormander/tpe-lkm
它与 execve、mmap、mprotect 和其他东西挂钩。对open、write等也可以做同样的事情,拒绝基于uid或gid,甚至进程名的系统调用。
【讨论】:
我最终进入了一个临时目录(在我的例子中,/var/run/programname),然后删除了权限。这提供了足够的保护,并且不需要任何复杂的安装。不利的一面是,它首先要求我的程序以超级用户身份运行。
【讨论】: