我想利用 SELinux 的能力来限制一组 Linux 进程。该组是具有足够高 UID(例如 >1000)的非特权用户。我想在共享托管服务器上执行此操作,许多不同的客户在其中运行他们的 PHP 脚本。目前,SELinux 已关闭。
更具体地说,我想禁止创建符号链接由于各种与符号链接相关的攻击,也许还有一些其他类似的规则,例如参见
https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=linux+symlink+race
我认为使用基本策略中的规则可以实现 SELinux 的这种使用,这是一条简短的规则,其功能类似于(伪代码):
"allow everything that SELinux Off does"
neverallow $source_type $target_type : lnk_file write;
在哪里源类型和目标类型不知何故,将会指定 unix 用户的目标组(抱歉,如果这是错误的,我对 SELinux 还不是很熟悉)。
然而,这几乎是我希望 SELinux 做的唯一事情。
我不想使用 Redhat 或其他 Linux 发行版分发的完整默认策略,因为它的限制非常严格,并且可能会导致当前正在运行的应用程序出现很多问题。
在如此宽松的政策下运行 SELinux 是否存在问题?或者,是否有其他首选方式来实现这种限制?