☰
Windows基础安全加固手册:从账号口令到日志审计
2026/10/22 5:32:04 网站建设 项目流程

做Windows系统基础安全,如果只盯着杀毒软件和补丁,大概率会在真实环境里翻车。我给不少企业做过这一类“不值钱却救命”的加固项目,核心永远绕不开几件事:账号口令、端口服务、共享权限、日志审计、补丁管理。今天把我在“网安--window系统基础安全”这个方向上沉淀的东西整理出来,不讲虚的,直接说怎么查、怎么改、踩过哪些坑。

这套内容适合谁?刚入门的安全工程师、需要兼任安全的运维同学,以及想把自己电脑或公司Windows设备底子打牢的人。你不需要会写复杂代码,只要愿意打开PowerShell、按住Win+R,就能跟着往下走。

1. 为什么Windows基础安全决定后续防线好不好打

1.1 攻击者的第一步通常落在哪里

我做攻防演练和应急响应时,观察到一个非常现实的现象:大多数成功入侵都不是靠某个0day,而是靠Windows基础配置上的几个洞。

攻击者进入内网后,第一步是做信息收集。他们会先探测哪些机器开了3389、445、135这些常见端口,然后尝试弱口令、爆破管理员账号、翻共享文件夹。为什么这些能成功?因为很多Windows服务器的本地管理员密码还是Admin@123,Guest账户没禁用,共享目录直接开了Everyone写权限,审计日志也没打开。攻击者登录进来做了什么都留不下痕迹。

所以基础安全的核心不是“装没装杀软”,而是先解决“最容易被打进去的门”和“打进来之后能不能被看见”这两件事。杀毒软件解决的是已知文件的识别,账号口令、端口暴露面、日志留存解决的是整个系统的暴露边界和事后追溯能力。

1.2 基础安全不是单点配置,而是闭环

有人以为把密码改复杂就完事了,其实不是。Windows基础安全必须形成闭环。

我习惯把整个思路分成五段:资产梳理、攻击面收敛、身份口令加固、行为日志可见、持续核查。前一个环节没做到位,后面做得再多也会被绕过。比如你确实把防火墙规则收紧得很漂亮,但忘记关掉远程桌面在公网直接暴露,等于前门锁好了,侧门还开着。又比如你开了详细审计策略,但安全日志只有20MB,一天就被覆盖,真出了事什么都查不到。

生活化类比:Windows系统像一栋办公楼。账号是大门门禁,共享文件是公共储物柜,监听端口是敞开的功能区域,日志是监控探头。基础安全就是把门禁权限梳理清楚、把废弃通道封掉、把监控录像做全、定期检查访客名单。你不需要一上来就上多贵的安保系统,但必须先把这些底层的规则立起来。

2. 账号与口令加固:先把最容易攻破的口子堵死

2.1 从账号梳理开始

这一节是整个Windows基础安全里性价比最高的部分,因为改起来快、效果直接。但前提是你得知道自己机器上到底有哪些账号。

打开PowerShell,先拉出所有本地用户:

Get-LocalUser | Format-Table Name, Enabled, PasswordRequired, PasswordLastSet -AutoSize

再检查管理员组成员:

Get-LocalGroupMember -Group "Administrators" | Format-Table ObjectClass, Name

我看到过太多次:企业服务器上一堆几年前创建的服务账号,没人记得用途;某个普通业务账户莫名其妙被加进了Administrators组;Guest账户还开着。这些都属于“不该存在的高权限入口”。

遇到这种情况,我的建议是分四步处理:

  1. 系统内置的Administrator账户,能禁用就禁用。日常管理用新建的管理员账号,这样拿到系统的人不会轻易猜中默认用户名。
  2. 业务上确实要用Administrator,至少要重命名,别用默认名字,然后设置高强度口令。
  3. Guest账户直接禁用。Windows中Guest一般默认关闭,但有些环境释放镜像后会被打开,必须检查。
  4. 所有管理员组成员都要有明确归属。服务账号不要加入管理员组,宁可给到具体所需权限,也别直接给全域管理员权限。

账号梳理做完之后,要形成一份账号台账,记录用户名、用途、创建时间、负责人、最后登录时间。不然两个月后你还得重新排查一遍。

2.2 密码策略和账户锁定策略

密码策略看起来基础,却是最容易配置出错的地方。打开secpol.msc,在“账户策略-密码策略”下方可以看到:

  • 密码长度最小值
  • 密码复杂性要求
  • 密码最长使用期限
  • 密码最短使用期限
  • 强制密码历史

我个人至少建议:密码长度14位以上、启用复杂性、最长使用期限不超过90天、强制密码历史5个以上。不要觉得复杂,现代系统完全支持长口令。真实环境里,短口令配合爆破工具,通常撑不过几分钟。

账户锁定策略同样关键。在“账户策略-账户锁定策略”里设置:

  • 账户锁定阈值:建议5次到10次
  • 账户锁定时间:建议15分钟
  • 重置账户锁定计数器:建议15分钟

这个策略专门防RDP暴力破解。如果一个人连续尝试几次都失败,直接锁定账号,让爆破工具空转。

企业中如果机器多,不建议一台台手动改,尽量用组策略批量下发。域环境里直接在GPO上设置,非域环境可以用脚本或安全基线工具统一配置。手动改机器,你最需要解决的问题不是“不知道在哪里”,而是改完之后没人记得复核。

2.3 SMB共享、空会话和默认共享

共享目录是Windows内网里的重灾区。很多业务部门喜欢共享一个文件夹给全公司用,权限设置却是Everyone完全控制,密码不设,审计不查。

先看当前系统开了哪些共享:

Get-SmbShare -IncludeHidden | Format-Table Name, Description, Path -AutoSize

不需要的共享直接删掉。如果共享确实必要,权限原则只有一个:最小化。删掉Everyone,只添加实际需要的用户或组,并且只给“读取”不给“更改”。

另外两个隐藏的高危项是空会话枚举和默认共享。

所谓空会话枚举,就是攻击者用匿名身份连接IPC$,从而枚举出系统用户、组、共享信息。在本地安全策略中,搜索“网络访问:不允许SAM账户和共享的匿名枚举”,设置成“已启用”。这条对实际正常访问影响很小,但能明显减少信息泄露。

默认共享即C$、ADMIN$这些由系统自动创建的共享。日常运维偶尔会用到,但你确认用不到的话,可以在注册表层面关闭:

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" -Name AutoShareServer -Value 0 -PropertyType DWord -Force New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" -Name AutoShareWks -Value 0 -PropertyType DWord -Force

重启后生效。IPC$无法完全关闭,但通过限制匿名枚举可以很大程度上降低风险。

最后必提SMB1。这个老协议承载过多个影响巨大的蠕虫漏洞,如果业务没有特殊依赖,直接通过“启用或关闭Windows功能”取消SMB 1.0/CIFS支持,或者用DISM命令行:

dism /online /disable-feature /featurename:SMB1Protocol /norestart

做完这步,很多针对老共享协议的攻击面会被一次性封住。

3. 系统服务、端口和防火墙:把暴露面收小

3.1 先搞清楚机器上到底开了什么

攻击者进入内网后,第一步通常是端口扫描,看目标上有哪些服务在监听。你不必等攻击者来扫,自己先扫一遍就知道暴露面在哪。

PowerShell查监听端口非常方便:

Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess | Format-Table -AutoSize

看到PID后,再查对应进程:

Get-Process -Id <PID> | Select-Object ProcessName, Path

这条组合命令能快速定位到底是哪个进程在监听端口。常见的高危端口包括135、137、138、139、445、3389等。如果一台服务器上出现了不认识的端口或进程,先查是谁开的,为什么开,谁允许的。

还需要检查自启动服务:

Get-Service | Where-Object { $_.Status -eq 'Running' -and $_.StartType -eq 'Automatic' } | Select-Object Name, DisplayName, StartType

重点关注这些常见“雷点”:

  • Remote Registry:远程注册表服务。默认虽然不一定是自动,但一旦开启,攻击者可以在远程修改注册表,风险极高。
  • Print Spooler:打印服务,除非这台机器确实是打印服务器,否则建议禁用。
  • Telnet Client / Telnet Server:老古董协议,传输不加密,现在基本没有启用理由。
  • TFTP Client:在应急排查场景可能用到,但日常如果不是必要,最好关掉。

禁用服务时注意,某些服务有依赖关系。例如禁用LanmanServer会引发共享和SMB失效。所以改之前先用以下命令看清楚启动类型和依赖:

Get-Service LanmanServer sc.exe qc LanmanServer

3.2 Windows防火墙规则怎么写才不误伤

防火墙不是越严越好,而是在“可用”和“安全”之间找到平衡。Windows自带防火墙默认会阻断入站连接,问题在于有人会为了省事整机关闭防火墙,这就非常不建议。遇到远程访问不通,应该在防火墙规则里找原因,而不是一刀切关掉。

先看当前防火墙状态:

Get-NetFirewallProfile | Select-Object Name, Enabled

三个配置都要是Enabled。如果某个配置是Disabled,停止所有入站访问,后续排查会非常痛苦。

开放端口时,尽量指定作用域和远端IP。例如需要给一台办公网里的Windows机器开远程桌面端口,就不要写成允许所有人:

New-NetFirewallRule -DisplayName "Allow RDP from OAM subnet" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 3389 -RemoteAddress 192.168.10.0/24

这个规则把来源限制到了某办公网段。如果不知道谁能访问,至少不要直接面向外网。高危端口(445、135、139等)即便不得不开放,也必须限制来源,并且要走单独白名单。

还要检查已存在的放行规则:

Get-NetFirewallRule -Direction Inbound -Action Allow | Where-Object { $_.Enabled -eq $true } | Select-Object DisplayName, Profile, Enabled

一句话总结:宁可漏放一条,也不要为了省事把防火墙关掉。

3.3 远程管理通道怎么收口

Windows管理员最常用的是远程桌面,也就是RDP,默认端口3389。这个通道如果直接暴露在公网,几乎等于把控制台送给全世界的扫描器。

我的经验是:

  1. 绝不让3389直接暴露公网。所有远程操作通过内部的远程接入网关和堡垒机转跳,用户先登录堡垒机,再通过堡垒机访问后端Windows主机。
  2. 源头限制。防火墙规则只放行堡垒机或运维网段的IP。
  3. 启用网络级别身份验证(NLA)。这个选项在“系统属性-远程”里可以勾选,开启后,远程连接必须先在身份验证阶段通过,否则不会加载远程桌面会话,能挡住很多早期利用攻击。
  4. 远程桌面用户权限要收敛。不是所有用户都能远程登录,默认只有Administrators组可以。不要把普通用户批量加入“Remote Desktop Users”组。

远程管理通道本身不是问题,问题在于“谁都能从任何地方访问”和“没有登录限制”。把访问来源、登录身份、会话认证这三层锁住,这个通道就会安全很多。

4. 日志审计、基线核查和补丁管理

4.1 审计策略开启的正确姿势

攻击者进入系统后会想方设法清理日志。如果你一开始就没开日志,他们连清理的功夫都可以省了。所以审计策略必须前置。

打开secpol.msc,在“本地策略-审核策略”中,我建议至少把以下几项设为“成功+失败”:

  • 审核登录事件
  • 审核账户登录事件
  • 审核账户管理
  • 审核策略更改
  • 审核进程创建
  • 审核特权使用

也可以使用高级审核策略,覆盖更细粒度。命令行临时开启某些类别:

auditpol /set /category:"Logon/Logoff" /success:enable /failure:enable auditpol /set /category:"Account Management" /success:enable /failure:enable auditpol /set /subcategory:"Process Creation" /success:enable /failure:enable

日志有了,还得保证它别因为空间不足被覆盖太快。Windows事件日志默认上限通常不高。把安全日志至少调到256MB以上:

wevtutil sl Security /ms:268435456

如果机器访问量大,可以再调高。日志目录如果满,系统默认会丢弃新日志,这等于审计又失效了。所以要么调大空间,要么设置为“按时间覆盖旧的”,但覆盖策略必须结合日志集中归档来设计。

4.2 日志的保护与集中收集

单机日志最大的问题是“攻击者进去后可以直接清掉安全日志”。所以基础安全做到一定阶段,一定要考虑日志集中收集。

中小环境可以用Windows自带的事件转发机制,把多台服务器的安全日志转发到一台独立的日志收集服务器。日志收集服务器再单独做加固,权限分离,只有负责日志审计的账号能读。

集中日志的好处是:即使本机日志被清,远端仍有副本。处理应急事件时,可以从日志平台回溯攻击者登录时间、执行的进程、访问过的共享目录。

还有一点容易被忽略:日志文件本身的访问权限。检查事件日志目录权限,确保不是Everyone能读。默认情况下普通用户无法读取安全日志,但如果你手动改过权限或装了某些组件,一定要复查。

4.3 基线核查清单

我每次做Windows基础安全,都会固化成一张核查表。下面是可以直接拿去用的版本:

检查项期望值核查方式
本地用户Guest禁用;内置Administrator禁用或改名Get-LocalUser
管理员组成员仅必要的人员/账号Get-LocalGroupMember
密码策略长度≥14,复杂度启用,90天内过期secpol.msc / 组策略
账户锁定策略阈值≤10次secpol.msc / 组策略
审核策略登录/进程/账户管理均开成功+失败auditpol /get /category:*
防火墙状态所有配置文件均为启用Get-NetFirewallProfile
高危端口无对外暴露的135/139/445/3389Get-NetTCPConnection
SMB共享无Everyone权限;无多余隐藏共享Get-SmbShare
日志容量安全日志≥256MBwevtutil gl Security
补丁情况最近3-6个月安全补丁已安装Get-HotFix

这张表可以拿去做日常巡检脚本,每次出一份结果,不达标的项直接标红。

5. 排查实录与实操心得

5.1 我踩过的几个典型坑

第一类:改完密码策略,以为“所有密码都会强制改”。实际Windows的密码策略只会在用户下次修改密码时校验新密码是否符合策略,已经存在的弱密码不会因为策略变更而自动失效。所以在企业里推行强密码策略,要么通过登录脚本触发强制重设,要么设置“用户下次登录时须更改密码”。

第二类:开着远程桌面调试防火墙,把自己锁在外面。某次我在服务器上新增RDP防火墙规则时,只把来源IP写成了当前办公网的一个临时出口IP,结果网络切换后瞬间失联,最后只能靠跳板机从另一条线路进去。从那之后,我改防火墙规则前会先确认至少有两个可用访问通道。

第三类:禁用某个服务,结果业务直接挂掉。比如禁用Print Spooler之前,没注意到公司有一个扫描软件依赖打印服务。现在我在生产环境禁用服务之前,都会先看服务的依存关系,并且先手动停止服务跑一段时间看业务是否受影响,再决定要不要把启动类型改为Disabled。

5.2 常见问题速查表

症状可能原因处理方法
远程桌面连不上防火墙未放行、NLA未开、用户无权限检查3389入站规则、勾选NLA、确认用户属于远程桌面组
登录失败多次后没锁定未配置账户锁定阈值secpol.msc中设置锁定阈值和时间
修改密码策略后旧密码仍能用策略只影响新设置的密码强制用户下次登录改密
共享目录突然不可访问SMB服务被禁用或SMB1被关闭确认LanmanServer服务状态,确认业务是否依赖SMB1
安全日志很快被覆盖日志容量过小或保留策略不当wevtutil增大日志容量并集中归档
补丁安装失败磁盘空间不足、Windows Update服务异常清理系统盘,重置Windows Update服务后重试
防火墙规则明明放行还是不通过远端IP作用域设置不对,或默认规则冲突检查规则的RemoteAddress和Action是否匹配

5.3 做基础安全最容易忽略的几件事

最后分享几个我的个人体会。

基础安全做完,不等于永远安全。环境会变,人员会走,账号会越来越多。所以最重要的不是“今天配置都对”,而是“明天还能检查出哪些配置变了”。我做项目时一定会留下一份可执行的安全基线检查脚本,让运维同学按周或按月跑一次,把不达标项自动汇总出来。

另一点是要把“最小权限原则”落到人头。很多企业把所有运维账号都加进本机Administrators组,理由是方便。方便和安全从来是矛盾的,我在实际处理中会把日常巡检权限和紧急管理权限分开,日常只用只读权限巡检,真要动配置再通过独立的通道提权。

还有一点是针对替换旧设备。有些人离职后,账号留在共享服务器的管理员组里,半年后还有登录记录,这种事听起来离谱但很常见。基础安全并不需要高深技术,它考验的是有没有一套持续执行的机制。配置能改完,机制需要长期运转。

我在实际做Windows基础安全时,最深的感受是:这些操作看起来都太基础,但恰恰是基础的部分决定了一个系统在被攻击时的下限。下限越高,后续的安全设备才有机会发挥作用。希望这份实录能让你在加固自己的Windows环境时少走几步弯路。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询