开篇
怎么判断Win服务器有没有被登陆,最直接的办法是看Windows安全日志里的4624和4625事件。4624代表登录成功,4625代表登录失败,如果发现大量非你本人操作的成功日志,基本可以断定有人登过你的服务器。
win服务器怎么看谁登录过:从安全日志入手
Windows服务器把每一次登录行为都记录在案,只是很多人不知道去哪儿翻,打开方式很简单:按Win+R,输入eventvwr.msc,回车打开事件查看器。
在左侧栏里依次展开“Windows日志”→“安全”,右侧就是一堆密密麻麻的日志记录,没有筛选之前,你看到的是几百条看不懂的编号和英文,别慌,用筛选功能把它们归类。
- 点击右侧“筛选当前日志”
- 在“<所有事件 ID>”框里输入
4624,4625 - 确定后,剩下的日志全是登录相关记录
看懂4624和4625这组关键数字
4624事件表示登录成功,这是攻破服务器的标志性记录,双击一条4624日志,你能看到登陆者的用户账户、来源IP、登录进程和时间戳。
4625事件表示登录失败,如果服务器有大量外部IP不断尝试登录,说明有人在撞库或暴力破解。
区分登录类型也很关键,日志里有“登录类型”一栏,数字对应的含义如下:
- 2:本地键盘登录(人坐在服务器前)
- 3:网络共享访问(最常见的外部入侵路径)
- 10:远程桌面登录(RDP,黑客重点攻击目标)
- 7:屏幕锁定后解锁
必须注意的日志坑
安全日志默认只有几个星期的保留时间,且最早版本的Server 2003默认不记录成功登录,如果你误以为日志永远可靠,可能错失排查时机,黑客拿到管理员权限后可能会用wevtutil cl system这类命令清空日志,所以看日志要趁早,发现不对劲就要赶紧备份。
Win服务器查看登录日志方法:用PowerShell批量排查
图形界面的筛选适合单机排查,但如果你管理多台服务器,或者要从几万条日志里捞出可疑记录,用PowerShell效率高得多。
单条命令查最近登录记录
以管理员身份打开PowerShell,输入下面这条命令,能快速列出最近所有登录成功和失败的事件:
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624,4625} | Select-Object TimeCreated, Id, LevelDisplayName, Message | Out-GridView
窗口会弹出一个表格,搜索、排序、筛选都在里面操作,比事件查看器直观不少,不过Message字段内容太杂,建议进一步精简,只看登录类型和IP地址:
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624} | ForEach-Object {
$xml = [xml]$_.ToXml()
$ip = $xml.Event.EventData.Data | Where-Object {$_.Name -eq 'IpAddress'}
$user = $xml.Event.EventData.Data | Where-Object {$_.Name -eq 'TargetUserName'}
[PSCustomObject]@{ Time = $_.TimeCreated; User = $user.'#text'; IP = $ip.'#text' }
} | Sort-Object Time -Descending | Format-Table
统计外部IP的尝试次数
想知道哪些IP在疯狂试探你的服务器,用这条命令按IP分组统计:
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} | ForEach-Object {
$xml = [xml]$_.ToXml()
($xml.Event.EventData.Data | Where-Object {$_.Name -eq 'IpAddress'}).'#text'
} | Group-Object | Sort-Object Count -Descending | Select-Object Count, Name
如果某个IP的尝试次数超过50次甚至上百次,基本可以认定是恶意的暴力破解行为。攻击者很少只试一两次就收手,他们通常会跑字典库,所以这类统计会暴露大量的攻击源。
把日志导出成表格存档
安全日志文件默认路径在C:WindowsSystem32winevtLogsSecurity.evtx,你可以把它复制到备份盘,也可以导出为CSV或者XLSX存档:
wevtutil epl Security C:backupsecurity_$(Get-Date -Format yyyyMMdd).evtx
导出后配合微软官方提供的日志分析工具(比如Log Parser),可以对历史数据做更深入的挖掘,行业共识认为,保留至少90天的安全日志是服务器合规管理的基础门槛,等保2.0标准对此也有明确要求。
怎么判断登录痕迹是否被人为清理
前面说过,黑客可能清理日志,那怎么看服务器有没有被登陆且事后被擦掉痕迹?有几个地方值得一查。
检查注册表UserAssist键值
Windows会记录用户每打开程序的操作,存在注册表里:
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerUserAssist
这个路径下能看到曾经执行过的程序列表,如果出现你没有安装过的工具,或运行时间在凌晨两三点,大概率是入侵者留下的痕迹。
查看系统账户最后一次登录时间
在命令提示符里执行:
net user administrator
输出的信息里包含“上次登录”的时间,对比你平时的操作习惯,任何异常时段都值得追查,此外同行们经常忽略的是“Guest”账户的状态,攻击者有时会启用它当作后门,用net user guest查看账户是否被激活。
检查计划任务里有没有可疑项
管理员权限打开任务计划程序,看有没有名字跟系统组件很像的任务,有些木马会注册计划任务来维持权限,在每天的固定时间运行,只要发现可疑项,右键“禁用”再说。
加固登录安全:看完日志记得堵漏洞
找到被登录的证据只是第一步,事后避免再次被攻破才是关键。
改掉默认的Administrator账户名
所有Windows服务器的管理员默认叫Administrator,攻击者不需要猜用户名就能开始破解密码,把它改名:
- 按
Win+R输入secpol.msc打开本地安全策略 - 依次展开“本地策略”→“安全选项”
- 找到“账户: 重命名管理员账户”,改成不显眼的名称
开启账户锁定策略
把安全策略里的账户锁定阈值改为5次,锁定时间设为30分钟以上,这样暴力破解基本失效,攻击者只能试5次就锁死,不过在域控服务器上要谨慎设置,防止恶意锁定导致正常用户无法工作。
封禁高危端口并限制RDP来源
远程桌面端口3389是重灾区,业内专家指出,直接暴露3389到公网的服务器,平均每天会收到几千次扫描尝试,可以在云平台的安全组里限制3389只对特定IP开放,或是把远程桌面端口改成一个不常见的数值。
方法如下:
- 打开注册表编辑器,定位到
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp - 修改PortNumber为自定义端口(例如53421)
- 重启服务器后生效,后续连接时用
IP:53421
登录行为一旦异常,立刻断开连接
如果正在排查的过程中发现有人正连着你的服务器,直接执行:
logoff
或在任务管理器“用户”标签页里选中异常会话,右键“断开”,先把入侵者踢出去,再分析痕迹。
让系统替你做哨兵:开启登录审计
有些服务器默认配置下,成功登录事件是不记录的,这意味着你连日志都没有,前面所有排查方法都无从谈起,确保审计策略是开启状态。
在管理员命令行执行:
auditpol /set /subcategory:"登录/注销" /success:enable /failure:enable
然后是账户登录事件:
auditpol /set /subcategory:"账户登录" /success:enable /failure:enable
开启之后,所有成功和失败的登录尝试都会被记入安全日志,这项操作应该在服务器部署的第一天就完成,而不是等出了事才想起来。
如果你想更及时地收到通知,可以把安全日志转发到SIEM平台做实时告警,中小型企业没有专业SIEM的话,也可以在Windows事件查看器里新建自定义视图,只为登录事件设置订阅,预警通知能让你在入侵发生后的几分钟内就知道情况,而非等几周后被动发现。
常见疑问速答
服务器被人登录了,最快的确认办法是什么?
先看安全日志中4625失败事件的数量,再看最近的4624成功登录的时间点和来源IP,如果来源IP不是你的办公地址,且时间不在你的操作范围内,基本就能确定被入侵,配合net user查各账户最后登录时间,可以锁定被利用的账号。
安全日志被清空了,还有办法查到是否被登录吗?
能,日志被清空本身就是一个强烈的入侵信号,可以用文件恢复工具尝试从磁盘未分配空间恢复Security.evtx文件,同时检查系统自带的C:WindowsPrefetch等痕迹文件,如果服务器上运行着第三方EDR产品,其云端控制台通常有一份独立于本机的日志副本。
服务器放在云上,云厂商提供的控制台日志够用吗?
云厂商提供的控制台登录日志主要记录网页端和API的登录行为,覆盖的是管理后台访问场景,而系统内部通过RDP或其他协议产生的登录,只能靠Windows安全日志来识别,二者互补,不能互相替代。
排查服务器登录记录,本质上是管理预期:你需要知道正常情况下谁会登录、何时登录、从哪里登录,才能把异常行为从噪音里捞出来,定期导出安全日志、开启完整审计策略、限制远程登录来源,这三件事做好了,Windows服务器被登录的情况就尽在掌控。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/680595.html





