Windows Server查看远程桌面访问记录全攻略
在Windows Server 服务器运维中,查看远程桌面访问记录至关重要,它能助力管理员监控用户行为、排查安全隐患,为问题解决提供关键线索。
下面介绍多种查看方法。
一、事件查看器:直观的记录宝库
事件查看器是Windows系统自带工具,可查看各类系统事件,其中包含远程桌面访问记录。
1. 打开
按“Win+R”组合键,在运行对话框输入“eventvwr.msc”回车即可打开。
2. 定位日志
依次展开“应用程序和服务日志”→“Microsoft”→“Windows”→“
TerminalServices-RemoteConnectionManager”,右键单击“Operational”选择“筛选当前日志”。
3. 筛选
输入事件ID“1149”,此ID对应远程桌面连接事件,点击“确定”就能看到连接历史记录,其中包含IP地址、计算机名、登录时间等信息。
4. 高级筛选
若想进一步筛选,可利用自定义筛选功能。
比如筛选特定用户或时间段记录,在筛选窗口选“添加”,通过下拉菜单选“用户”输入用户名,选“时间生成”设定时间范围即可。
二、注册表:系统底层追溯
注册表保存着远程桌面访问相关信息。
1. 打开
按“Win+R”组合键,输入“regedit”回车打开。
2. 查找位置
导航到“HKEY_CURRENT_USER\SOFTWARE\Microsoft\Terminal Server Client”路径。“Default”键下能看到最近10次连接记录;展开“Servers”键,可获取服务器列表及登录用户名。操作注册表需谨慎,错误修改可能导致系统故障。
3. 备份与恢复
修改前建议备份。
选择要备份的键,右键点击选“导出”保存为.reg文件。若修改出问题,双击备份文件可恢复。
三、PowerShell:自动化查询利器
PowerShell脚本可高效查询远程桌面访问记录。
# 设置要查询的时间范围,这里设置为过去7天
$StartTime = (Get-Date).AddDays(-7)
# 获取安全日志中与远程桌面登录相关的事件
$Events = Get-EventLog -LogName Security -After $StartTime | Where-Object {
# 筛选出事件ID为4624(表示成功登录)且登录类型为10(远程桌面登录)的事件
($_.EventID -eq 4624) -and ($_.Message -match 'Logon Type: \s+(10)\s')
}
# 遍历事件并提取相关信息
$Results = foreach ($Event in $Events) {
$Message = $Event.Message
$TimeGenerated = $Event.TimeGenerated
$ClientIP = $Message -replace '(?smi).*Source Network Address: \s+((^\s)+)\s+.*', '$1'
$Username = $Message -replace '(?smi).* \s\sAccount Name: \s+((^\s)+)\s+.*', '$1'
$UserDomain = $Message -replace '(?smi).* \s\sAccount Domain: \s+((^\s)+)\s+.*', '$1'
$LogonType = $Message -replace '(?smi).*Logon Type: \s+((^\s)+)\s+.*', '$1'
# 创建一个自定义对象来存储信息
New-Object -Type PSObject -Property @{
TimeGenerated = $TimeGenerated
ClientIP = $ClientIP
Username = '{0}\{1}' -f $UserDomain, $Username
LogonType = switch ($LogonType) {
2 {'Interactive - local logon'}
3 {'Network connection to shared folder'}
4 {'Batch'}
5 {'Service'}
7 {'Unlock (after screensaver)' }
8 {'Network cleartext'}
9 {'New credentials (local impersonation process under existing connection)'}
10 {'RDP'}
11 {'Cached interactive'}
default {"Log type not recognised: $LogonType"}
}
}
}
# 按照时间降序排序结果并输出
$Results | Sort-Object -Property TimeGenerated -Descending | Select-Object -Property TimeGenerated, ClientIP, Username, LogonType
1. 脚本优化
为增强灵活性,可将时间范围设为参数。
修改脚本开头:
param(
[int]$DaysBack = 7
)
$StartTime = (Get-Date).AddDays(-$DaysBack)
运行脚本时,可通过命令行传入天数参数,如 .\script.ps1 -DaysBack 14 查询过去14天记录。
2. 多样化输出
除控制台输出,还可将结果导出为CSV文件以便分析存档。在脚本末尾添加:
$Results | Export-Csv -Path "C:\RemoteDesktopAccessRecords.csv" -NoTypeInformation
四、第三方工具:功能扩展助手
借助第三方工具可增强查看和分析能力。
1. SolarWinds Server & Application Monitor
这是一款全面的服务器监控工具,能实时监控远程桌面连接,提供详细历史记录报表。安装配置后,在界面中可查看连接时长、次数、用户活动等指标,还能设置警报。
2. ManageEngine ADAudit Plus
主要用于活动目录审计,也具备强大的远程桌面访问记录查看功能。它能深入分析登录事件,提供用户行为分析报告,帮助管理员发现安全威胁,如暴力破解、异常登录时间等。
熟练掌握上述方法,能让管理员更高效地管理Windows Server服务器,维护系统安全稳定。