In diesem Artikel beschreiben wir, wie Sie die RDP-Verbindungsprotokolle in Home windows abrufen und prüfen. Die RDP-Verbindungsprotokolle ermöglichen Administratoren von RDS-Terminalservern, Informationen darüber zu erhalten, welche Benutzer sich beim Server angemeldet haben, als sich ein bestimmter RDP-Benutzer anmeldete und die Sitzung beendete, und von welchem Gerät (DNS-Identify oder IP-Adresse) sich der Benutzer anmeldete.
Der Artikel gilt für die Analyse von RDP-Protokollen sowohl für Home windows Server 2022/2019/2016/2012R2 als auch für Desktop-Editionen (Home windows 11, 10 und 8.1).
RDP-Verbindungsereignisse in der Home windows-Ereignisanzeige
Wenn ein Benutzer eine Verbindung zu einem Remotedesktop-fähigen oder RDS-Host herstellt, werden Informationen zu diesen Ereignissen in den Protokollen der Ereignisanzeige gespeichert (eventvwr.msc
). Berücksichtigen Sie die Hauptphasen der RDP-Verbindung und zugehörige Ereignisse in der Ereignisanzeige, die für den Administrator von Interesse sein könnten
- Netzwerkverbindung;
- Authentifizierung;
- Einloggen;
- Sitzung trennen/erneut verbinden;
- Abmelden.
Netzwerkverbindung – Herstellen einer Netzwerkverbindung zu einem Server vom RDP-Shopper des Benutzers. Es ist das Ereignis mit der EventID 1149 (Far flung Desktop Products and services: Person authentication succeeded
). Wenn dieses Ereignis gefunden wird, bedeutet dies nicht, dass die Benutzerauthentifizierung erfolgreich conflict. Dieses Protokoll befindet sich unter „Anwendungs- und Dienstprotokolle -> Microsoft -> Home windows -> Terminal-Dienste-RemoteConnectionManager > Betriebsbereit“. Aktivieren Sie den Protokollfilter für dieses Ereignis (klicken Sie mit der rechten Maustaste auf das Protokoll -> Filter out Present Log -> EventId 1149).
Sie können alle RDP-Verbindungsversuche mit PowerShell auflisten:
$RDPAuths = Get-WinEvent -LogName 'Microsoft-Home windows-TerminalServices-RemoteConnectionManager/Operational' -FilterXPath '<QueryList><Question Identity="0"><Make a choice>*[System[EventID=1149]]</Make a choice></Question></QueryList>'
[xml[]]$xml=$RDPAuths|Foreach{$_.ToXml()}
$EventData = Foreach ($tournament in $xml.Tournament)
{ New-Object PSObject -Belongings @{
TimeCreated = (Get-Date ($tournament.Gadget.TimeCreated.SystemTime) -Layout 'yyyy-MM-dd hh:mm:ss Okay')
Person = $tournament.UserData.EventXML.Param1
Area = $tournament.UserData.EventXML.Param2
Shopper = $tournament.UserData.EventXML.Param3
}
} $EventData | FT
Dann erhalten Sie eine Ereignisliste mit dem Verlauf aller RDP-Verbindungen zu diesem Server. Die Protokolle enthalten einen Benutzernamen, eine Domäne (in diesem Fall wird die Authentifizierung auf Netzwerkebene verwendet; wenn NLA deaktiviert ist, sieht die Ereignisbeschreibung anders aus) und die IP-Adresse des Computer systems des Benutzers.
Authentifizierung zeigt an, ob ein RDP-Benutzer erfolgreich am Server authentifiziert wurde oder nicht. Das Protokoll befindet sich unter Home windows -> Sicherheit. Sie könnten additionally an den Ereignissen mit der EventID interessiert sein 4624 (An account was once effectively logged on
) oder 4625 (An account failed to go browsing
).
Bitte achten Sie auf die Anmeldetyp Wert in der Ereignisbeschreibung.
- Anmeldetyp = 10 oder 3 — wenn der Remotedesktopdienst verwendet wurde, um während der Anmeldung eine neue Sitzung zu erstellen;
- Anmeldetyp = 7bedeutet, dass sich ein Benutzer wieder mit der bestehenden RDP-Sitzung verbunden hat;
- Anmeldetyp = 5 – RDP-Verbindung zur Serverkonsole (im Modus mstsc.exe /admin).
In diesem Fall ist der Benutzername in der Ereignisbeschreibung im enthalten Kontobezeichnung Feld, der Computername in der Arbeitsstationsnameund die Benutzer-IP in der Quellnetzwerkadresse.
Bitte beachten Sie den Wert der Anmelde-ID Bereich. Dies ist eine eindeutige RDP-Sitzungskennung des Benutzers, mit der die weiteren Aktivitäten des Benutzers verfolgt werden können. Wenn jedoch eine RDP-Sitzung getrennt wird und ein Benutzer erneut eine Verbindung herstellt, wird dem Benutzer eine neue LogonID zugewiesen (obwohl die RDP-Sitzung dieselbe bleibt).
Mit diesem PowerShell-Befehl können Sie eine Liste erfolgreicher RDP-Authentifizierungsereignisse (EventID 4624) abrufen:
Get-EventLog safety -after (Get-date -hour 0 -minute 0 -second 0) | ?{$_.eventid -eq 4624 -and $_.Message -match 'logon kind:s+(10)s'} | Out-GridView
Einloggen bezieht sich auf eine RDP-Anmeldung bei Home windows. Ereignis-ID 21 – Dieses Ereignis tritt auf, nachdem ein Benutzer erfolgreich authentifiziert wurde (Far flung Desktop Products and services: Consultation logon succeeded
). Diese Ereignisse befinden sich in „Anwendungs- und Dienstprotokolle -> Microsoft -> Home windows -> TerminalServices-LocalSessionManager -> Betriebsbereit“. Wie Sie sehen können, finden Sie hier die ID einer Benutzer-RDP-Sitzung — Consultation-ID.
Ereignis-ID – 21 (Far flung Desktop Products and services: Shell get started notification gained
) zeigt an, dass die Explorer-Shell erfolgreich gestartet wurde (der Home windows-Desktop erscheint in der RDP-Sitzung des Benutzers).
Sitzung trennen/erneut verbinden – Sitzungstrennungs- und Wiederverbindungsereignisse haben unterschiedliche IDs, je nachdem, was once die Benutzertrennung verursacht hat (Trennung aufgrund von Inaktivität, die in Timeouts für RDP-Sitzungen festgelegt wurde, die Possibility „Trennen“ wurde vom Benutzer in der Sitzung ausgewählt, RDP-Sitzung wurde von einem anderen Benutzer oder einem Administrator beendet, and many others.). Sie finden diese Ereignisse in der Ereignisanzeige unter „Anwendungs- und Dienstprotokolle -> Microsoft -> Home windows -> TerminalServices-LocalSessionManager -> Operational“. Betrachten wir die RDP-Ereignis-IDs, die nützlich sein könnten:
- Ereignis-ID – 24 (
Far flung Desktop Products and services: Consultation has been disconnected
) – ein Benutzer hat die RDP-Sitzung getrennt; - Ereignis-ID – 25 (
Far flung Desktop Products and services: Consultation reconnection succeeded
) – ein Benutzer hat sich wieder mit der bestehenden RDP-Sitzung auf dem Server verbunden; - Ereignis-ID – 39 (
Consultation <A> has been disconnected via consultation <B>
) – ein Benutzer hat die RDP-Sitzung getrennt, indem er die entsprechende Menüoption ausgewählt hat (anstatt nur das RDP-Shopper-Fenster zu schließen). Wenn die Sitzungs-IDs unterschiedlich sind, wurde ein Benutzer von einem anderen Benutzer (oder Administrator) getrennt; - Ereignis-ID – 40 (
Consultation <A> has been disconnected, reason why code <B>
). Hier müssen Sie den Trennungsursachencode in der Ereignisbeschreibung überprüfen. Zum Beispiel:- Ursachencode 0 (
No more information is to be had
) bedeutet, dass ein Benutzer gerade das RDP-Shopper-Fenster geschlossen hat; - Ursachencode 5 (
The buyer’s connection was once changed via every other connection
) bedeutet, dass sich ein Benutzer wieder mit der vorherigen RDP-Sitzung verbunden hat; - Ursachencode 11 (
Person task has initiated the disconnect
) ein Benutzer im Startmenü auf die Schaltfläche Trennen geklickt hat.
- Ursachencode 0 (
Ereignis-ID 4778 in Home windows -> Sicherheitsprotokoll (Eine Sitzung wurde wieder mit einer Home windows Station verbunden). Ein Benutzer hat sich wieder mit einer RDP-Sitzung verbunden (einem Benutzer wird eine neue LogonID zugewiesen).
Ereignis-ID 4779 im Protokoll „Home windows -> Sicherheit“ (A consultation was once disconnected from a Window Station
). Ein Benutzer wurde von einer RDP-Sitzung getrennt.
Abmelden bezieht sich auf das Ende einer Benutzersitzung. Es wird als Ereignis mit der EventID protokolliert 23 (Far flung Desktop Products and services: Consultation logoff succeeded
) unter „Anwendungs- und Dienstprotokolle -> Microsoft -> Home windows -> TerminalServices-LocalSessionManager -> Operational“.
Gleichzeitig die EventID 4634 (An account was once logged off
) erscheint im Sicherheitsprotokoll.
Die EventID 9009 (The Desktop Window Supervisor has exited with code <X>
) im Systemprotokoll bedeutet, dass ein Benutzer die Abmeldung von der RDP-Sitzung initiiert hat, wobei sowohl das Fenster als auch die grafische Shell des Benutzers beendet wurden.
Ereignis-ID 4647 — Benutzerinitiierte Abmeldung
Abrufen des Remotedesktop-Anmeldeverlaufs mit PowerShell
Hier ist ein kurzes PowerShell-Skript, das den Verlauf aller RDP-Verbindungen für den aktuellen Tag aus den Ereignisprotokollen des Terminal-RDS-Servers auflistet. Die resultierende Tabelle zeigt die Verbindungszeit, die IP-Adresse des Shoppers (DNS-Computername) und den entfernten Benutzernamen (bei Bedarf können Sie andere LogonTypes in den Bericht aufnehmen).
Get-EventLog -LogName Safety -after (Get-date -hour 0 -minute 0 -second 0)| ?{(4624,4778) -contains $_.EventID -and $_.Message -match 'logon kind:s+(10)s'}| %{
(new-object -Kind PSObject -Belongings @{
TimeGenerated = $_.TimeGenerated
ClientIP = $_.Message -replace '(?smi).*Supply Community Deal with:s+([^s]+)s+.*','$1'
UserName = $_.Message -replace '(?smi).*ssAccount Identify:s+([^s]+)s+.*','$1'
UserDomain = $_.Message -replace '(?smi).*ssAccount Area:s+([^s]+)s+.*','$1'
LogonType = $_.Message -replace '(?smi).*Logon Kind:s+([^s]+)s+.*','$1'
})
} | kind TimeGenerated -Descending | Make a choice TimeGenerated, ClientIP `
, @{N='Username';E={'{0}{1}' -f $_.UserDomain,$_.UserName}} `
, @{N='LogType';E={
transfer ($_.LogonType) {
2 {'Interactive - native logon'}
3 {'Community connection to shared folder)'}
4 {'Batch'}
5 {'Carrier'}
7 {'Liberate (after screensaver)'}
8 {'NetworkCleartext'}
9 {'NewCredentials (native impersonation procedure beneath current connection)'}
10 {'RDP'}
11 {'CachedInteractive'}
default {"LogType No longer Recognised: $($_.LogonType)"}
}
}}
Sie können RDP-Verbindungsprotokolle aus der Ereignisanzeige in eine CSV-Datei exportieren (zur weiteren Analyse in einer Excel-Tabelle). Sie können das Protokoll über die GUI der Ereignisanzeige (vorausgesetzt, die Protokolle der Ereignisanzeige werden nicht gelöscht) oder über die Eingabeaufforderung exportieren:
WEVTUtil query-events Safety > c:psrdp_security_log.txt
Oder mit PowerShell:
get-winevent -logname "Microsoft-Home windows-TerminalServices-LocalSessionManager/Operational" | Export-Csv c:psrdp_connection_log.txt -Encoding UTF8
Wenn Ihre Benutzer über das Remotedesktop-Gateway eine Verbindung zu RDS-Hosts des Unternehmens herstellen, können Sie die Benutzerverbindungsprotokolle in der Microsoft-Home windows-TerminalServices-Gateway log durch die EventID 302. Das folgende PowerShell-Skript zeigt beispielsweise den Verbindungsverlauf des angegebenen Benutzers über das RD-Gateway an:
$rdpusername="b.smith"
$homes = @(
@{n='Person';e={$_.Homes[0].Price}},
@{n='Supply IP Adress';e={$_.Homes[1].Price}},
@{n='TimeStamp';e={$_.TimeCreated}}
@{n='Goal RDP host';e={$_.Homes[3].Price}}
)
(Get-WinEvent -FilterHashTable @{LogName="Microsoft-Home windows-TerminalServices-Gateway/Operational";ID='302'} | Make a choice-Object $homes) -match $rdpusername
- 300 — Der Benutzer NAME auf dem Shopper-Pc DEVICE erfüllte die Anforderungen der Ressourcenautorisierungsrichtlinie und conflict daher berechtigt, eine Verbindung zur Ressource RDPHOST herzustellen;
- 302 — Der Benutzer NAME auf dem Shopper-Pc DEVICE, verbunden mit der Ressource RDPHOST;
- 303 — Der Benutzer NAME auf dem Shopper-Pc DEVICE, getrennt von der folgenden Netzwerkressource: RDPHOST. Bevor der Benutzer die Verbindung trennte, hat der Shopper X Bytes übertragen und X Bytes empfangen. Die Sitzungsdauer des Shoppers betrug X Sekunden.
Sie können die Liste der aktuellen Far flung-Sitzungen auf Ihrem RDS-Host mit dem folgenden Befehl anzeigen:
qwinsta
Der Befehl gibt die Sitzungs-ID, den BENUTZERNAMEN und den Sitzungsstatus (Aktiv/Verbindung trennen) zurück. Dieser Befehl ist nützlich, wenn Sie die RDP-Sitzungs-ID des Benutzers abrufen müssen, wenn Sie Shadow-Remotedesktopverbindungen verwenden.
Sie können die Liste der laufenden Prozesse in der spezifischen RDP-Sitzung anzeigen (die Sitzungs-ID wird angegeben):
qprocess /identification:5
Ausgehende RDP-Verbindungsprotokolle in Home windows
Sie können auch ausgehende RDP-Verbindungsprotokolle auf der Clientseite anzeigen. Sie sind im folgenden Ereignisprotokoll verfügbar: Anwendungs- und Dienstprotokolle -> Microsoft -> Home windows -> TerminalServices-ClientActiveXCore -> Microsoft-Home windows-TerminalServices-RDPClient -> Operational.
Beispiel: EventID 1102 tritt auf, wenn ein Benutzer eine Verbindung zu einem Far flung-Home windows Server-RDS-Host oder einem Home windows 10/11-Pc mit aktiviertem RDP herstellt (Desktop-Home windows-Editionen unterstützen auch mehrere gleichzeitige RDP-Verbindungen).
The buyer has initiated a multi-transport connection to the server 192.168.13.201.
Das folgende RDP-Skript zeigt den Verlauf der RDP-Shopper-Verbindungen auf dem aktuellen Pc an:
$homes = @(
@{n='TimeStamp';e={$_.TimeCreated}}
@{n='LocalUser';e={$_.UserID}}
@{n='Goal RDP host';e={$_.Homes[1].Price}}
)
Get-WinEvent -FilterHashTable @{LogName="Microsoft-Home windows-TerminalServices-RDPClient/Operational";ID='1102'} | Make a choice-Object $homes
Das Skript gibt die SIDs der Benutzer zurück, die RDP-Verbindungen auf diesem Pc initiiert haben, sowie die DNS-Namen/IP-Adressen der Remotedesktop-Hosts, mit denen sich die Benutzer verbunden haben. Sie können SIDs wie folgt in Benutzernamen umwandeln.
https://aspiringsysadmin.com/