如何配置Windows服务SDDL实现仅管理员拥有服务停止权限
Windows服务SDDL配置:仅管理员拥有服务停止/管控权限方案
你当前使用的SDDL配置无法停止服务的核心原因是:所有授权主体的ACE(访问控制项)中均缺失了WP权限位——该位对应Windows服务对象的SERVICE_STOP(停止服务)权限,因此包括管理员在内的所有账号都无法触发服务停止操作。
配置需要满足以下要求:
- 仅本地管理员组拥有服务启动、停止、重启、修改启动类型、修改服务权限的完整管控权
- 本地系统账号(SYSTEM)保留必要的服务控制权限,保证系统关机、服务自运行等系统流程正常
- 普通用户无任何服务控制、修改权限,无法操作服务或篡改服务配置
- 配合进程权限配置,阻断普通用户通过任务管理器结束服务进程的路径
修正后的SDDL配置字符串
D:P(A;;CCDCLCSWRPWPDTLOCRRCWDWO;;;SY)(A;;CCLCSWLOCRRC;;;SU)(A;;CCDCLCSWRPWPDTLOCRRCWDWO;;;BA)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
各访问控制项权限说明
(A;;CCDCLCSWRPWPDTLOCRRCWDWO;;;SY):给本地系统账号(NT AUTHORITY\SYSTEM)分配完整服务控制权限,包含查询配置、修改配置(调整启动类型)、启停服务、暂停继续、修改安全描述符等所有必要权限,保障系统层面的服务管理流程正常运行(A;;CCLCSWLOCRRC;;;SU):给服务控制管理器账号(NT AUTHORITY\SERVICE)分配最小必要权限,仅保留查询配置、枚举依赖、查询状态、读安全描述符等基础权限,移除原配置中不必要的写DACL权限,遵循最小权限原则(A;;CCDCLCSWRPWPDTLOCRRCWDWO;;;BA):给本地管理员组(BUILTIN\Administrators)分配完整服务管控权限,包含停止服务(WP)、启动服务(RP)、修改启动类型(DC)等所有操作权限,满足管理员完全管控的需求- 未给Users组、认证用户、Everyone等普通用户主体分配任何服务控制、修改类权限,普通用户默认无任何操作权限,无法启动、停止、修改服务配置
- 末尾SACL段保留原有的全局失败访问审计配置,所有主体对服务的访问失败操作都会被系统记录,方便安全审计
补充配置(阻止任务管理器结束服务进程)
仅配置服务SDDL无法阻止普通用户通过任务管理器结束服务进程,需要额外做以下配置:
- 服务进程启动后,动态调整进程对象的DACL,移除普通用户组对应的
PROCESS_TERMINATE(结束进程)、PROCESS_VM_OPERATION(内存操作)等高危权限 - 如果有内核代码签名条件,可以将服务注册为受保护进程(PPL),系统层面会阻止非授权进程结束该服务进程
配置生效方式
使用管理员权限打开命令提示符,执行以下命令应用配置(将<你的服务名称>替换为实际服务名):
sc sdset <你的服务名称> "D:P(A;;CCDCLCSWRPWPDTLOCRRCWDWO;;;SY)(A;;CCLCSWLOCRRC;;;SU)(A;;CCDCLCSWRPWPDTLOCRRCWDWO;;;BA)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
配置完成后可切换普通用户账号验证:尝试启停服务、修改服务属性都会触发权限不足报错,管理员账号则可以正常执行所有管控操作。
内容的提问来源于stack exchange,提问作者Fierceee
相关产品推荐
相关产品推荐

