ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Windows服务器安全基线配置指南:账号、服务、审计与网络加固

Windows服务器安全基线配置指南:账号、服务、审计与网络加固 接手一台新服务器第一件事你会做什么我早年的习惯是直接改个管理员密码就上线。直到有一次一台部署了三个月、密码强度极弱、连远程桌面都开着默认端口的机器被爆破成功对方在内网横向跑了整整两周才被发现。那次之后我才彻底明白Windows安全基线不是什么“推荐配置”而是系统管理员给服务器上的最低生存保障。这篇内容不跟你聊太高深的理论而是把一套能直接在Windows Server和Windows 10/11工作站上落地的安全基线配置清单摊开来讲。适合刚入门想建立系统化安全意识的运维新手也适合已经管了一批机器但一直没时间梳理加固项的“老油条”。我会按账号认证、系统服务、审计日志、网络协议这几个面逐项拆把配置原因、具体参数、落地命令和验证方式一次说透。1. 安全基线不是一套“推荐设置”而是一套生存底线安全基线这个概念通俗说就是给操作系统设定一个“最低安全水位线”。就好比买房子装修你可以随意但承重墙、消防通道、入户门锁这些底线不能省。Windows安全基线就是那面承重墙、那扇防火门不管你是拿它跑数据库、Web服务还是内部文件共享以下这些项都得先守住了。行业内比较成熟的安全基线参考来源主要有几个微软官方发布的Windows Security Baseline、CISCenter for Internet SecurityBenchmark、国内的等级保护合规要求。这些标准读起来很枯燥动辄上百页而且很多条目在你的真实业务场景里是“过度设计”。所以系统管理员需要的不是照抄而是从中提炼出适合自己环境的那一版清单。我把长期实践中认为性价比最高的配置项整理成了一张总表你可以直接把它当验收标准加固维度关键配置项期望状态账号认证内置Administrator已重命名且禁用账号认证密码策略最小长度14位、复杂度开启、历史24个账号认证账户锁定策略阈值5次、锁定15分钟账号认证远程桌面NLA强制开启系统服务SMBv1协议已禁用系统服务Windows更新自动安装补丁系统防护Windows Defender实时保护开启并启用云保护系统防护受控文件夹访问启用并配置保护目录审计日志登录事件、账号管理审计成功和失败全部记录审计日志安全日志大小至少1GB且不覆盖网络协议防火墙入站默认策略拒绝网络协议LLMNR、NBT-NS已禁用这张表就是骨架后面的章节都是在给这个骨架添肉。你可以把每一项拆出来单独执行也可以把它们做进一个组策略对象GPO统一下发。我建议是分批做一批账号策略一批服务加固一批网络配置每批做完都要验证业务不受影响千万不要一把梭。2. 账号与认证策略钥匙管理比门锁更重要2.1 内置Administrator账号重命名、禁用、设置陷阱Windows安装完成后默认带一个SID最后是500的Administrator内置账号。这个账号是爆破和提权攻击的第一目标因为它的名字人尽皆知权限又大得离谱。处理它的规范动作是双重的重命名加禁用。重命名是为了增加“被猜出用户名”的阻力禁用则确保即使密码被猜中也无法直接登录。有人会说有些旧服务依赖内置Administrator实测下来这种情况已经非常少如果你真有特殊依赖至少改成复杂名字再配置强密码和登录限制。理论上还不该止步于此我喜欢在组策略里再加一个“诱饵”账号名字就叫Administrator不给任何权限然后开启审计谁碰它谁就有问题。这个是经验之谈对于检测内网扫描和爆破能起到很好的警示作用。2.2 密码与锁定策略数值背后的逻辑密码策略这件事争议最大的是“长度”和“复杂度”哪个优先。现在的主流观点是长度优先一个14位的纯短语比如IloveMyCatAndDog远比一个8位的乱码Pssw0rd更难爆破也更好记。微软官方安全基线也是建议长度14位以上。我在生产环境常用的一版密码策略如下策略项推荐值说明密码最小长度14对抗离线爆破的关键密码复杂性要求启用强制包含三类字符密码最长使用期限90天减少长期泄漏风险密码历史记录24个防止循环使用旧密码最短密码使用期限2天避免用户连夜改回老密码账户锁定策略很多人喜欢设得很严比如3次就锁30分钟。但生产环境用户体验会很难受尤其是有共享账号或服务账号的场景连续输错几次直接把正常用户锁在外面。我用的相对稳妥的值是5次锁定15分钟自动解锁。这里特别提醒一个高频翻车点如果你给域内所有机器统一下发密码策略务必评估现有服务账户。有些服务的密码是写死在配置文件里的密码过期策略一改服务半夜批量停摆。这种事我见过太多次。2.3 远程桌面的安全门槛远程桌面是Windows服务器最大的一扇侧门。默认端口3389每天被全互联网扫描成千上万次。我见过最夸张的机器开启RDP仅半天暴力破解日志就有几千条。RDP加固至少要做三件事开启网络级别认证NLA。NLA在真正建立远程桌面会话前先做一次用户认证能拦掉很多早期类型的攻击工具。在组策略的“计算机配置→管理模板→Windows 组件→远程桌面服务→远程桌面会话主机→安全”里把“要求使用网络级别的身份验证对远程桌面连接用户进行身份验证”设为启用。修改默认端口。注册表项HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp下的PortNumber改掉。改端口不是安全手段只是降低被批量扫描命中的概率属于“防御但不依赖”的一层。限制远程桌面用户组。默认的Administrators组自带远程登录权限建议创建专门的RemoteUsers组只把需要远程管理的人加进去并检查并移除多余的成员。2.4 UAC与本地账户空密码限制UAC用户账户控制常被嫌弃弹窗烦人正因如此不少管理员会直接拉到最低。这个习惯非常危险UAC是Windows防御恶意程序提权的第一道闸门。服务器上的推荐配置是对内置管理员账号以外的用户使用“提示凭据”对内置管理员则“提示同意”。命令行程序一律“提示凭据”。本地账户空密码限制也别忘了。默认情况下如果只允许本机控制台登录空密码账户无法远程登录。但这个默认在部分精简系统或策略调整后可能被破坏。用安全策略里的“账户: 使用空密码的本地账户只允许进行控制台登录”检查一遍确保是已启用状态。3. 系统与服务加固把能省的服务全省掉把能加的防护都加上3.1 更新体系没有打补丁的Windows就是一个筛子安全基线里最没技术含量但最救命的一项就是打补丁。不要问我“公司担心更新导致业务崩溃怎么办”我的回答永远是更新导致业务崩溃是一次意外不更新被勒索病毒打死是必然事件。这两者概率根本不在一个量级。Windows Server建议开启自动安装更新同时配合WSUS或更新管理平台做灰度。工作站则建议启用“自动更新时间”和“重启提醒”。这里有个补充技巧利用组策略“为更新配置自动更新”里的“安装时间段”设定在业务低谷自动重启能大幅减少补丁日对业务侧的干扰。3.2 SMBv1老协议是勒索病毒的后花园SMBv1是WannaCry那代勒索病毒疯狂扩散的核心通道它存在多个严重漏洞且难以修复而绝大多数业务根本不需要它。禁用SMBv1是最低成本的巨大安全收益。Windows Server检查SMBv1状态用这个命令Get-SmbServerConfiguration | Select EnableSMB1Protocol如果输出是True直接禁用Set-SmbServerConfiguration -EnableSMB1Protocol $false -Confirm:$false同时建议把SMBv2/3的会话加密打开Set-SmbServerConfiguration -EncryptData $true -Confirm:$false但要注意如果你网络里有老旧的NAS、复印机或工控软件依赖SMBv1禁用前最好先做兼容性测试。之前帮一家客户加固禁用SMBv1后他们的古董打卡机直接连不上服务器了最后只好单独给那台打卡机所在的VLAN放行。3.3 Windows Defender默认防护的完全体形态很多人装完Windows第一件事是装第三方杀软然后顺手把Defender禁了。如果你是要上企业级EDR端点检测与响应产品这样操作没问题但如果你只是“听说某某杀软好”那我劝你把Defender的全套功能用明白再说它现在的实力并不弱。至少要做四件事实时保护确认开启。在“Windows安全中心→病毒和威胁防护→管理设置”里打开实时保护。打开云提供的保护。这能让Defender拿到最新的云端威胁情报。开启受控文件夹访问。这个功能专门防勒索软件篡改文档把重要的业务数据目录加进保护列表。配置ASR攻击面减少规则。这是被低估的一块它能把很多常见攻击手法如Office进程创建可执行文件、脚本执行混淆内容直接按死在摇篮里。ASR规则可以用组策略或PowerShell启用部分规则ID网络上能查到包括阻止Office通信应用创建子进程、阻止从Windows本地系统邮件应用启动等。建议先开审核模式观察一周确认不会拦截正常业务再切强制模式。3.4 磁盘加密与安全启动物理安全兜底基线里容易被跳过的一项是BitLocker。很多机房没有严格的物理访问管控一台服务器如果被直接拔硬盘走没有BitLocker数据就等于裸奔。启用BitLocker系统盘加密后即使硬盘被拿走没有恢复密钥也读不出东西。密钥管理是重中之重。BitLocker恢复密钥务必保存到Active Directory或专用的密钥管理系统不要放在服务器本地磁盘上否则失去意义。安全启动Secure Boot主要防止启动环节被植入恶意引导程序现在的Windows和现代固件默认支持检查一下固件里是否是开启状态就行。这两项加在一起相当于把“物理接触数据泄露”这条等式给打破了。4. 审计与日志平时最容易被忽视出事之后最重要4.1 审计策略要知道谁在什么时候做了什么很多小环境根本不看安全日志等被勒索病毒加密完、攻击者早就打扫干净现场了才想起来查日志结果发现啥也没记。这种事经历一次就够。要审计的关键类别我按优先级排审计类别设置追踪目标登录事件成功失败谁成功登录、谁在爆破账户登录事件成功失败域账户/本地账户的认证行为账户管理成功失败谁创建了用户、改了组策略更改成功失败谁动了安全策略对象访问失败非法访问受保护文件/注册表进程创建成功结合Sysmon做攻击溯源命令行设置审计策略最快的方式是使用auditpolauditpol /set /subcategory:登录事件 /success:enable /failure:enable auditpol /set /subcategory:账户管理 /success:enable /failure:enable auditpol /set /subcategory:进程创建 /success:enable /failure:enable auditpol /set /subcategory:对象访问 /success:enable /failure:enable如果是域环境建议在组策略里统一配置“高级审核策略”避免每台机器手动做。4.2 日志容量与保留先保证存得下来日志存不下来审计策略等于白设。Windows事件日志默认最大大小只有20MB对一台稍活跃的服务器来说可能半天就写满了然后最早的记录会被覆盖。安全事件的“最早记录”恰恰是最需要追溯的那段。将“应用程序”“系统”“安全”日志大小至少调整到1GB以上并设置“不覆盖事件手动清除日志”。在事件查看器右侧操作面板的“属性”里能直接设置也可以改注册表或组策略统一配置。注意安全日志如果设成“不覆盖”写满后系统会停止日志记录所以要把容量给够并配合集中的日志采集保证不丢关键事件。4.3 PowerShell日志红队最爱的入口你却没记PowerShell几乎被所有攻击者用作内网渗透的“瑞士军刀”可默认情况下Windows对它的记录相当粗糙。至少要开启两个日志功能模块日志和脚本块日志。脚本块日志会把执行过的PowerShell代码包含混淆过的代码内容记入事件日志对溯源来说极有价值。开启方法是组策略“计算机配置→管理模板→Windows 组件→Windows PowerShell”里打开“打开脚本块日志记录”。命令行可用New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging -Force Set-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging -Name EnableScriptBlockLogging -Value 1开启之后建议搭配sysmon一起配合记录PowerShell的网络连接和进程行为排查事件时省力太多。4.4 集中日志收集别把鸡蛋放在同一个篮子里攻击者拿下服务器后的常见操作是清理事件日志把自己进来的痕迹抹掉。如果你只有本机日志那他删除完你就真瞎了。务必将关键服务器的安全日志实时转发到独立的日志中心。Windows自带的方案是使用Windows Event ForwardingWEF配置好订阅后日志会实时推送到一台专门的收集服务器。也可以用第三方的采集器比如NXLog、Winlogbeat推到SIEM平台。最少最少也要通过计划任务定期把安全日志备份到共享存储上。数据不离开服务器就谈不上后续追责和复盘。5. 网络与协议层加固切断横向移动和嗅探的通路5.1 Windows防火墙默认拒绝远比默认允许安全Windows防火墙默认对入站是“阻止”但实际生产中经常见到有人图省事直接关掉防火墙或者装应用时一路点“允许”。这些被放开的规则都是攻击者横向移动时可以拿来用的通道。正确的做法是保持防火墙开启入站策略默认拒绝只放行业务真正需要的端口并且尽量限定源IP。用PowerShell快速查看放行规则Get-NetFirewallRule -Direction Inbound -Enabled True | Select DisplayName, Action特别提醒开启远程桌面时不要放行“所有远程桌面”到“任何IP”的规则。编辑规则限定“远程地址”为管理网段或跳板机IP这一个小动作能把RDP爆破量直接降到原来的零头。5.2 关闭LLMNR和NBT-NS让哈希中继无从下手这是内网安全中性价比极高但极容易被忽略的一步。LLMNR链路本地多播名称解析和NBT-NSNetBIOS名称服务是两种古老的名称解析协议当DNS解析失败时Windows会退回去用它们进行多播询问。攻击者只要在局域网里监听就能响应这些请求骗受害者把账号哈希发过来再配合工具做中继或离线破解。这个攻击手法成熟得不能再成熟而关闭两个协议对业务的影响在绝大多数环境里微乎其微。关闭LLMNR在组策略里设置“计算机配置→管理模板→网络→DNS客户端→关闭多播名称解析”设为已启用对应注册表是HKLM\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient下的EnableMulticast设为0。禁用NBT-NS则要在网卡高级TCP/IP设置的WINS标签里勾选“禁用TCP/IP上的NetBIOS”。如果用命令行批量处理可以用PowerShell遍历所有网卡关闭Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.TcpipNetbiosOptions -ne 2 } | ForEach-Object { $_.SetTcpipNetbiosOptions(2) }5.3 SMB签名与身份验证级别除了禁用SMBv1SMBv2/3也有可以压紧的安全旋钮。微软默认在域环境中要求SMB签名但在工作组环境里默认是不强制。攻击者可以借机做中间人攻击篡改或转发SMB流量。建议通过组策略把“Microsoft 网络服务器: 数字签名通信始终”和“Microsoft 网络客户端: 数字签名通信始终”都设为“已启用”。顺带看一眼“网络安全: LAN Manager 身份验证级别”如果还在旧的Send LM NTLM响应级别攻击者拿到哈希后破解起来非常轻松。推荐至少设为“仅发送 NTLMv2 响应”。这能从认证协议层面淘汰掉一批容易破解的旧哈希。5.4 端口和服务的持续管理安全基线不是配完一次就一劳永逸的网络和服务的暴露面每天都在变化。我习惯每季度用Get-NetTCPConnection配合Get-Process扫一遍当前机器的监听端口对每个异常监听端口都要问一句这个服务还活着吗这个端口还被业务用吗Get-NetTCPConnection -State Listen | Select LocalPort, OwningProcess | Sort LocalPort | ForEach-Object { $proc Get-Process -Id $_.OwningProcess [PSCustomObject]{ Port $_.LocalPort; PID $_.OwningProcess; Process $proc.ProcessName } } | Format-Table -AutoSize在端口层面上优先级最高的是开给数据库的端口不要暴露在业务网之外管理类的端口RDP、WinRM、SSH只允许从管理网段访问那些启动后就不再使用的遗留端口直接禁用对应服务。端口每少一个攻击面就小一分。6. 配置落地与验证经验从“改完了”到“真的生效了”6.1 分批次落地的顺序设计很多管理员喜欢一天之内把所有安全基线配完然后被业务部门投诉淹没。我踩过这个坑之后总结出一套相对平顺的顺序第一批先做日志审计和账户策略。这两类是“感知型”改动用户基本无感但能立刻提升可见性。第二批做防火墙和网络协议加固。属于“限制型”改动会有少量兼容性问题留足观察期。第三批做SMBv1禁用、ASR规则等“硬性”防护。放在最后等你已经能通过日志看到环境里的真实请求再动刀。第四批才是BitLocker、UAC调整这类影响工作流的项目。每批之间至少间隔两到三周留出业务反馈的窗口。不是所有机器都能同一套策略一把过有些老系统就是要特事特办。6.2 验证配置有没有真正生效改配置的人都知道最难的不是“怎么改”而是“怎么确认已经生效并持续有效”。密码策略生效情况用这个命令secedit /export /cfg C:\secpol.cfg打开导出的文件查PasswordPolicy参数。审计策略用auditpol /get /category:*查看每项的实际值。组策略的最终结果用gpresult /r或rsop.msc验证。网络放行规则是否生效用Test-NetConnection对每个关键端口做连通性测试Test-NetConnection 10.0.0.10 -Port 3389这里提一个周期性问题组策略有刷新周期默认90分钟加随机偏移改完策略后想立刻生效可以gpupdate /force但如果未生效先检查两条链路策略有没有被更高层的GPO覆盖以及客户端有没有正常连上域控的SYSVOL。6.3 那些年我踩过的坑盘点一遍防止你踩坑一把内置管理员禁用了结果发现SQL Server代理服务跑不起来。原因是某些服务配置里指定了内置管理员账户。处理方式如果一定需要该账号运行服务至少保证它有超强密码并禁止交互式登录。坑二账户锁定策略设成3次公司的老总、销售连续输错密码被锁大晚上打电话让你解锁。从那以后锁定阈值我就用5次并开启“重置账户锁定计数器”时间为15分钟很多误解会随着解锁窗口自动消散。坑三强制SMB签名后旧打印机打不了。真要兼容可以单独为打印机所在的VLAN创建一个例外GPO而不是全局一把抓。我现在的习惯是“全局默认从严例外按业务线单独开”。坑四给安全日志设置了“不覆盖”但没调大容量结果半年后日志满服务器安全日志停止记录且没有任何通知。建议给“事件日志已满”这类严重级别事件配置告警别让最关键的防线在沉默中失效。6.4 基线之后的日常维护配置做完只是起点安全基线需要持续迭代。Windows补丁更新后有时会重置部分安全选项应用升级也可能悄悄打开新端口人员离职后过去授权的账号不一定有人记得清理。我建议每季度做一次基线复核核心就三件事导一遍安全策略和审计策略扫一遍监听端口变更跑一遍权限组和本地管理员组成员清单。有一台跳板机专门用来做配置变更和基线审计而不是直接用生产服务器操作也能减少很多手滑导致的故障。安全基线这份活没有“做完”的概念只有“当前是否还处在受控状态”这个概念。它不能保证你的系统永远不被攻破但能在攻击刚露头时发出信号在攻击得手后逼着对手付出代价。系统管理员的日常就是在“业务顺畅”和“系统安全”之间找平衡这份清单是我多年左右横跳之后总结出的比较稳的中间态希望能让你少走几段弯路。
返回列表