systemd-analyze security 专门评估 systemd 服务单元的安全沙箱配置,检查 NoNewPrivileges、PrivateTmp、ProtectSystem 等安全选项是否启用,并给出 0–10 分暴露评分和改进建议,不涉及 CPU、内存等运行时资源限制。

systemd-analyze security 并不是用于分析“资源受限等级”的命令,它不检查 CPU、内存、文件描述符等运行时资源限制,而是专门评估 systemd 服务单元在安全沙箱维度上的加固程度——即服务是否启用了推荐的安全防护机制。
它针对的是 .service 单元文件中配置的 sandboxing 相关选项(如 NoNewPrivileges=、PrivateTmp=、ProtectSystem=、RestrictAddressFamilies= 等),并依据 systemd 官方安全指南(systemd.security)对每个服务打分、分级、给出改进建议。
✅ 正确理解:systemd-analyze security 做什么?
它扫描所有已启用或已安装的 .service 单元,逐项检查是否设置了以下关键安全属性:
- 是否禁用新特权(
NoNewPrivileges=yes) - 是否隔离临时目录(
PrivateTmp=yes) - 是否只读挂载系统目录(
ProtectSystem=strict或full) - 是否限制访问的地址族(
RestrictAddressFamilies=) - 是否禁用内核模块加载(
RestrictNamespaces=+RestrictRealtime=等) - 是否隐藏
/proc下敏感信息(ProtectProc=、ProcSubset=) - 是否限制能力集(
CapabilityBoundingSet=) - 是否禁用环境变量继承(
RemoveIPC=yes、LockPersonality=yes)
每项缺失或配置宽松,都会被标记为“未加固”,最终汇总成一个安全评分(0–10 分)和风险等级(low/medium/high/critical)。
⚠️ 注意:它不读取
ulimit、systemctl show xxx | grep MemoryLimit或 cgroup 限制值,也不分析进程实际内存/CPU 使用。那是systemctl show、systemd-cgtop或ps的职责。
? 如何使用 systemd-analyze security
1. 查看所有服务的安全评分(默认)
systemd-analyze security
输出类似:
UNIT SCORE GRADE sshd.service 7.5 medium nginx.service 4.2 low docker.service 2.8 low systemd-journald.service 9.1 high ... → Overall grade: low (5.3)
2. 查看某服务的详细安全审计报告
systemd-analyze security sshd.service
会列出:
- 启用的安全选项 ✅
- 缺失的关键选项 ❌(如
ProtectHome=strict未设) - 具体建议(例如:“Add
ProtectHome=strictto block access to /home”)
3. 只显示高风险服务(grade=high/critical)
systemd-analyze security --no-pager | grep -E "(critical|high)"
? 如何提升服务的安全等级?(实操建议)
对评分低的服务(如 nginx、redis、自定义服务),可编辑其单元文件或创建覆盖配置:
sudo systemctl edit nginx.service
添加以下最小加固段(根据服务特性调整):
[Service] NoNewPrivileges=yes PrivateTmp=yes ProtectSystem=strict ProtectHome=strict RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 CapabilityBoundingSet=CAP_NET_BIND_SERVICE RestrictNamespaces=yes LockPersonality=yes MemoryDenyWriteExecute=yes
保存后重载并重启:
sudo systemctl daemon-reload sudo systemctl restart nginx.service
再运行 systemd-analyze security nginx.service,分数通常明显上升。
❌ 常见误区澄清
| 你想查的 | 正确工具 | 说明 |
|---|---|---|
| 服务实际内存/CPU 限制 | systemctl show nginx | grep -E "(Memory|CPU)Limit" |
查 MemoryLimit=, CPUQuota= 等 |
| 进程当前资源使用 |
systemd-cgtop 或 ps aux --sort=-%mem
|
实时观察 |
| 文件描述符限制 | systemctl show nginx | grep LimitNOFILE |
或看 LimitNOFILE= 配置 |
| 安全沙箱配置是否启用 | ✅ systemd-analyze security
|
唯一官方途径 |
不复杂但容易忽略:安全加固不是“开个开关”,而是按服务行为渐进加锁。systemd-analyze security 是起点,不是终点。











