阻止我的程序访问文件系统

时间:2011-12-28 00:46:51

标签: security chroot

我有一个可能受到攻击的程序,但最初需要root权限。目前,程序chroots进入预先配置的目录,然后删除权限。

但是,我想在删除root权限后阻止我的程序访问文件系统,如果可能的话,不需要任何配置。在/ tmp和chrooting中有比creating a temporary directory更好的方法吗?

2 个答案:

答案 0 :(得分:2)

您基本上有两个选择:

  • 使用安全模块(如SELinux)将该进程从系统的其余部分锁定

这是正确的方法,但需要您学习框架并进行大量配置。您基本上可以设置策略,以便此进程或运行它(或两者)的用户无法访问系统的其余部分。

  • 劫持内核的文件系统调用以拒绝运行受感染程序的用户

这是一个不那么优雅的解决方案,可能会对性能产生更大的影响,但只需要很少的配置,只需要一点点编码。我在我写的安全模块中做了类似的事情:

https://github.com/cormander/tpe-lkm

它挂钩到execve,mmap,mprotect等等。对open,write等也可以这样做,并根据uid或gid甚至进程名称拒绝系统调用。

答案 1 :(得分:0)

我最终chroot到一个临时目录(在我的情况下,/var/run/programname)并在此后删除权限。这提供了足够的保护,并且不需要任何复杂的安装。在缺点方面,它要求我的程序首先以超级用户身份运行。