别让默认设置坑了你Windows本地安全策略的10个必改项2024最新版很多系统管理员和IT运维朋友可能都有过这样的经历服务器部署完毕常规补丁打上防火墙规则配置好就觉得万事大吉了。然而真正的安全威胁往往不是来自外部猛烈的攻击而是源于系统内部那些被长期忽视的“默认设置”。Windows的本地安全策略Local Security Policy就是这样一个典型的“安全盲区”。它静静地躺在secpol.msc里里面的上百项配置大多保持着出厂状态而这些默认值在十几年前的设计背景下或许是平衡了易用性但在今天复杂的网络攻防环境下却可能成为攻击者长驱直入的后门。我见过太多因为一个默认账户策略被攻破导致内网沦陷的案例也处理过因匿名访问设置不当敏感文件被轻易索引泄露的安全事件。对于追求稳健运维的团队来说深入理解并主动配置本地安全策略不是“加分项”而是“必答题”。它不依赖于昂贵的第三方安全软件却能从根本上加固系统的安全基线。本文将抛开教科书式的罗列聚焦于10个在实际攻防对抗中最具价值、最常被错误配置的策略项。我会结合真实的渗透测试和防御经验告诉你为什么必须改以及具体怎么改让你手中的Windows系统真正变得“固若金汤”。1. 账户策略构筑身份验证的第一道防线账户策略是攻击者尝试突破系统时最先面对的关卡。默认设置为了方便用户往往过于宽松这直接降低了暴力破解和凭证窃取的门槛。加固账户策略意味着从源头上增加攻击者的成本和难度。1.1 密码策略告别弱密码的温床Windows的默认密码策略在非域环境下几乎形同虚设。许多管理员甚至不知道在独立工作站或服务器上“密码必须符合复杂性要求”这一项默认是禁用的。这意味着用户可以设置像“123456”或“password”这样的密码这无疑是灾难性的。必须修改的项及推荐值策略项默认值非域环境推荐值修改理由与风险说明密码必须符合复杂性要求已禁用已启用强制密码包含大小写字母、数字和符号中的三类极大增加暴力破解难度。这是最基本的要求。密码长度最小值0个字符至少12个字符密码长度是抵御暴力破解最关键的因素之一。每增加一位破解时间呈指数级增长。12位是现代安全的基本线。密码最短使用期限0天1天防止用户为应付强制更改密码的要求而在短时间内频繁将密码改回原密码。密码最长使用期限42天90天默认42天过短导致用户频繁更换密码反而可能促使用户采用有规律的弱密码。延长至90天在安全性和用户体验间取得更好平衡。但核心系统可考虑60天。强制密码历史0个记住的密码记住24个密码结合“密码最短使用期限”有效防止用户在新旧密码间循环使用。注意修改密码策略后仅对新创建的密码或用户下次更改密码时生效。不会强制现有用户立即更改其当前密码。要全面生效可能需要通过脚本或组策略通知用户并在一定周期内完成更改。仅仅启用复杂性要求还不够。我曾在一个内部测试中使用常见的密码字典对一台仅启用复杂性要求的服务器进行破解仍然在可接受的时间内成功破解了几个密码。原因在于用户倾向于使用符合复杂性的“弱密码”如“Company2024”。因此强烈建议在可能的情况下部署并启用“密码筛选器”以禁止使用常见词汇、公司名、用户名等易猜解的密码。# 查看当前本地安全策略中的密码策略PowerShell方法 Get-LocalSecurityPolicy -Area SECURITYPOLICY | Select-Object *Password* # 更直观的查看方式使用secedit导出并筛选 secedit /export /cfg C:\temp\secpol.cfg /areas SECURITYPOLICY type C:\temp\secpol.cfg | findstr /i password1.2 账户锁定策略精准防御暴力破解账户锁定策略是抵御在线暴力破解攻击的核心武器。但它的默认设置——账户锁定阈值为0永不锁定——等于向攻击者敞开了大门。攻击者可以无限次尝试密码直到破解为止。必须修改的项及推荐值策略项默认值推荐值修改理由与风险说明账户锁定阈值0次无效登录5次无效登录这是最关键的一项。设置一个合理的阈值如5-10次在数次失败尝试后锁定账户能立即阻断自动化暴力破解工具。账户锁定时间不适用因阈值为015分钟锁定时间不宜过长避免影响误操作的合法用户也不宜过短否则无法有效阻止攻击。15-30分钟是一个合理的范围能有效拖延攻击者。重置账户锁定计数器不适用15分钟后应与“账户锁定时间”一致或略短。这意味着锁定计数器在15分钟后归零用户可重新尝试登录。这里有一个关键陷阱许多人设置了“账户锁定阈值”却忽略了“账户锁定时间”导致账户被永久锁定需要管理员手动解锁这在生产环境中可能引发服务中断。另一个常见错误是将阈值设置得过低如3次在用户输错密码、键盘大小写问题等常见情况下容易造成不必要的账户锁定增加运维负担。提示对于特权账户如Administrator、域管理员需要特别小心。建议为这些账户设置独立的、更严格的锁定策略例如通过细粒度密码策略或者确保有另一个备用管理账户可以解锁避免将自己锁死在系统之外。2. 用户权限分配收紧系统的“特权钥匙”用户权限分配决定了“谁能在系统上做什么”。默认情况下许多权限的分配过于宽泛特别是某些内置组如Users、Authenticated Users被授予了本不该有的高级权限这为权限提升攻击创造了条件。2.1 “从网络访问此计算机”与“拒绝从网络访问这台计算机”这是一组相辅相成的策略。默认情况下“从网络访问此计算机”通常包含了许多组如Administrators、Users、Everyone等。这意味着任何能通过网络验证的用户都可能拥有不必要的访问权限。操作建议首先审查“从网络访问此计算机”列表。移除不必要的组如Everyone和Users。原则上只保留确实需要通过网络执行管理或特定应用访问的账户和组如特定的服务账户、管理员组。更积极的做法是使用“拒绝从网络访问这台计算机”。你可以将一些高价值、但绝不应该从网络登录的账户加入此列表。一个经典的加固项是将本地Administrator账户加入“拒绝”列表。这能有效防止攻击者通过网络暴力破解或传递哈希攻击来获取最高权限。# 通过命令行查看当前“从网络访问此计算机”的权限分配需要管理员权限 # 这需要解析安全策略数据库一个更直接的方法是使用GUI或以下PowerShell命令尝试获取信息 # 注意直接查询较复杂通常通过GUIsecpol.msc管理更直观。实际案例在一次红队评估中我们通过一个低权限的Web应用漏洞获得了服务器上的一个Shell。随后尝试使用本地Administrator账户进行横向移动但因为目标服务器明确将Administrator列入了“拒绝从网络访问”我们的传递哈希攻击立即失败不得不寻找其他更复杂的提权路径极大地增加了攻击成本和被发现的风险。2.2 “作为服务登录”与“调试程序”这两个权限非常危险却容易被忽视。作为服务登录拥有此权限的用户可以将自己配置为系统服务运行从而获得SYSTEM级别的权限。默认只有部分服务账户和TrustedInstaller拥有。务必检查此列表确保没有加入普通用户或非受信任的账户。调试程序此权限允许用户附加调试器到任何进程可以用于读取和修改进程内存是权限提升的利器。默认只分配给Administrators。绝对确保没有其他用户或组被意外添加进来。注意修改用户权限分配需要极其谨慎。错误的配置可能导致关键服务无法启动或用户无法执行必要操作。建议在测试环境中验证后再应用到生产环境。修改后用户需要注销并重新登录才能使新的权限分配生效。3. 安全选项堵住那些意想不到的“缝隙”安全选项包含大量杂项但至关重要的设置它们通常用于控制系统的微观安全行为。其中几项的默认设置在特定场景下会带来显著风险。3.1 交互式登录相关设置交互式登录不显示最后的用户名默认已禁用。推荐已启用。理由登录屏幕显示上一个成功登录的用户名这相当于向任何能物理接触或看到屏幕的人泄露了有效账户信息是“信息泄露”的典型。启用此项后登录界面用户名栏将为空白。交互式登录无需按 CtrlAltDel默认在客户端系统上可能为“已启用”。推荐已禁用即要求按CtrlAltDel。理由要求按CtrlAltDel可以防止恶意软件伪造登录界面俗称“登录框伪造攻击”或“Sethc后门”因为这是一个由系统内核处理的、用户模式程序无法拦截的安全注意序列SAS。Microsoft网络客户端将未加密的密码发送到第三方SMB服务器默认已禁用这是好的。检查务必确认其为已禁用。理由如果启用客户端会以明文形式发送密码到不支持加密的SMB服务器如一些老旧的NAS设备导致密码在网络上被嗅探。在现代网络中应完全禁用此行为。3.2 网络访问与匿名枚举这是本地安全策略中风险最高的区域之一也是内网横向移动的“高速公路”。网络访问可匿名访问的共享默认可能包含COMCFG, DFS$等。推荐清空此列表设置为空值。理由任何列在此处的共享无需任何身份验证即可访问。攻击者可以使用net view \\computername或枚举工具轻易发现并访问这些共享可能导致敏感信息泄露。网络访问可远程访问的注册表路径和子路径默认包含多个路径如System\CurrentControlSet\Control\ProductOptions等。推荐除非有明确的应用程序需求否则应清空或严格限制。理由允许远程访问注册表使得攻击者可以在不登录的情况下查询系统配置、软件信息甚至修改某些设置。这是信息收集阶段的关键步骤。网络访问限制匿名访问命名管道和共享默认策略存在但具体限制内容可能较宽。操作检查并加固。确保像netlogon,lsarpc,samr等关键管道不被匿名访问。这能有效防御NULL会话攻击阻止攻击者匿名枚举系统用户、共享等信息。一个真实的场景攻击者通过钓鱼邮件进入一台用户电脑。他首先运行net view /domain查看域然后用net view \\域控服务器名尝试列出共享。如果“可匿名访问的共享”未清空他可能会直接看到一些共享文件夹。接着他可能尝试使用net use \\目标IP\IPC$ /user:建立空连接如果“限制匿名访问”设置不当他就能通过net user /domain等命令枚举出域内所有用户名为后续的密码喷洒攻击准备好“靶单”。4. 审核策略打开安全的“探照灯”默认的Windows审核策略很多项目是“无审核”。这意味着系统正在发生的大量安全相关事件如谁登录了、访问了什么文件、修改了哪些权限都没有被记录。没有日志就没有追溯安全事件就变成了“无头案”。启用审核策略就是为系统安装全天候的监控探头。4.1 必须启用的核心审核项不应只审核“成功”“失败”的审核往往更具安全价值因为它直接指示了攻击尝试或异常行为。审核策略项成功失败核心价值审核账户登录事件✅✅记录所有账户的登录/注销行为无论登录类型交互式、网络、批处理等。是追踪账户活动的基石。审核登录事件✅✅记录所有登录/注销尝试侧重于记录在何处哪台计算机发生的。与上一条结合可以还原完整的登录链条。审核特权使用⚠️选择性✅强烈建议启用“失败”。任何滥用或尝试滥用特权如调试程序、充当操作系统一部分的行为都会被记录。成功审核会产生大量日志需谨慎。审核策略更改✅✅记录对审核策略本身或其他安全策略的修改。防止攻击者“擦除脚印”。审核账户管理✅✅记录用户/组的创建、更改、删除、启用/禁用以及密码更改。对于发现攻击者创建后门账户或篡改账户至关重要。审核对象访问⚠️需配合SACL⚠️需配合SACL此项本身开启后还需要在具体的文件、文件夹或注册表项上设置系统访问控制列表SACL才能记录访问事件。用于保护极其敏感的数据。审核系统事件✅✅记录系统重启、关机以及影响系统安全或安全日志本身的事件如日志被清除。4.2 日志管理的实战技巧开启审核会产生海量日志。如果不加管理日志文件会迅速膨胀并且关键事件会被淹没在噪音中。调整日志大小默认的Windows安全日志大小20MB对于生产服务器来说太小了。建议根据系统负载和保留策略将其增加到至少1024MB并设置为“按需覆盖事件”。操作路径事件查看器 - Windows日志 - 安全 - 右键“属性”。使用事件ID进行筛选和警报安全运营的核心是关注特定的事件ID。例如4625账户登录失败。大量此事件可能表示暴力破解。4720创建用户账户。4738用户账户被更改。1102安全日志被清除。 你可以使用Windows事件转发WEF或第三方SIEM工具集中收集这些日志并针对关键事件ID设置警报。保护日志本身确保Everyone组没有“清除安全日志”的权限。可以通过本地安全策略的“用户权限分配”下的“管理审核和安全日志”来严格控制。# PowerShell命令快速查询最近10次失败的登录尝试事件ID 4625 Get-WinEvent -FilterHashtable {LogNameSecurity; ID4625} -MaxEvents 10 | Format-List TimeCreated, Message # 修改安全日志最大大小示例设置为1GB wevtutil sl Security /ms:1073741824加固本地安全策略不是一次性的任务而应成为系统部署和日常运维检查清单中的标准环节。本文列举的10个必改项涵盖了账户、权限、网络访问和审计这几个最核心也最易出问题的维度。每个修改背后都对应着一种或多种真实的攻击手法。记住安全是一个持续的过程默认配置代表的是“广泛兼容性”而绝非“最佳安全性”。主动出击收紧这些策略你就是在攻击者的道路上设置了重重路障为自己赢得了宝贵的检测和响应时间。在我的运维生涯里正是这些看似微小的策略调整多次在关键时刻阻止了安全事件的扩大。花上半小时配置一次换来的可能是长久的安全与安心。