有没有办法用 systemd 控制文件系统访问?

Jon*_*her 4 init.d systemd

所以我正在深入研究 systemd 的复杂性,它能够使用 cpu、io 和内存等 cgroup 来计量资源。

是否还有一种方法可以控制进程可以使用 systemd 访问的目录?例如,/usr/bin通常标记为o+rX,我希望将网络服务器进程锁定在该目录之外。已经有很多软件漏洞可以从磁盘读取任意文件,这将增强分层的安全方法。

我确信这可以通过一些非常花哨的文件系统权限来完成,但想知道是否有更好的方法。感谢服务器故障!

HBr*_*ijn 6

您实际上有许多选项,您可以在单元文件中为您的服务定义这些选项。它们都以相同的原理工作,通过在 systemd 为服务设置的命名空间中使用绑定挂载。文件系统的某些部分要么以只读方式挂载,要么通过挂载空目录使其完全不可见/不可访问。

PrivateTmp可以说是最常见的。
启用PrivateTmp为执行的进程设置一个新的文件系统命名空间,并在其中安装私有/tmp/var/tmp目录,这些目录不被命名空间之外的进程共享。

ProtectSystem
如果true,则为本单元调用的进程以只读方式挂载/usr/boot目录。
如果设置为full,则/etc目录也以只读方式挂载。如果设置为“strict”,则整个文件系统层次结构以只读方式挂载,API 文件系统子树 /dev、/proc 和 /sys 除外

ProtectHome
采用布尔参数或“只读”。如果true, 目录/home,/root/run/user对于由该单元调用的进程不可访问且为空。如果设置为“ read-only”,则三个目录改为只读

ProtectKernelTunables
如果为 true,内核变量可通过/proc/sys, /sys, /proc/sysrq-trigger, /proc/latency_stats, /proc/acpi, /proc/timer_stats,/proc/fs和访问/proc/irq

ReadOnlyPaths
中列出的路径ReadOnlyPaths=只能读取,即使通常的文件访问控制允许写入,也会拒绝写入。

InaccessiblePaths
InaccessiblePaths=命名空间内的进程(以及文件系统层次结构中它们下面的所有内容)将无法访问中 列出的路径。

不过可能还有更多选择。

更分层的访问策略可能需要 SELinux,并且对它有非常透彻的了解,并且您可能需要熟练使用多级安全策略。