如何处理“systemd-analyze security”的结果?

如何处理“systemd-analyze security”的结果?

这些结果让我很困惑。我该如何解决这些警报?对于装有 Ubuntu 的家用电脑来说,这正常吗?谢谢。

me@ubuntu:~$ systemd-analyze security 
UNIT                                  EXPOSURE PREDICATE HAPPY
ModemManager.service                       5.6 MEDIUM    

答案1

systemd-analyze security查看 systemd 内置的沙盒功能。它不检查服务本身。因此可以安全地忽略这些,但如果您确实想解决这些问题,请参阅freedesktop systemd关于沙盒选项:

沙盒

以下沙盒选项是限制系统对单元进程的暴露的有效方法。建议在不对进程的运行能力产生负面影响的情况下,为每个单元打开尽可能多的这些选项。请注意,在没有底层安全机制的系统上,许多沙盒功能都可以正常关闭。例如,ProtectSystem=如果内核是在没有文件系统命名空间的情况下构建的,或者服务管理器在使其有效负载无法使用文件系统命名空间的容器管理器中运行,则不会产生任何影响。类似地,对于RestrictRealtime=不支持 SECCOMP 系统调用过滤的系统,或者在关闭了对此支持的容器中,也不会产生任何影响。

还请注意,某些沙盒功能通常不适用于用户服务(即由每个用户服务管理器运行的服务)。具体来说,需要文件系统命名空间支持的各种设置(例如ProtectSystem=)不可用,因为底层内核功能仅供特权进程访问。

您可以设置一长串选项来强制设备遵守更严格的政策,每个选项都附有对其功能的详细说明。

一些:

保护系统=

采用布尔参数或特殊值“full”或“strict”。如果为 true,则将 /usr 和 /boot 目录以只读方式挂载,以供此单元调用的进程使用。如果设置为“full”,则 /etc 目录也将以只读方式挂载。如果设置为“strict”,则整个文件系统层次结构都将以只读方式挂载,但 API 文件系统子树 /dev、/proc 和 /sys 除外(使用 PrivateDevices=、ProtectKernelTunables=、ProtectControlGroups= 保护这些目录)。此设置可确保禁止对服务进行任何供应商提供的操作系统(以及可选的配置和本地挂载)的修改。建议为所有长期运行的服务启用此设置,除非它们涉及系统更新或需要以其他方式修改操作系统。如果使用此选项,则可以使用 ReadWritePaths= 来排除特定目录的只读设置。如果设置了 DynamicUser=,则隐含此设置。此设置不能确保在所有情况下都受到保护。总体而言,它具有与 ReadOnlyPaths= 相同的限制,见下文。默认为关闭。

保护家园=

采用布尔参数或特殊值“read-only”或“tmpfs”。如果为 true,则目录 /home、/root 和 /run/user 将无法访问,并且对于此单元调用的进程为空。如果设置为“read-only”,则这三个目录将改为只读。如果设置为“tmpfs”,则临时文件系统将以只读模式挂载在这三个目录上。值“tmpfs”可用于隐藏与单元调用的进程无关的主目录,同时仍允许在 BindPaths= 或 BindReadOnlyPaths= 中列出时使必要的目录可见。

将其设置为“yes”基本上相当于在 InaccessiblePaths= 中设置三个目录。同样,“read-only”基本上相当于 ReadOnlyPaths=,“tmpfs”基本上相当于带有“:ro”的 TemporaryFileSystem=。

建议为所有长期运行的服务(特别是面向网络的服务)启用此设置,以确保它们无法访问私人用户数据,除非服务实际上需要访问用户的私人数据。如果设置了 DynamicUser=,则隐含此设置。此设置无法确保在所有情况下都受到保护。通常,它具有与 ReadOnlyPaths= 相同的限制,见下文。

此选项仅适用于系统服务,不支持在服务管理器的每个用户实例中运行的服务。

RuntimeDirectory=、StateDirectory=、CacheDirectory=、LogsDirectory=、ConfigurationDirectory=

这些选项采用以空格分隔的目录名称列表。指定的目录名称必须是相对的,并且不能包含“..”。如果设置,则在启动单元时,将在下表定义的位置下创建一个或多个指定名称的目录(包括其父目录)。此外,相应的环境变量使用目录的完整路径定义。如果设置了多个目录,则在环境变量中,路径将用冒号(“:”)连接起来。

答案2

systemd-analyze security SERVICE将显示单个服务的详细信息,以及您可以在 中找到更多信息的相关设置man 5 systemd.exec。如果您构建自己的服务,最好查看结果以了解服务被入侵、遇到格式错误的数据和编程错误的潜在风险。某些设置甚至可以使您的服务更易于维护:DynamicUser在运行时为服务设置用户,这样您就不必这样做了。

相关内容