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

  1. Netzwerkverbindung;
  2. Authentifizierung;
  3. Einloggen;
  4. Sitzung trennen/erneut verbinden;
  5. 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).

Windows-Ereignisprotokoll Terminal-Services-RemoteConnectionManager-Filterung

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

Powershell-Skript: RDP-Verbindungsereignisse abrufen

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.

Ereignis-ID 1149 – Remotedesktopdienste: Benutzerauthentifizierung erfolgreich

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).

Sicherheitsprotokoll: RDP-Anmeldeereignis mit dem Benutzernamen und der IP-Adresse des Remote-Clients

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

Listen Sie das erfolgreiche RDP-Authentifizierungsereignis mit einer Ereignis-ID 4624 auf

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 – Remotedesktopdienste: Sitzungsanmeldung erfolgreich

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.

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“.

Ereignis-ID 23 – Remotedesktopdienste: Sitzungsabmeldung erfolgreich

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)"}
}
}}

Powershell: Listen Sie die heutigen RDP-Anmeldungen mit einer IP und einem Benutzernamen auf

Mit dieser Methode können Sie RDP-Verbindungsprotokolle auf einem eigenständigen RDSH-Server sammeln und analysieren. Wenn Sie mehrere Server in der RDS-Farm haben, können Sie jeden von ihnen mit diesem Skript abfragen oder Protokolle von einem Verwaltungsserver mit der Rolle „Remotedesktop-Verbindungsbroker“ abrufen.

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

rd-Gateway-Benutzerverbindungsprotokolle

Sie können die folgenden RD Gateway-Benutzerverbindungsereignisse im Microsoft-Home windows-TerminalServices-Gateway-Ereignisprotokoll überprüfen:

  • 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.

Qwinsta - listet RDP-Sitzungen und Benutzernamen auf

Sie können die Liste der laufenden Prozesse in der spezifischen RDP-Sitzung anzeigen (die Sitzungs-ID wird angegeben):

qprocess /identification:5

qprocess - Prozessliste für eine RDP-Sitzung abrufen

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.

Microsoft-Windows-TerminalServices-RDPClient-Verbindungsereignis in Windows

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

RDP-Client-Verbindungsereignisse

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/