需区分Linux和Windows机制:Linux用auditd监控systemctl等命令及/etc/systemd/system/等路径写入;Windows启用高级审核策略并配置Services注册表SACL,关注事件ID 4662、7045、7030。
要审计系统服务的安装、修改与卸载操作,需区分操作系统类型——linux 和 windows 的机制完全不同,审计路径和工具也各不相同。核心思路是:不依赖高层命令语义,而是捕获底层行为载体(如可执行文件调用、注册表/数据库写入、关键路径变更)。
Linux 系统:用 auditd 监控服务管理行为
Linux 中“安装/卸载服务”本质是修改 systemd 单元文件、创建/删除二进制、写入 /etc/systemd/system/ 或 /usr/lib/systemd/system/,或直接调用 systemctl、chkconfig、update-rc.d 等命令。
你可以这样配置 auditd 规则:
-
监控服务管理命令执行
sudo auditctl -w /usr/bin/systemctl -p x -k svc_systemctl sudo auditctl -w /usr/bin/systemd-sysv-generator -p x -k svc_gen sudo auditctl -w /usr/sbin/chkconfig -p x -k svc_chkconfig # RHEL/CentOS 6 sudo auditctl -w /usr/sbin/update-rc.d -p x -k svc_updaterc # Debian/Ubuntu
-
监控服务配置路径写入
sudo auditctl -w /etc/systemd/system/ -p wa -k svc_unit_files sudo auditctl -w /usr/lib/systemd/system/ -p wa -k svc_unit_syslib sudo auditctl -w /etc/init.d/ -p wa -k svc_initd sudo auditctl -w /etc/default/ -p wa -k svc_default_conf # 常见服务启动参数存放处
-
补充关键系统调用(可选高精度)
# 捕获所有对 .service 文件的 openat/write/writev 调用 sudo auditctl -a always,exit -F arch=b64 -S openat,write,writev -F path=/etc/systemd/system/ -k svc_open_write
✅ 日志检索示例:
ausearch -i -k svc_systemctl | grep "comm=systemctl.*install\|enable\|disable\|stop\|start"ausearch -i -k svc_unit_files | grep "name.*\.service"
Handsfree Windows Control下载通过 handsfree-windows CLI控制 Windows 本机应用 (UIA) 和浏览器 (Playwright) 的引导技能,用于自动化或测试桌面应用。
⚠️ 注意:避免监控 /etc/ 或 /usr/ 全目录,防止日志爆炸;规则应保存至 /etc/audit/rules.d/10-service.rules 并重启 auditd 生效。
Windows 系统:启用高级审核策略 + SACL 配置
Windows 不通过命令行审计,而是基于事件日志 + 注册表访问控制。服务信息存储在注册表 HKLM\SYSTEM\CurrentControlSet\Services\,任何增删改都涉及对该路径的写入。
你需要组合以下两项:
开启高级审核策略(组策略)
路径:计算机配置 → 安全设置 → 高级审核策略配置 → 系统审核策略 → 对象访问 → 审核对象访问
设置为:成功 + 失败(确保记录所有注册表写操作)-
为服务注册表路径设置 SACL(安全访问控制列表)
使用icacls或 PowerShell 手动添加审计项:# 为 Services 键添加审核(仅限管理员权限运行) auditpol /set /category:"Object Access" /success:enable /failure:enable cacls "HKLM\SYSTEM\CurrentControlSet\Services" /t /e /g "Administrators:F" /a /e /c # 更推荐用 PowerShell 设置精细 SACL(需使用 Set-AuditRule)
✅ 关键事件 ID:
- 4662:尝试访问对象(含注册表),当
Object Type = Key且Object Name包含Services时即为服务变更- 7045:Windows 服务安装事件(由 SCM 自动记录,无需额外配置)
- 7030:服务启动/停止(非安装,但属生命周期关键事件)
? 补充建议:启用 Audit Process Creation(事件 ID 4688)可捕获 sc.exe create、powershell -Command New-Service 等命令行安装行为。
统一建议:审计有效性验证与日常维护
-
定期测试触发:手动执行一次
systemctl enable httpd(Linux)或sc create testsvc binPath=...(Windows),立即查日志是否捕获 -
日志归集与告警:将 audit.log 或 Windows Security 日志接入 SIEM(如 ELK、Splunk),对关键词
create.*service、delete.*service、HKLM.*Services.*WRITE设置告警 -
权限最小化:限制能执行服务操作的账户(如 Linux 中禁用普通用户
sudo systemctl;Windows 中移除非管理员对Services键的写权限) -
保留原始上下文:确保 auditd 记录
auid(登录用户ID)、Windows 记录SubjectUserName,避免只看到SYSTEM或root掩盖真实操作者
不复杂但容易忽略


















