Windows系统服务安全审计需启用高级审核策略并绑定SACL:启用“进程创建”“本地/网络登录”“Kerberos票据操作”,对服务账户在注册表或服务路径设SACL;同步禁用交互登录、剥离特权、隔离配置目录,并通过事件ID 4688等快速追踪驻留痕迹。

配置系统服务安全审计策略,核心是让所有关键操作“可追溯、可定位、可归责”。不是简单打开日志开关,而是围绕服务运行主体(谁)、行为动作(做了什么)、资源目标(动了什么)和上下文(何时、从哪来)四要素,构建闭环审计能力。重点不在记录一切,而在精准捕获高风险路径。
Windows:启用高级审核策略并绑定服务对象
基础审核策略(如“审核登录事件”)粒度太粗,无法区分服务账户行为。必须启用“高级审核策略配置”,并结合SACL(系统访问控制列表)定向监控特定服务相关对象:
- 打开组策略编辑器(gpedit.msc),定位到:计算机配置 → 安全设置 → 高级审核策略配置 → 系统审核策略
- 启用以下关键子项(勾选“成功”和“失败”):
• 详细跟踪 → 进程创建(捕获服务启动/注入进程)
• 特权使用 → 本地登录/网络登录(识别服务账户异常登录)
• 账户登录 → Kerberos服务票据操作(发现黄金票据滥用) - 对关键服务账户(如NT SERVICE\wuauserv、LocalSystem托管的服务)在注册表或服务配置单元上手动设置SACL:
• 使用icacls或dsacls为服务账户添加“系统访问”审核条目
• 示例:监控WMI服务调用:icacls "C:\Windows\System32\wbem" /setintegritylevel "MandatoryLabel\High Mandatory Level" /audit "NT SERVICE\winmgmt:(OI)(CI)(S)"
Linux:auditd聚焦服务生命周期与权限跃迁
auditd默认不审计systemd服务管理行为。需显式规则覆盖服务启停、配置变更、二进制执行三类高危面:
- 在
/etc/audit/rules.d/service.rules中添加: -
-w /usr/lib/systemd/system/ -p wa -k svc_config(监控服务单元文件修改) -
-a always,exit -F arch=b64 -S execve -F uid!=0 -F auid>=1000 -k svc_exec(记录非root用户执行服务命令) -
-a always,exit -F arch=b64 -S execve -F path=/bin/systemctl -k svc_ctl(捕获systemctl调用) - 重启生效:
sudo augenrules --load && sudo systemctl restart auditd - 验证是否生效:
sudo ausearch -k svc_ctl -m EXECVE | aureport -f -i
统一关键动作:锁定服务账户权限边界
审计日志再全,若服务账户本身拥有过高权限,攻击者仍可绕过审计直接操作。必须同步收紧:
-
禁用服务账户交互登录:Windows中用
secpol.msc → 本地策略 → 用户权限分配 → 拒绝本地登录,加入服务SID;Linux中将服务用户shell设为/usr/sbin/nologin -
剥离不必要的特权:Windows服务避免使用LocalSystem,改用最小权限的专用组托管账户;Linux服务用
systemd的RestrictSUIDSGID=、NoNewPrivileges=、CapabilityBoundingSet=等指令限制能力 -
隔离服务配置目录:Windows中对
C:\Windows\System32\drivers\etc、HKLM\SYSTEM\CurrentControlSet\Services设置严格SACL;Linux中chown root:root /etc/systemd/system && chmod 750 /etc/systemd/system
实战追踪:从日志快速定位驻留痕迹
审计不是堆日志,而是建立“行为链”关联能力。遇到可疑驻留,按此顺序查:
-
查异常服务注册:Windows用
Get-Service | Where-Object {$_.Status -eq 'Running' -and $_.Name -notmatch '^(winmgmt|eventlog|lsass)$'};Linux用systemctl list-units --type=service --state=running | grep -E "(custom|unknown|\.service)" -
查服务启动源:Windows查事件ID 4688(进程创建)+父进程名含
services.exe;Linux查ausearch -m EXECVE -i | grep -E "(systemd|init)" -
查持久化配置变更:Windows查事件ID 4738(用户更改)+目标账户含
$或svc_前缀;Linux查ausearch -k svc_config -m SYSCALL及对应文件内容快照(需提前部署inotifywait或tripwire)

















