diff --git a/docs/ops/security.md b/docs/ops/security.md index 2849e8d..21449be 100644 --- a/docs/ops/security.md +++ b/docs/ops/security.md @@ -678,8 +678,7 @@ Passkey(通行密钥)则是目前最新的「无密码登录」技术,在 - root/sudo/IPMI 的权限不随意提供给运维无关人员。 - 这也包括了诸如 `docker` 的情况。 - 服务(包括容器在内)不随意暴露端口(特别是无限制 bind 到所有接口的情况),容器运行不随意提供 `--privileged`,运行的服务需要有自己的用户。 -- 对于 systemd 服务,考虑使用 systemd 提供的安全加固功能。 - +- 对于 systemd 服务,考虑使用 systemd 提供的安全加固功能。详见[服务与日志管理中对 `systemd-analyze security` 的介绍](./service.md#service)。 #### 使用扫描器检查已知的安全问题 {#scanner-known-vulnerabilities} diff --git a/docs/ops/service.md b/docs/ops/service.md index 298a6aa..8ec3b40 100644 --- a/docs/ops/service.md +++ b/docs/ops/service.md @@ -160,7 +160,17 @@ Service 也就是我们最常见的服务,它的配置文件中有一个 `[Ser !!! tip - 如果你有额外的安全需求,可以参考 [Sandboxing][systemd.exec.5#Sandboxing] 一节使用 systemd 提供的高级隔离功能。 + 如果你有额外的安全需求,可以参考 [Sandboxing][systemd.exec.5#Sandboxing] 一节使用 systemd 提供的高级隔离功能。可以使用 `systemd-analyze security` 命令检查整个系统的服务安全性配置情况,与单个服务的具体配置是否安全。该命令会根据服务配置计算 "exposure level" 分数,并且提供相关配置以及解释,类似如下: + + ```console + $ systemd-analyze security --no-pager caddy.service + NAME DESCRIPTION EXPOSURE + ✗ RemoveIPC= Service user may leave SysV IPC objects aro… 0.1 + ✗ RootDirectory=/RootImage= Service runs within the host's root directo… 0.1 + ✓ User=/DynamicUser= Service runs under a static non-root user i… + ✗ CapabilityBoundingSet=~CAP_SYS_TIME Service processes may change the system clo… 0.2 + (以下省略) + ``` #### Service Type {#service-type}