简介面向企业IT运维与安全加固人员的Windows 10 1803安全基线配置资料聚焦系统合规检查与策略落地适合需要按微软官方标准完成终端安全加固的中级技术人员参考。压缩包共72个文件、约1.06MB以xml策略模板、htm组策略报告、cmtx与pol策略文件为主辅以admx/adml管理模板、inf与cmd部署脚本、mof WMI筛选器及xlsx基线对照表覆盖计算机与用户两侧的配置项。资源内含本地脚本、域加入与非域加入两套安装入口以及BitLocker、Credential Guard、Defender防病毒、域安全等分项报告并附RS3到RS4的基线差异表便于逐项核对策略变更。已有1623人学习下载可帮助读者快速搭建基线核查环境、比对官方规则并定位不合规项减少手工整理策略的时间成本。1. 从一台刚装完的 1803 说起安全基线到底该在什么时候落地上周帮某实验室的一台老工作站做合规检查系统是 Windows 10 1803装完系统后一直裸奔用了大半年结果一次内部扫描直接报出四十多条不合规项——SMBv1 还开着、本地账户密码策略形同虚设、远程桌面默认端口暴露、审核策略几乎全关。这类机器在不少单位里很常见系统版本不算太老但装完之后没人管过安全配置等到出事或者被扫描通报才回头补。安全基线 window 这件事说白了就是把微软和等保要求里那些该开的开、该关的关落成一套能重复执行的配置清单。这篇笔记记录的是我在 Windows 10 1803 上落地安全基线的完整过程从版本确认、账户与密码策略、服务与端口收敛到审核策略和最后的验证适合需要给一批 1803 机器做统一加固的运维同行照着走。装不好会怎样轻则扫描不过、重则留下横向移动的口子而且 1803 这个版本有些组策略项和后续版本位置不一样照抄 22H2 的模板会翻车。2. 装前先把版本和工具链对齐1803 的基线入口在哪2.1 确认系统版本与补丁级别动手之前先确认目标机器确实是 1803别拿 1809 的模板往上套。1803 的内部版本号是 17134用一条命令就能看清楚# 查看系统版本、内部版本号和补丁级别 winver # 或者用命令行精确取版本 wmic os get Caption,Version,BuildNumber /valuewinver弹窗里会显示「版本 1803OS 内部版本 17134.xxx」后面的 xxx 是累积补丁号。我一般要求补丁号不低于当年最后一个累积更新因为部分安全基线项依赖补丁修复后的组策略行为。wmic那条命令输出BuildNumber17134就说明版本对上了。如果 BuildNumber 是 17763 那就是 1809模板不能混用这是第一个容易踩的坑。2.2 准备本地安全策略与组策略两套入口Windows 10 1803 专业版及以上自带本地组策略编辑器家庭版没有家庭版只能用注册表或安全模板导入。我一般优先用组策略因为可回滚、可导出。入口有两个# 打开本地组策略编辑器专业版/企业版/教育版可用 gpedit.msc # 打开本地安全策略所有版本基本都有管账户/审核/用户权限分配 secpol.mscgpedit.msc管的是计算机配置和用户配置里的策略项secpol.msc管账户策略、本地策略、公钥策略这些。安全基线里密码策略、账户锁定策略、审核策略、用户权限分配都在secpol.msc里改而 SMB、远程桌面、Windows Defender 相关开关在gpedit.msc里。两套入口都要用别只开一个就以为齐了。家庭版没有gpedit.msc常见做法是用secedit导入安全模板后面会提到。2.3 先做一份可回滚的快照改基线之前我习惯先导出一份当前配置出问题能对比、能回退# 导出当前本地安全策略到文件作为回滚基线 secedit /export /cfg C:\baseline_backup\before.inf # 导出当前组策略报告需要管理员权限 gpresult /h C:\baseline_backup\before_gp.htmlsecedit /export把当前安全策略落成一个 inf 文件改坏了可以用secedit /configure /db重新导入回去。gpresult /h生成一份 HTML 报告记录当前生效的策略来源后面验证时拿来对比。这一步花不了两分钟但真出问题时是唯一的后悔药。目录C:\baseline_backup要提前建好secedit不会自动创建父目录。3. 账户与密码策略先把人这一关焊死3.1 密码策略与账户锁定策略的落地参数账户策略是基线里最基础也最容易被忽略的一块。1803 的secpol.msc里路径是「安全设置 → 账户策略 → 密码策略 / 账户锁定策略」。我按等保二级的常见要求落这套参数策略项建议值说明密码长度最小值8 个字符低于 8 位直接不合规密码最长使用期限90 天到期强制改密码最短使用期限1 天防止改完立刻改回强制密码历史5 个记住最近 5 次账户锁定阈值5 次无效登录防暴力破解账户锁定时间15 分钟锁定时长重置账户锁定计数器15 分钟与锁定时长一致手工点界面容易漏项我一般用net accounts一次性写进去命令可复现# 一次性设置密码与锁定策略管理员命令行执行 net accounts /minpwlen:8 /maxpwage:90 /minpwage:1 /uniquepw:5 net accounts /lockoutthreshold:5 /lockoutduration:15 /lockoutwindow:15 # 查看当前生效值 net accounts/minpwlen是最小长度/maxpwage是密码最长天数/uniquepw是历史记忆个数。第二条里/lockoutthreshold是失败次数阈值/lockoutduration是锁定分钟数/lockoutwindow是计数器重置窗口。注意/maxpwage设成unlimited反而不合规别图省事。执行完用net accounts回读一遍确认每一项都落上了界面和命令行偶尔会因为策略继承出现不一致以回读为准。3.2 禁用不必要的本地账户与来宾账户1803 装完默认带 Guest 和 DefaultAccount 这类账户基线要求 Guest 禁用、Administrator 改名或禁用。用命令行处理最稳# 禁用来宾账户 net user Guest /active:no # 查看所有本地账户状态 net user # 禁用内置 Administrator如果业务不依赖 net user Administrator /active:nonet user Guest /active:no把来宾账户关掉net user不带参数会列出所有本地账户和是否启用。内置 Administrator 是否禁用要看业务有些老系统服务跑在它下面禁了会起不来我一般先确认没有服务依赖再动。改完账户名的话wmic useraccount where nameAdministrator rename LocalAdmin可以改名但改名前要确认没有脚本硬编码了旧名字。3.3 用户权限分配的收敛「本地策略 → 用户权限分配」里有几项必须收拒绝从网络访问这台计算机、拒绝本地登录、取得文件或其他对象的所有权。我一般把 Guest 加进「拒绝从网络访问」把普通用户从「取得所有权」里拿掉。这块用secpol.msc图形界面改最直观改完记得再secedit /export一次存成基线模板方便批量下发到同批 1803 机器。批量场景下把导出的 inf 用secedit /configure /db secedit.sdb /cfg baseline.inf /overwrite导入比一台台点快得多。4. 服务、端口与协议收敛把攻击面砍到最小4.1 关掉 SMBv1 和高风险服务1803 上 SMBv1 默认可能还开着这是扫描必报项。关它分两步先关功能再关服务# 关闭 SMBv1 协议功能需要重启生效 Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart # 确认 SMBv1 状态 Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol # 停用并禁用相关高危服务 sc config LanmanServer start disabled sc stop RemoteRegistry sc config RemoteRegistry start disabledDisable-WindowsOptionalFeature是 PowerShell 命令-NoRestart表示先不重启改完统一重启。Get-WindowsOptionalFeature回读状态State显示Disabled才算成。sc config ... start disabled把服务启动类型设为禁用注意等号后面必须有空格这是sc命令的老规矩写成startdisabled会报错。RemoteRegistry 远程注册表服务基线要求关闭关之前确认没有依赖它的管理工具。4.2 远程桌面端口与网络层防护如果业务必须开远程桌面基线要求改默认端口并限制来源。改端口走注册表# 把 RDP 默认 3389 改为 13389示例端口 reg add HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp /v PortNumber /t REG_DWORD /d 13389 /f # 防火墙只放行指定网段访问新端口 netsh advfirewall firewall add rule nameRDP-13389 dirin actionallow protocolTCP localport13389 remoteip192.168.10.0/24reg add里/t REG_DWORD指定类型/d 13389是十进制端口值/f强制覆盖。改完端口要同步改防火墙规则remoteip限定来源网段别写成any。改端口后记得在防火墙里把旧的 3389 规则删掉否则等于没改。这一步改完必须重启 TermService 服务或重启机器才生效。4.3 防火墙默认拒绝入站基线要求防火墙三个配置文件都开启且默认入站拒绝# 三个配置文件全部开启默认入站阻止 netsh advfirewall set allprofiles state on netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound # 查看当前配置 netsh advfirewall show allprofilesallprofiles覆盖域、专用、公用三个配置文件firewallpolicy blockinbound,allowoutbound是入站阻止、出站允许。回读时看每个配置文件的State是ON、入站策略是BlockInbound。有些机器公用配置文件默认是关的只开域配置不够扫描会按最松的那个报。5. 避坑与排查1803 基线落地时最容易翻车的几处5.1 现象改完密码策略不生效net accounts回读还是旧值原因通常是域策略覆盖了本地策略或者机器加入了域但本地策略优先级低。解决先gpresult /h看生效来源如果是域策略下发本地改会被覆盖得在域级别改如果是本地确认改完没有其他脚本回写。我遇到过一台机器装了某管理软件开机脚本会把密码策略重置最后是把这个脚本停掉才落住。5.2 现象关了 SMBv1 后某台老打印机或共享盘连不上原因是老设备只支持 SMBv1。解决不要为了兼容把 SMBv1 整体开回来常见做法是单独给那台设备所在网段放行或者推动设备侧升级。基线合规和业务兼容要权衡我的做法是先记录例外、报备而不是默默开回去。5.3 现象改 RDP 端口后远程连不上防火墙规则也加了原因多半是只改了PortNumber没重启 TermService或者防火墙规则加在了错误的配置文件。解决net stop TermService net start TermService重启服务再用netsh advfirewall firewall show rule nameRDP-13389确认规则存在且Profiles覆盖当前网络类型。还有一种是组策略里另有一条 RDP 端口策略覆盖了注册表得去gpedit.msc里查。5.4 现象secedit /configure导入基线模板报错 0x80070005原因是权限不足或 inf 文件编码不对。解决用管理员权限运行inf 文件保存为 ANSI 或 UTF-16 带 BOM别用 UTF-8 无 BOM。我一般用secedit /export导出的原文件改编码就不会错。5.5 现象审核策略开了但事件查看器里没有登录审核记录原因是只开了「审核策略更改」没开「审核登录事件」或者审核策略被组策略覆盖。解决在secpol.msc的「审核策略」里逐项确认「审核登录事件」成功和失败都勾上改完gpupdate /force刷新再触发一次登录看安全日志。6. 装完怎么验证三条命令确认基线真的落住了基线改完不能只看界面勾没勾得用命令回读实际生效值。我固定跑三条net accounts看账户策略、netsh advfirewall show allprofiles看防火墙、Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol看 SMBv1。三条都过再补一次secedit /export /cfg C:\baseline_backup\after.inf和之前的before.inf做文本对比差异项就是这次改动的全部内容逐条核对有没有漏项或误改。# 验证账户策略 net accounts # 验证防火墙三配置文件 netsh advfirewall show allprofiles # 验证 SMBv1 已禁用 Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol # 导出改后策略做差异对比 secedit /export /cfg C:\baseline_backup\after.inf对比before.inf和after.inf时重点看[System Access]段密码和锁定策略、[Event Audit]段审核策略、[Registry Values]段RDP 端口等注册表项。如果after.inf里某项和预期不符说明那条策略没落住回到对应章节重改。批量机器场景下我会把after.inf收集回来统一 diff哪台机器缺项一目了然。还有一个容易被忽略的验证点重启之后策略是否还在。有些策略项比如 SMBv1 功能关闭必须重启才生效重启前验证通过不代表重启后还在。我的习惯是改完统一重启一次重启后再跑一遍上面三条命令全过才算收工。从那以后我每次做基线都强制走「导出 before → 改 → 重启 → 导出 after → diff」这一套再没出现过扫描通报里冒出「以为改了其实没生效」的项。希望帮到你。本文还有配套的精品资源点击获取