要追踪系统关键服务进程的启动日志,需启用auditd并配置execve系统调用审计规则,聚焦服务主程序路径(如/usr/bin/sshd)加-k键名精确监控,结合ausearch-aureport分析exe、cwd、comm、ppid等字段确认启动上下文。

要追踪系统关键服务进程的启动日志,核心是确保相关服务的启动行为被审计子系统捕获,并能通过 ausearch 或 audispd 等工具可靠检索。
启用 auditd 并配置规则捕获 execve 系统调用
服务启动本质是执行二进制文件(如 /usr/bin/nginx、/usr/lib/systemd/systemd),需监听 execve 系统调用。在 /etc/audit/rules.d/audit.rules 中添加:
-
-a always,exit -F arch=b64 -S execve -k service_start(x86_64 系统) -
-a always,exit -F arch=b32 -S execve -k service_start(兼容 32 位调用)
重启 auditd:systemctl restart auditd。该规则会记录所有进程执行动作,后续靠关键字过滤关键服务。
聚焦关键服务路径,减少日志噪音
全量 execve 日志量大,建议按服务主程序路径精确监控。例如:
-a always,exit -F path=/usr/bin/sshd -F perm=x -k sshd_start-a always,exit -F path=/usr/sbin/httpd -F perm=x -k httpd_start-a always,exit -F path=/usr/lib/systemd/systemd -F perm=x -k systemd_unit_start
注意:使用 -F perm=x 表示“可执行”权限触发,比仅匹配路径更准确;-k 后的键名便于后续 ausearch -k 快速筛选。
识别 systemd 服务启动的真实入口
systemd 管理的服务(如 nginx.service)通常由 systemd 进程 fork+exec 启动,但直接监控 /usr/lib/systemd/systemd 只能看到 systemd 自身活动。更有效的方式是:
- 查服务 Unit 文件中的
ExecStart=路径,对该路径加审计规则(如/usr/sbin/nginx) - 配合
ausearch -m EXECVE -i | grep "nginx\|systemd"辅助分析父子关系 - 启用
auditctl -w /etc/systemd/system/ -p wa -k systemd_config可捕获服务单元变更导致的重启
查询与验证启动事件
服务启动后,用以下命令提取可信记录:
-
ausearch -k service_start --start recent --raw | aureport -f -i(查看最近所有执行事件) -
ausearch -k sshd_start --start today -i(查某服务今日启动详情) -
aureport -m -ts yesterday --raw | aureport -f -i | grep "sshd\|nginx"(按模块+时间+关键词组合筛选)
重点看 exe(执行文件)、cwd(工作目录)、comm(命令名)、ppid(父进程 ID)字段,确认是否为预期服务及其调用上下文。











