首页/安全/安全加固速查/systemd 服务全景审计(运行态与自启动)
服务与端口收敛50 条

systemd 服务全景审计(运行态与自启动)

服务收敛第一步是全量盘点:正在运行的服务、开机自启的服务、以及两者之差——审计要求“运行即必要、自启即批准”。

安全加固速查安全更新于 2026-10-13

服务审计要回答两个问题

服务收敛的第一步是全量盘点,而盘点要回答两个问题:这台机器上为什么有这些服务在跑,以及为什么它们被设置为开机自启。运行中的服务决定当前暴露面,自启的服务决定重启后的暴露面,两者必须分别核对。判断标准不是「标准模板里该不该有」,而是「以这台机器的职责,它是否必要」。

基本信息

加固项服务最小化
适用平台Linux(systemd 发行版)
风险等级中
基线无未授权运行或自启的服务
盘点维度运行状态、自启状态、监听端口三个视角交叉

典型使用场景

  • 新机交付:确认默认开启的服务清单并逐项判断必要性
  • 等保最小服务:要求关闭与业务无关的服务与端口
  • 容量与性能排查:找出占用资源但无人认领的服务
  • 事件排查:陌生服务可能是攻击者留下的驻留点
  • 模板固化:把收敛结果写进标准镜像,新机不再重复治理

运行态与自启清单

运行态与自启清单
systemctl list-units --type=service --state=running
systemctl list-unit-files --state=enabled | head -50
systemctl --failed                       # 失败单元也值得看一眼
systemctl list-sockets --state=listening | head -20   # 套接字激活的服务
ss -tulnp | awk '{print $1, $5, $7}' | sort -u | head -40   # 按监听端口反查

三个视角对照

视角命令说明
运行态列出运行中的服务单元反映当前暴露面,重启后可能变化
自启态列出已启用的单元文件决定重启后的状态,常被忽略
监听态列出监听中的套接字从端口反推服务,能发现未被记录的服务
失败单元列出运行失败的单元异常失败可能意味着配置被改动过
新装机器常出现「默认开着一堆服务」的情况:审计应以这台机器的职责为基准逐项判断必要,而不是照抄某份通用模板。判断结论要写成可复查的形式,例如服务名、用途、是否必要、处置动作,便于下一轮复核时直接比对。
两个容易漏的点:已启用不等于正在运行,反之亦然,两份清单都要看;另外由套接字激活的服务,在主服务列表中可能看不到常驻进程,排查时要连带查看套接字单元,否则会得出「没有这个服务」的错误结论。

从盘点到收敛

盘点之后按三类处置:与业务无关的直接停用并禁用自启;用途不明但无法确认的先限制其监听来源;必要的服务保持现状并纳入基线记录。收敛后把结果固化到镜像与配置管理中,同时保留一份清单作为比对基准,这样后续出现的差异都能被快速识别,而不是每次重新判断一遍。

易错点

  • 只看运行态不看自启态:重启后服务复活,暴露面恢复到整改前
  • 照抄通用模板判断必要性:不同职责的机器结论不同,误停必要服务会造成业务中断
  • 漏掉套接字激活的服务:主服务列表中看不到进程,容易误判为不存在
  • 处置后不确认端口消失:停用服务不代表其监听端口立即释放,需以实际监听状态复核
  • 收敛结果不固化:同类主机持续产生同样问题,治理无法收尾

数据来源与参考

  • CIS Linux Benchmark:服务最小化条目
  • 等保 2.0:最小安装与最小服务
  • systemctl(1) 手册

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌