SELinux 仅访问已打开的文件

SELinux 仅访问已打开的文件

我正在研究 SELinux。

使用 SELinux,是否可以允许二进制文件访问其父进程打开的文件,而不能访问其他文件?

如果不能,那么我们就应该增强它。

答案1

是的,可以这样做。

SELinux 是一个标签系统,根据原始进程的安全上下文授予对文件(以及用户、进程等)执行不同操作的权限。

参考策略定义的是进程的安全上下文:

# ps -defZ | grep httpd
system_u:system_r:httpd_t:s0    root      1085     1  0 21:22 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND

在此示例中,安全上下文具有以下元素:

  • system_u:SELinux 用户
  • system_r:SELinux 角色
  • httpd_t:SELinux 类型强制属性。
  • s0:MLS/MCS 范围,与默认目标策略之外的策略相关。

并且还定义了进程可以访问哪些安全上下文:

# ll -dZ /srv/www/html/
drwxr-s---. root apache system_u:object_r:httpd_sys_content_t:s0 /srv/www/html/

# sesearch -s httpd_t -t httpd_sys_content_t -c file -p read -Ad
Found 1 semantic av rules:
   allow httpd_t httpd_sys_content_t : file { ioctl read getattr lock open } ;

在上面的例子中,给定目录的安全上下文/srv/www/html,您可以使用它来查找sesearch(1)是否在策略中定义了标为 的进程httpd_t可以对标为 的目录具有读访问权限httpd_sys_content_t

查看手册页以sesearch了解更多选项。

因此,为了限制分叉进程访问其父进程打开的文件,您应该确保存在允许该操作的策略。

相关内容