ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Windows系统基础安全加固:从账户、端口到日志的完整防线

Windows系统基础安全加固:从账户、端口到日志的完整防线 1. 先聊一个反直觉的结论刚装好的Windows反而最脆弱这篇文章聊的是Windows系统基础安全。起因是前几天帮朋友重装系统装完他第一反应就是插网线开始下软件我拦住他说先花半小时做基础加固。他全程念叨有必要吗直到我打开安全日志让他看了那几十条来自陌生IP的失败登录记录他才安静下来。Windows系统基础安全方面最容易被误解的一点就是我把系统装干净了、什么都还没做应该很安全。其实恰恰相反默认安装的Windows考虑的是通用性而不是安全性它在网络上是半裸奔状态。安全的本质是在这些问题变成事故之前把该关的关掉、该管的管住、该记录的留下来。1.1 公网裸奔的实际威胁模型很多人觉得我又不是什么大目标黑客不会盯上我。这句话在十年前可能还有一点道理但现在的扫描行为是全自动化的只要你的IP暴露在公网上扫描器就会用固定端口列表在数小时内扫完整个网段然后自动把开放了3389、445、139等端口的主机记录下来再跑一轮弱口令尝试。我自己做过一个很简单的实验一台只设置了一个较强密码、其他全部保持默认的测试虚拟机放在公网环境里第三天再去看安全日志就已经积累了大量来自不同国家IP的失败登录记录。攻击方根本不知道这台机器背后是谁他们只是在批量打鱼扫到网里有洞就投递恶意负载。所以请建立一个基本认知你的Windows系统每分每秒都可能在被探测。这不是让你恐慌而是让你明白为什么不打补丁、开着默认账户、放着敏感端口不管的机器在被你发现异常之前可能已经被访问过很久了。1.2 基础安全的敌人清单提到基础安全先要明确防的是哪些威胁这样才能决定投入多少精力。我做运维工作的那几年见过最多的入侵入口可以分成四类公网端口暴露与弱口令爆破最常见尤其是3389远程桌面、445文件共享这类端口。攻击者用自动化工具有序重试密码密码简单就是秒破。恶意软件分发勒索病毒、挖矿木马、远控木马。入口可能是下载站捆绑、破解软件、伪装成文档的附件也可能依赖未安装的安全补丁。钓鱼与社会工程学骗子发一封财务核对表.xlsx给你你点开启用了宏整个内网就可能跟着遭殃。技术防护再强也架不住一键允许。内网横向移动这是前面几类威胁进入之后的第二阶段。一台机器沦陷后攻击者会尝试用抓取到的密码、SMB漏洞在内网扩散如果内网机器口令相同就等于一路绿灯。明确了威胁来源你会发现基础安全其实是在用最合理的成本挡掉最粗鲁的攻击。高级黑客和定向攻击那不是基础安全能解决的事普通人更多需要防的是那些能自动发起、不带感情的攻击脚本。2. 登录入口的三层加固账户、密码与UAC登录入口是一台Windows机器最显眼的门。任何一个拿到你密码的人就等于拿到了钥匙。这一步的操作成本最低但收益极高。2.1 默认Administrator账户禁用而不是改名Windows 10/11安装过程中如果你用微软账户登录本地的Administrator账户通常是禁用状态但如果你用本地账户安装或者在部分企业镜像、旧版本里内置Administrator可能是启用的。问题在于这个账户的用户名是全世界皆知的。攻击者不需要猜你的用户名是什么只需要猜密码。所以内置Administrator账户无论如何都要处理处理方式按优先级排列禁用该账户首选将其重命名为一个不显眼的名字次选设置一个高强度的复杂密码保底。禁用操作很简单在管理员权限的CMD窗口中执行net user administrator /active:no如果你确认自己当前没有任何一个可用的管理员账户千万别先禁用Administrator再去看那样等于把自己锁在门外。先创建一个新的管理员账户等新账户能正常提权后再回头禁用内置账户。有人问直接删掉行不行Windows不允许删除内置Administrator但可以禁用。禁用后以普通用户身份日常操作需要管理员权限时会弹出UAC输入管理员凭据或者直接授权即可。2.2 密码策略别让PIN成为摆设关于口令这件事我的态度很明确你的微软账户或本地账户必须有一个足够强的密码然后在此基础上去用PIN或者Windows Hello。PIN的本质是绑定这台设备即使被抄走也无法在另一台机器上直接使用而密码是全局凭据两者都保留才有纵深。几条实用设置打开netplwiz取消勾选用户必须输入用户名和密码才能使用此计算机注意这是反的。如果你想要每次开机都要求登录应该保持勾选状态。这个选项经常被用来取消开机密码如果你不知道自己在做什么别乱勾。在设置 账户 登录选项里把如果 Microsoft 账户登录出现问题时要求重新登录设为从不之外的其他选项具体看需求。更重要的是把锁屏策略做起来离开电脑几分钟内自动锁屏。锁屏时间的设置在设置 电源和电池 屏幕和睡眠里配合设置 账户 登录选项 动态锁使用你带着手机离开一段距离电脑自动锁定。这个功能看着不起眼在办公室环境里非常实用。密码本身不要用生日、手机号、姓名拼音这些可以社工出来的内容。过去遇到不少爆破成功的案例最后发现密码是abc123456或88888888攻击脚本里最常见的字典就能命中谈再多安全建设都没有意义。2.3 UAC不是越满越好用户账户控制UAC是很多人理解偏差较大的功能。它不是一个杀毒开关而是一个提权闸门管理员组的成员平时以标准用户令牌运行程序只有触发提权操作时才会弹出授权确认框标准用户则会在提权时被要求输入管理员密码。UAC滑块有四档始终通知任何程序尝试提权都会弹窗包括修改系统设置的进程安全性最高但非常打扰仅在程序尝试更改我的计算机时通知默认常用操作比如修改显示设置不会弹安装软件或修改系统设置会弹仅在程序尝试更改时通知不调暗桌面弹窗但不切到安全桌面容易被程序模拟点击从不通知等于关闭UAC任何进程都能直接提权一个网页脚本都能改你系统。我见过某些优化教程让用户把UAC拉到从不通知理由是弹窗太烦。这就等于把门锁拆了换了个门帘。正确做法是保持默认档日常使用标准账户UAC弹窗时认真看一眼程序来源再点是。把UAC拉满始终通知确实会更安全一点但对大多数人来说性价比不高因为频繁的弹窗会让人麻木最后看到弹窗就习惯性点是反而失去了意义。3. 系统更新真正该管理的是更新窗口不是关闭更新这是Windows安全话题里争议最大的一个点也是我这些年花最多口水去解释的一个点。3.1 关闭自动更新这句话到底坑在哪每过一段时间网上就会冒出一篇教你彻底关闭Windows自动更新的教程评论区一片叫好。我能理解这种情绪自动更新确实会挑你正在演示PPT的时候重启确实出现过驱动翻车导致蓝屏的案例。但这些属于更新策略没设置好而不是更新本身有毒。你得看清一个事实Windows更新里很大一部分补丁是安全更新修复的是远程代码执行、提权漏洞这一类问题。前几年几起大规模勒索病毒事件在全球范围内横扫内网中招的机器里绝大多数就是没有安装对应的SMB漏洞补丁。这说明问题不是补丁打太多了而是该打的补丁没打够。关掉自动更新等于把漏洞修复的通道掐了。你以为省去了重启的麻烦实际上是在给攻击者留后门。那些教程往往还会顺手教你关掉Windows Defender这就更离谱了。在现代网络环境下不更新的Windows和主动投降没有区别所以我每次看到类似内容都会拉黑。3.2 用活动时间和延迟更新找回控制权Windows不是没有给你控制更新窗口的能力只是很多人不知道入口在哪。先说家庭版用户打开设置 Windows 更新 高级选项你会看到两个关键配置活动时间默认是自动根据使用习惯计算的也可以手动指定一个时间段比如早上9点到下午5点Windows会在这个时间段以外才安装更新并重启。你可以在活动时间内放心使用电脑不用担心突然重启。暂停更新家庭版的暂停更新最多可以暂停5周。暂停不等于永久关闭它是一个延迟缓冲区适合在你需要稳定运行某个重要任务时临时启用但记得在暂停到期后尽快恢复更新。专业版和企业版用户则可以通过组策略做更精细的控制。运行gpedit.msc进入计算机配置 管理模板 Windows 组件 Windows 更新 配置自动更新这里可以设置自动下载并通知安装自动下载并计划安装等多种模式配合defer相关选项甚至可以指定推迟更新的天数。我的建议是开启自动更新设置好活动时间让系统在工作时间之外自动完成更新和维护。如果你真的很担心更新翻车可以多等一两天再手动补上但不要拖到几周甚至几个月。3.3 补丁翻车后的回滚流程补丁更新出问题怎么办别慌这是设计好的常规场景Windows提供了完整的回滚路径。在设置 Windows 更新 更新历史记录 卸载更新里你能看到最近安装的更新列表。选中出问题的那条点击卸载即可。如果列表里没有你要找的项也可以使用命令行方式wusa /uninstall /kb:5000000 /norestart注意把kb:后面的编号换成实际补丁编号。卸载后系统可能需要重启建议先把更新暂停掉再卸载否则Windows会在下一次检查更新时立刻把同一个补丁重新装回来让你陷入卸载了又回来的循环。还有一个容易被忽略的点很多安全类补丁卸载时会提示可能影响系统安全这是正常的警告语不代表不能卸载。如果你是因为驱动冲突或软件兼容性问题而回滚收到这个提示时还是要确认一下自己的判断宁可等几天兼容性修复也不要长期保持缺补丁状态。4. 端口与防火墙先认清自己开了哪些门Windows系统装完默认开启了一系列网络服务这些服务对应的端口就是外界与你机器交互的通道。做基础安全的第一步是弄清楚自己到底开了哪些门面。4.1 三条命令看清监听端口与进程关联我最常用的一条命令永远是netstat -ano | findstr LISTENING输出里的四列分别是协议、本地地址和端口、外部地址、PID。你会看到一堆[::]或者0.0.0.0开头的监听地址它们表示这台机器在该端口上对所有网卡生效包括公网或局域网。如果某一行显示本地端口是135、445、3389说明对应的网络服务正在开放。光看到PID还不够你得知道这个PID对应哪个进程。在CMD里执行tasklist /fi PID eq 12341234换成你关注的PID就能看到进程名。也可以偷懒用PowerShellGet-Process -Id 1234更现代一点的方式是用PowerShell直接拉取TCP监听Get-NetTCPConnection -State Listen | Select-Object LocalPort,OwningProcess要把这个排查演进成习惯每台机器装完系统、装完常用软件以后跑一次上面的命令把那些不认识的监听端口记录下来。看到443、80、53这类常见端口不用惊讶系统服务也在使用但如果你看到某个以随机数字命名、路径在临时目录下的进程在监听端口那就值得认真查一下了。4.2 阻断无主端口图形界面与命令行两条路找到非法或者无用的端口之后一个最直接的操作是用Windows Defender防火墙把它拦掉。图形界面比较简单运行wf.msc打开高级安全Windows Defender防火墙在左侧选中入站规则右侧点击新建规则规则类型选择端口协议选择TCP特定本地端口填上你要阻断的端口号操作选择阻止连接应用Profile全部勾选名称起得直观一点就行。如果你更喜欢命令行一行搞定netsh advfirewall firewall add rule nameBlock_135 dirin actionblock protocolTCP localport135这条命令含义是新建一条名叫Block_135的入站规则把发往本机135端口的TCP流量全部拦掉。actionblock可以自由替换成allowlocalport可以替换成3389规则逻辑是一样的。这里特别说一下3389远程桌面的态度。远程桌面本身不是洪水猛兽你必须使用它的时候正确的打开方式是确认开启了网络级别身份验证NLA在防火墙里把3389入站限制为仅允许指定IP地址访问而不是对所有人开放如果机器直接暴露在公网建议默认关闭远程桌面有需要时通过其他可审计的通道访问不要贪图方便。我在运维过程中见过太多为了远程方便直接暴露3389的机器最后被爆破成功沦陷的情况。方便和安全之间你要自己算清楚这笔账。4.3 异常外联的识别从netstat到资源监视器监听端口解决的是谁在门外等着的问题外联连接解决的是机器内部谁在偷偷往外传数据的问题。感染木马后很多恶意程序会主动连接远端的控制服务器这种连接同样可以通过基础命令观察到。把监听换一个过滤条件netstat -ano | findstr ESTABLISHED重点关注外部地址那一列尤其是连接到高端口、目标地址归属地明显异常的IP。如果看到一个进程同时建立了大量外部连接或者某个你根本不认识的程序在持续连接某一个固定IP就值得提高警惕。遇到网络流量异常还有一个图形化工具很好用任务管理器切到性能标签打开底部的资源监视器进入网络面板你能看到每个进程当前的下行/上行速度这是排查机器很卡但不知道谁在跑流量的最快路径。我之前排查一台主机时发现一个名为svchost.exe的进程在疯狂发包。正常来说svchost有很多个实例但每一个都应该位于C:\Windows\System32目录下。那次看到的进程虽然名字正确路径却在用户临时文件夹里那就不是系统进程而是木马伪装的。所以在怀疑进程时除了看名字还要看进程对应的可执行文件路径。5. 安全日志事件查看器里的案发现场如果防火墙和账户策略是防患于未然那安全日志就是案发后的监控回放。Windows安全日志默认就在记录大量关键事件只是大部分人从来没有打开过它。5.1 4624/4625登录事件里的关键情报打开事件查看器运行eventvwr.msc进入Windows日志 安全你会看到一长串编号形如4624、4625、4672的事件。挑几个最核心的4624登录成功代表一个用户成功登录。它包含的关键字段有登录类型、登录进程、源网络地址、目标会话ID等。4625登录失败代表一个用户登录失败。它是检测暴力破解最直接的证据。4672特殊权限登录通常是管理员账户执行的敏感操作需要留意是否与实际使用习惯匹配。登录类型这个字段很关键普通人只需要记住最常出现的几个2交互式登录人坐在本机前输入密码登录。10远程交互式登录通过远程桌面RDP登录。3网络登录访问本机的共享文件夹等网络资源比如SMB。假设你从来没有远程连接过这台机器却在日志里看到大量登录类型为10的记录那就说明有人在试图远程登录你的电脑配合大量4625失败记录基本可以判断是RDP爆破。5.2 打开登录审核并调大日志容量部分Windows版本对登录事件的审核默认只记录部分内容尤其是失败登录可能没有完整记录。为了确保案发现场足够完整我建议手动打开审核策略。运行secpol.msc打开本地安全策略进入安全设置 本地策略 审核策略双击右侧的审核登录事件把成功和失败两个勾选框都打上勾。同样的做法也适用于审核账户登录事件。改完之后不需要重启通常立刻生效或者用gpupdate /force强制刷新一次。日志容量同样值得调整。安全日志如果满了旧事件就会被覆盖丢失线索。打开事件查看器的安全日志属性把最大日志大小从默认的20MB左右改到64MB以上保留方式选择按需要覆盖事件就可以。对于每天产生大量登录失败的机器64MB其实也只能存几天有条件的话可以把安全日志单独转发出去或者定期导出归档这个属于进阶玩法普通家用场景先做到有日志可查就够。5.3 用PowerShell快速提取可疑登录记录手动在事件查看器里翻日志真的费眼而且事件一多眼睛会看花。所以我推荐直接用PowerShell做提取。查看最近100条登录失败记录Get-WinEvent -FilterHashtable {LogNameSecurity;Id4625} -MaxEvents 100 | Select-Object TimeCreated, Message如果你想统计最近7天某个IP尝试登录了多少次可以这样写Get-WinEvent -FilterHashtable {LogNameSecurity;Id4625} | Where-Object { $_.TimeCreated -gt (Get-Date).AddDays(-7) } | Measure-Object | Select-Object Count还可以按IP维度聚合统计快速找出拉黑目标Get-WinEvent -FilterHashtable {LogNameSecurity;Id4625} | ForEach-Object { if ($_.Message -match 源网络地址:\s*(\d\.\d\.\d\.\d)) { $Matches[1] } } | Group-Object | Sort-Object Count -Descending | Select-Object -First 10注意运行这些命令需要管理员权限否则会报拒绝访问。另外如果一条日志的Message字段特别长建议把Select-Object里的Message换成具体的属性名比如TimeCreated、Id等避免控制台刷屏到没法看。6. 可以直接抄作业的加固清单与我的翻车记录前面几章把原理和关键操作讲了最后汇总一份基础加固清单再聊聊我踩过的坑。这份清单是我给朋友和同事做系统装机的标准动作全程不超过30分钟做完之后系统在默认配置下的风险敞口能降一大半。6.1 30分钟内完成的基础加固步骤项目操作路径/命令推荐设置系统更新设置 Windows 更新开启自动更新设置活动时间暂停更新最多用于缓冲内置管理员net user administrator /active:no禁用保留独立管理员账户解锁时间设置 账户 登录选项 动态锁建议使用动态锁或设置屏幕关闭后要求重新登录UAC设置 账户 UAC设置保持默认档不建议拉满或关闭登录审核secpol.msc 审核策略成功失败都记录安全日志事件查看器 日志属性最大大小调整到至少64MB防火墙wf.msc保持默认开启阻断无主入站端口Defender设置 隐私和安全 Windows安全中心保持实时保护开启定期快速扫描端口自查netstat -ano每月巡检一次监听端口和外联连接系统还原点系统属性 系统保护关键操作前手动创建还原点关于备份多说一句基础安全做得再好也不代表万无一失。建议至少每隔一段时间创建一次系统还原点或者对重要数据做离线备份。看到勒索病毒相关的新闻时就该明白备份有时是最后一道能够确定的防线。6.2 复盘我踩过的五个Windows安全坑第一个坑清理全家桶时图省事直接按网上教程用组策略把Windows Defender整个禁用了但之后又没有及时安装任何第三方杀毒软件。结果系统裸奔了整整三周直到我再次检查时才意识到问题的严重性。教训是永远不要在移除一个安全组件之前先确保另一个同等或更强的安全组件已经就位。第二个坑为了减少弹窗把UAC拖到了从不通知。那天晚上浏览器莫名其妙被静默安装了一个不知名的工具条我才意识到UAC那个烦人的提示原来一直在保护我。把UAC关掉之前你等于把整台机器的提权权限交给了每一个进程包括网页脚本。第三个坑某个补丁导致应用启动崩溃我手动卸载了它但忘了暂停更新。第二天上班开机系统已经自动把补丁重新装回去了问题再次出现。所以回滚补丁的正确姿势是先暂停更新再卸补丁然后给微软留出解决兼容性的时间窗口。第四个坑有台文件服务器要做安全加固我一口气把防火墙入站规则全部设为阻止连接结果打印机服务、局域网文件共享、内网远程管理全断了整个办公室的工作停摆了一个下午。教训是防火墙规则要精确控制单个端口千万不要一刀切全禁。第五个坑给一台面向公网的机器配置账户锁定策略时把锁定阈值设成了3次结果我自己测试登录时输错了两次密码账户直接被锁了半小时。账户锁定策略是为了防止暴力破解但如果设置得太严也很容易把自己锁在门外建议阈值设在5次以上配合较长的锁定时间。这些坑都不是什么高深的技术问题纯粹是太想当然造成的。安全是一个动态的过程不是装完系统设好就一劳永逸了。我现在的习惯是每个月花十分钟跑一遍端口检查和日志巡检顺手看看系统更新状态这个月花的时间往往能为未来省下好几个不眠之夜。
返回列表