4. 用户权限分配与特权管理

在Windows主机安全中,账户和组解决的是“你是谁”,而用户权限分配解决的是“你能做什么”。即使一个账户只是普通用户,只要被授予了“调试程序”“备份文件和目录”“取得文件或其他对象的所有权”等特权,它依然可能读取敏感数据、替换系统文件或绕过访问控制。因此,权限收敛的核心不是简单地把用户加入某个组,而是同时管理三件事:用户权限分配、受保护用户组和特权账户分级。

一、用户权限分配:特权不是组的附属品

Windows的“用户权限分配”位于本地安全策略的本地策略 → 用户权限分配,或域环境中的计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 用户权限分配。它控制的是登录方式、系统级操作和对象访问特权,与NTFS权限、共享权限属于不同层面。常见的高风险权限包括:

  • SeDebugPrivilege(调试程序):可附加到其他进程,常被用于读取LSASS内存或注入代码。
  • SeBackupPrivilege(备份文件和目录):可绕过文件ACL读取任意文件,包括注册表配置单元。
  • SeRestorePrivilege(还原文件和目录):可绕过ACL写入文件,可能替换系统可执行文件。
  • SeTakeOwnershipPrivilege(取得文件或其他对象的所有权):可夺取任意对象所有权,再修改其权限。
  • SeImpersonatePrivilege(模拟客户端之后):服务账户常具备,被滥用时可提升至SYSTEM。
  • SeLoadDriverPrivilege(加载和卸载设备驱动程序):可加载恶意驱动进入内核。

默认情况下,Administrators组拥有上述大部分权限,Backup Operators组拥有备份和还原权限,普通用户仅拥有“绕过遍历检查”“增加进程工作集”等低风险权限。加固时应遵循最小特权原则:只保留角色必需的登录权限和系统特权,删除所有非必要授权。例如,普通办公终端上,不应把“调试程序”授予任何非管理员账户;应用服务器上,若服务账户不需要备份,应移除其备份权限。

检查权限分配时,不要只看“谁在管理员组”。一个普通用户若被单独授予“备份文件和目录”,其实际风险可能高于一个受约束的管理员。建议使用secedit /export /cfg policy.inf导出当前策略,再逐项比对基线。

二、受保护用户组:把高权限账户关进“隔离区”

受保护用户组(Protected Users)是Windows Server 2012 R2及Windows 8.1之后引入的安全组,用于保护高价值账户。将账户加入Protected Users组后,系统会强制实施以下限制:

  • 禁用NTLM、CredSSP和Digest认证,只允许Kerberos。
  • 不缓存凭据,避免凭据从内存中被提取。
  • Kerberos的TGT有效期缩短为4小时,且不自动续期。
  • 禁止使用DES或RC4加密,强制使用AES。
  • 不允许委派,降低横向移动风险。

受保护用户组适合保护域管理员、企业管理员、架构管理员等最高权限账户。但要注意:它并不适合所有账户。若某账户需要访问只支持NTLM的旧系统,加入后会导致认证失败;若服务账户被加入,可能因无法缓存凭据而中断服务。因此,加入前应确认账户的认证依赖,加入后通过事件日志4625、4771观察是否出现认证失败。

三、特权账户分级:从“管理员”到“分层管理”

很多入侵事件的共同路径是:普通用户 → 工作站管理员 → 服务器管理员 → 域管理员。特权账户分级的目标是切断这条链。微软推荐的分层管理模型将资产和账户划分为三层:

层级保护对象典型账户登录限制
第0层域控制器、AD DS、证书服务域管理员、企业管理员只能登录第0层主机
第1层成员服务器、业务应用服务器管理员只能登录第1层主机
第2层普通工作站、终端工作站管理员、普通用户只能登录第2层主机

分层的落地方式包括:为每层建立独立的管理员账户,禁止跨层登录;使用“受保护用户组”保护第0层账户;通过组策略限制“允许本地登录”和“允许通过远程桌面服务登录”权限;对第0层账户启用智能卡或Windows Hello for Business,避免密码凭据暴露。

四、权限收敛的检查与验证

完成配置后,需要验证权限是否真正收敛。以下命令可用于快速检查本地管理员组成员和特权分配:

net localgroup Administrators
whoami /priv
whoami /groups
secedit /export /cfg C:\temp\secpol.inf
findstr /i "SeDebugPrivilege SeBackupPrivilege SeImpersonatePrivilege" C:\temp\secpol.inf

判断依据是:whoami /priv中不应出现与当前角色无关的高风险特权;net localgroup Administrators中不应存在普通业务账户;导出的策略文件中,高风险权限的赋值列表应只包含明确批准的管理账户。若发现异常,应记录账户、权限名称、当前赋值和批准基线,再通过组策略或本地安全策略修正。

用户权限分配与特权账户分级收敛模型 用户权限分配 SeDebugPrivilege 调试程序 SeBackupPrivilege 备份文件 SeRestorePrivilege 还原文件 SeTakeOwnership 取得所有权 SeImpersonate 模拟客户端 SeLoadDriver 加载驱动 受保护用户组 仅允许 Kerberos 认证 不缓存凭据 TGT 有效期 4 小时 禁用 NTLM / CredSSP 禁止委派 强制 AES 加密 特权账户分级 第0层:域控 / 域管理员 第1层:成员服务器管理员 第2层:工作站 / 普通用户 权限收敛结果与验证 whoami /priv 无多余高风险特权 net localgroup Administrators 无业务账户 secedit 导出策略中权限赋值仅含批准账户 事件 4625 / 4771 无异常认证失败 切断提权链:普通用户 → 工作站管理员 → 服务器管理员 → 域管理员 分层账户 + 受保护用户组 + 最小权限分配 = 阻断横向移动与凭据窃取

最后需要强调,权限分配不是一次性动作。人员岗位变化、应用上线、服务账户调整都会改变权限需求。建议每季度复核一次高风险权限的赋值列表,并结合whoami /priv、secedit导出结果和事件日志进行交叉验证。只有把“权限分配—受保护组—账户分级”三者联动,才能真正实现Windows主机的权限收敛与提权防护。