我们让用户通过 RDP 连接到公司的终端服务器。有没有办法可以跟踪用户在公司外部连接的 IP 地址?
我知道事件日志中的终端服务下有可用的日志,但我没有看到其中有任何可用于公司外部远程连接的公共 IP 地址。
任何想法?
答案1
您的问题没有提供关于用户如何从外部连接到您的终端服务器的信息。我假设您的公司有一个网关,它将来自互联网的请求重定向到终端服务器。如果是这样,您可以在网关日志中获取此信息。
但是如果你的终端服务器直接连接到互联网并且由于某些原因具有公共 IP,那么也许这可以帮助你:
<#
Features:
1) This script reads the event log "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" from multiple servers and outputs the human-readable results to a CSV.
Instructions:
1) Before you run, edit this line to include one or several of your own servers.
Requirements:
1) TBD
April 8 2015 - Version 0.2
Mike Crowley
http://BaselineTechnologies.com
#>
$SessionHosts = @('Server2', 'Server3', 'Server4', 'Server5')
foreach ($Server in $SessionHosts) {
$LogFilter = @{
LogName = 'Microsoft-Windows-TerminalServices-LocalSessionManager/Operational'
ID = 21, 23, 24, 25
}
$AllEntries = Get-WinEvent -FilterHashtable $LogFilter -ComputerName $Server
$AllEntries | Foreach {
$entry = [xml]$_.ToXml()
[array]$Output += New-Object PSObject -Property @{
TimeCreated = $_.TimeCreated
User = $entry.Event.UserData.EventXML.User
IPAddress = $entry.Event.UserData.EventXML.Address
EventID = $entry.Event.System.EventID
ServerName = $Server
}
}
}
$FilteredOutput += $Output | Select TimeCreated, User, ServerName, IPAddress, @{Name='Action';Expression={
if ($_.EventID -eq '21'){"logon"}
if ($_.EventID -eq '22'){"Shell start"}
if ($_.EventID -eq '23'){"logoff"}
if ($_.EventID -eq '24'){"disconnected"}
if ($_.EventID -eq '25'){"reconnection"}
}
}
$Date = (Get-Date -Format s) -replace ":", "."
$FilteredOutput | Sort TimeCreated | Export-Csv $env:USERPROFILE\Desktop\$Date`_RDP_Report.csv -NoTypeInformation
#End
此 powershell 脚本来自Microsoft Technet 网站解析有关 RDP 会话信息(包括客户端 IP)的事件日志,并将人性化的结果输出为 CSV。
答案2
如果有人正在寻找失败的 RDP 连接尝试的 IP 地址(例如,以防您的 Web 服务器遭受暴力攻击),则 Windows 事件日志为,Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational
事件 ID 为140
(记录为警告):
A connection from the client computer with an IP address of 123.123.123.123 failed because the user name or password is not correct.
然后,您可以编写一个脚本,让防火墙阻止多次尝试失败的 IP 地址。