windows系统账户最小特权分配核心是“给得准”:按任务精准授权,区分localsystem、localservice/networkservice及专用服务账户权限边界,严格收敛ntfs权限、剥离高危用户权利,并通过rbac组实现动态权限管理。
windows 系统账户的最小特权分配,核心不是“给得少”,而是“给得准”——只授予完成特定任务所必需的权限,不多一毫,不少一分。尤其在vps、云服务器或域环境中,过度授权的服务账户(如用 administrator 运行 iis 应用池)极易成为横向移动的跳板。
明确区分三类系统账户的默认权限边界
理解账户类型是配置起点:
- LocalSystem:最高权限本地账户,可访问几乎所有本地资源和注册表,但不应直接用于应用服务;
- LocalService / NetworkService:低特权内置账户,SID 受限、无交互登录能力,适合轻量级网络服务(如 Windows Update);
- 专用本地服务账户(如 svc_iis、svc_sql):必须手动创建,禁用交互式登录,仅赋予 SeServiceLogonRight(作为服务登录)和必要文件/注册表/事件日志权限。
NTFS 权限与服务职能严格对齐
文件系统权限不能靠“继承+Everyone”偷懒,要按服务行为逐项收敛:
- IIS 应用池账户 → 仅对网站根目录及子目录设 Read, List, Write(
(OI)(CI)(RX,W)),禁止执行(X)和遍历(S); - SQL Server 数据库服务 → 对
C:\Program Files\Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\Data设 Modify,但对Bin或Log目录仅需 Read & Execute; - 日志归档服务 → 仅对日志目标路径有 Write + Delete,且使用
icacls /inheritance:d阻断上级权限继承,防止越权访问。
剥离高危特权,禁用非必要用户权利
通过 secpol.msc 或组策略(Computer Configuration → Windows Settings → Security Settings → Local Policies → User Rights Assignment)检查并清理:
- 移除服务账户的 Debug programs(SeDebugPrivilege)、Act as part of the operating system(SeTcbPrivilege)、Replace a process level token(SeAssignPrimaryTokenPrivilege);
- 保留且仅保留 Log on as a service;
- 禁用 Allow log on locally 和 Allow log on through Remote Desktop Services,除非明确需要交互调试。
用角色组替代直加权限,支持动态生命周期管理
在域环境或需多服务协同的 VPS 中,推荐采用 RBAC 模式:
- 为每类服务建安全组(如
SG-WebApp-Svc、SG-SQL-Engine),将服务账户加入对应组; - 通过 ADUC 的“委派控制”向导,在指定 OU 下精确授予该组对“用户”“计算机”或“msDS-AllowedToDelegateTo”等属性的读写权限;
- 员工转岗或服务下线时,只需调整组成员关系,无需重配 ACL 或 SDDL,权限自动同步收束。











