我有一个程序可能会受到威胁,但最初需要 root 权限。目前,程序chroots进入预先配置的目录,然后删除权限。
但是,我想阻止我的程序在放弃 root 权限后完全访问文件系统,并且如果可能的话不需要任何配置。有没有比 creating a temporary directory 更好的方法在/tmp 中并 chroot 到它?
最佳答案
你基本上有两个选择:
- 使用安全模块(例如 SELinux)将该进程与系统的其余部分隔离开
这是正确的做法,但需要学习框架并进行大量配置。您基本上可以设置策略,以便此进程或运行它的用户(或两者)无法访问系统的其余部分。
- 劫持内核的文件系统调用以拒绝运行受感染程序的用户进行调用
这是一个不太优雅的解决方案,可能会对性能产生更大的影响,但只需要很少的配置,只需少量编码。我在我写的安全模块中做了类似的事情:
https://github.com/cormander/tpe-lkm
它与 execve、mmap、mprotect 和其他东西 Hook 。可以对打开、写入等执行相同的操作,并拒绝基于 uid 或 gid 甚至进程名称的系统调用。
关于security - 阻止我的程序访问文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8650769/