所以我正在深入研究 systemd 的复杂性,它能够使用 cpu、io 和内存等 cgroup 来计量资源。
是否还有一种方法可以控制进程可以使用 systemd 访问的目录?例如,/usr/bin
通常标记为o+rX
,我希望将网络服务器进程锁定在该目录之外。已经有很多软件漏洞可以从磁盘读取任意文件,这将增强分层的安全方法。
我确信这可以通过一些非常花哨的文件系统权限来完成,但想知道是否有更好的方法。感谢服务器故障!
您实际上有许多选项,您可以在单元文件中为您的服务定义这些选项。它们都以相同的原理工作,通过在 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,并且对它有非常透彻的了解,并且您可能需要熟练使用多级安全策略。
归档时间: |
|
查看次数: |
594 次 |
最近记录: |