因此,我正在深入研究 systemd 的复杂性,以及它使用 cpu、io 和内存等 cgroup 来计量资源的能力。
还有一种方法可以控制进程可以使用 systemd 访问的目录吗?例如,/usr/bin
通常标记为o+rX
,我希望将网络服务器进程锁定在该目录之外。已经有很多软件漏洞,您可以从磁盘读取任意文件,这将增强分层的安全性方法。
我确信这可以通过一些非常花哨的文件系统权限来完成,但想知道是否有更好的方法。感谢服务器故障!
因此,我正在深入研究 systemd 的复杂性,以及它使用 cpu、io 和内存等 cgroup 来计量资源的能力。
还有一种方法可以控制进程可以使用 systemd 访问的目录吗?例如,/usr/bin
通常标记为o+rX
,我希望将网络服务器进程锁定在该目录之外。已经有很多软件漏洞,您可以从磁盘读取任意文件,这将增强分层的安全性方法。
我确信这可以通过一些非常花哨的文件系统权限来完成,但想知道是否有更好的方法。感谢服务器故障!
实际上,您有许多选项,您可以在单元文件中为您的服务定义这些选项。它们都以相同的原理工作,通过在为服务设置的命名空间 systemd 中使用绑定挂载。文件系统的某些部分要么以只读方式挂载,要么通过挂载空目录呈现为完全不可见/不可访问。
PrivateTmp
可以说是最常见的。启用
PrivateTmp
为已执行的进程设置一个新的文件系统命名空间,并在其中挂载私有目录/tmp
和/var/tmp
目录,这些目录不被命名空间外的进程共享。ProtectSystem
如果,则为本单元调用的进程以只读方式
true
挂载/usr
和目录。 如果设置为,则该目录也以只读方式挂载。如果设置为“strict”,则整个文件系统层次结构以只读方式挂载,API 文件系统子树 /dev、/proc 和 /sys 除外/boot
full
/etc
ProtectHome
接受布尔参数或“只读”。如果,
true
目录和被本单元调用的进程设为不可访问且为空。如果设置为“ ”,则三个目录改为只读/home
/root
/run/user
read-only
ProtectKernelTunables
如果为真,内核变量可通过
/proc/sys
,/sys
,/proc/sysrq-trigger
,/proc/latency_stats
,/proc/acpi
,和访问/proc/timer_stats
,并将设为只读。/proc/fs
/proc/irq
ReadOnlyPaths
列出的路径
ReadOnlyPaths=
只能以只读方式访问,即使通常的文件访问控制允许这样做,也会拒绝写入。InaccessiblePaths
InaccessiblePaths=
命名空间内的进程(以及文件系统层次结构中它们下面的所有内容)将无法访问其中 列出的路径。不过可能还有更多选择。
更分层的访问策略可能需要 SELinux,并且您可能需要对它有非常透彻的了解,并且您可能需要熟练使用多级安全策略。