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