Windows

Windows’ta Uzak Masaüstü Bağlantı Günlüklerini İzleme ve Analiz Etme

Windowsta Uzak Masaustu Baglanti Gunluklerini Izleme ve Analiz Etme4
Share

Bu makalede, sanal sunucu bulut sunucu veya fiziksel sunucuda işletim sistemi olarak windows server ailesi kullananlar için, Windows’ta RDP bağlantı günlüklerinin nasıl alınacağını ve denetleneceğini açıklayacağız. RDP bağlantı günlükleri, RDS terminal sunucuları yöneticilerinin, belirli bir RDP kullanıcısı oturum açıp oturumu sonlandırdığında sunucuda hangi kullanıcıların oturum açtığı ve kullanıcının hangi cihazdan (DNS adı veya IP adresi) oturum açtığı hakkında bilgi almasına olanak tanır.

Windows Olay Görüntüleyicisinde RDP Bağlantı Olayları

Bir kullanıcı Uzak Masaüstü etkinleştirilmiş veya RDS ana bilgisayarına bağlandığında, bu olaylarla ilgili bilgiler Olay Görüntüleyici günlüklerinde ( eventvwr.msc) depolanır. Olay Görüntüleyici’de yöneticinin ilgisini çekebilecek RDP bağlantısının ana aşamalarını ve ilgili olayları göz önünde bulundurun

  1. Ağ bağlantısı;
  2. kimlik doğrulama;
  3. oturum açma;
  4. Oturum Bağlantısını Kes/Yeniden Bağlan;
  5. oturumu Kapat

Ağ Bağlantısı – kullanıcının RDP istemcisinden bir sunucuya ağ bağlantısı kurulması. EventID 1149 (Remote Desktop Services: User authentication succeeded) ile olaydır. Bu olay bulunursa, kullanıcı kimlik doğrulamasının başarılı olduğu anlamına gelmez. Bu günlük, “Uygulamalar ve Hizmet Günlükleri -> Microsoft -> Windows -> Terminal-Services-RemoteConnectionManager > Operasyonel” altında bulunur. Bu olay için günlük filtresini etkinleştirin (günlüğe sağ tıklayın -> Geçerli Günlüğü Filtrele -> EventId 1149 ).

Windowsta Uzak Masaustu Baglanti Gunluklerini Izleme ve Analiz Etme

PowerShell ile tüm RDP bağlantı denemelerini listeleyebilirsiniz:

$RDPAuths = Get-WinEvent -LogName 'Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational' -FilterXPath ''
[xml[]]$xml=$RDPAuths|Foreach{$_.ToXml()}
$EventData = Foreach ($event in $xml.Event)
{ New-Object PSObject -Property @{
TimeCreated = (Get-Date ($event.System.TimeCreated.SystemTime) -Format 'yyyy-MM-dd hh:mm:ss K')
User = $event.UserData.EventXML.Param1
Domain = $event.UserData.EventXML.Param2
Client = $event.UserData.EventXML.Param3
}
} $EventData | FT

Windowsta Uzak Masaustu Baglanti Gunluklerini Izleme ve Analiz Etme2

Ardından, bu sunucuya yapılan tüm RDP bağlantılarının geçmişini içeren bir olay listesi alacaksınız. Günlükler bir kullanıcı adı, bir etki alanı (bu durumda Ağ Düzeyinde Kimlik Doğrulama kullanılır; NLA devre dışıysa olay açıklaması farklı görünür) ve kullanıcının bilgisayarının IP adresini sağlar.

Windowsta Uzak Masaustu Baglanti Gunluklerini Izleme ve Analiz Etme3

Kimlik doğrulama , bir RDP kullanıcısının sunucuda başarıyla doğrulanıp doğrulanmadığını gösterir. Günlük, Windows -> Güvenlik altında bulunur. Bu nedenle EventID 4624 (An account was successfully logged on) veya 4625 (olan olaylar ilginizi çekebilirAn account failed to log on.

Lütfen olay açıklamasında LogonType değerine dikkat edin .

  • LogonType = 10 veya 3 — oturum açma sırasında yeni bir oturum oluşturmak için Uzak Masaüstü hizmeti kullanılmışsa;
  • LogonType = 7 , bir kullanıcının mevcut RDP oturumuna yeniden bağlandığı anlamına gelir;
  • LogonType = 5 – Sunucu konsoluna RDP bağlantısı (mstsc.exe /admin modunda).

Windowsta Uzak Masaustu Baglanti Gunluklerini Izleme ve Analiz Etme4

Bu durumda, kullanıcı adı Hesap Adı alanında olay açıklamasında, bilgisayar adı İş İstasyonu Adında ve kullanıcı IP’si Kaynak Ağ Adresinde bulunur .

Lütfen LogonID alanının değerini not edin . Bu, kullanıcının diğer etkinliğini izlemeye yardımcı olan benzersiz bir kullanıcı RDP oturum tanımlayıcısıdır. Ancak, bir RDP oturumunun bağlantısı kesilir ve bir kullanıcı buna yeniden bağlanırsa, kullanıcıya yeni bir LogonID atanır (RDP oturumu aynı kalsa da).

Bu PowerShell komutunu kullanarak başarılı RDP kimlik doğrulama olaylarının (EventID 4624) bir listesini alabilirsiniz:


Get-EventLog security -after (Get-date -hour 0 -minute 0 -second 0) | ?{$_.eventid -eq 4624 -and $_.Message -match 'logon type:\s+(10)\s'} | Out-GridView

Windowsta Uzak Masaustu Baglanti Gunluklerini Izleme ve Analiz Etme5

Oturum açma, Windows’ta RDP oturumaçma anlamına gelirEventID 21 – bu olay, bir kullanıcının kimliği başarıyla doğrulandıktan sonra görünür (Remote Desktop Services: Session logon succeeded). Bu olaylar “Applications and Services Logs -> Microsoft -> Windows -> TerminalServices-LocalSessionManager -> Operational” bölümünde yer almaktadır. Gördüğünüz gibi, burada bir kullanıcı RDP oturumunun kimliğini bulabilirsiniz — Oturum Kimliği .

Windowsta Uzak Masaustu Baglanti Gunluklerini Izleme ve Analiz Etme6

EventID – 21  ( Remote Desktop Services: Shell start notification received), Explorer kabuğunun başarıyla başlatıldığını gösterir (Windows masaüstü, kullanıcının RDP oturumunda görünür).

Oturum Bağlantısını Kes/Yeniden Bağlan – oturum bağlantısının kesilmesi ve yeniden bağlanma olaylarının, kullanıcının bağlantısının kesilmesine neden olan şeye bağlı olarak farklı kimlikleri vardır ( RDP oturumları için zaman aşımlarında ayarlanan hareketsizlik nedeniyle bağlantının kesilmesi , Oturumda kullanıcı tarafından Bağlantıyı Kes seçeneği seçilmiş, RDP oturumu başka bir kullanıcı tarafından sonlandırılmıştır) veya bir yönetici vb.). Bu olayları Olay Görüntüleyicide “Uygulamalar ve Hizmet Günlükleri -> Microsoft -> Windows -> TerminalServices-LocalSessionManager -> Operasyonel” altında bulabilirsiniz. Yararlı olabilecek RDP Olay Kimliklerini ele alalım:

  • EventID – 24 ( Remote Desktop Services: Session has been disconnected) –bir kullanıcının RDP oturumuyla bağlantısı kesildi;
  • EventID – 25 ( Remote Desktop Services: Session reconnection succeeded) – bir kullanıcı sunucudaki mevcut RDP oturumuna yeniden bağlandı;
  • EventID – 39 ( Session <A> has been disconnected by session <B>) – bir kullanıcı ilgili menü seçeneğini seçerek (sadece RDP istemci penceresini kapatmak yerine) RDP oturumuyla bağlantısını kesti. Oturum kimlikleri farklıysa, bir kullanıcının bağlantısı başka bir kullanıcı (veya yönetici) tarafından kesilmiştir;
  • Olay Kimliği – 40 ( Session <A> has been disconnected, reason code <B>). Burada olay açıklamasındaki bağlantı kesme neden kodunu kontrol etmelisiniz. Örneğin:
    • neden kodu 0 ( No additional information is available), bir kullanıcının RDP istemci penceresini henüz kapattığı anlamına gelir;
    • neden kodu 5 ( The client’s connection was replaced by another connection), bir kullanıcının önceki RDP oturumuna yeniden bağlandığı anlamına gelir;
    • neden kodu 11 ( User activity has initiated the disconnect) bir kullanıcı başlat menüsündeki Bağlantıyı Kes düğmesini tıkladı.

Windows’ta EventID 4778 -> Güvenlik günlüğü (Bir oturum bir Window Station’a yeniden bağlandı). Bir kullanıcı bir RDP oturumuna yeniden bağlandı (bir kullanıcıya yeni bir LogonID atanır).

“Windows -> Güvenlik” günlüğünde ( ) EventID 4779 . A session was disconnected from a Window StationBir kullanıcının RDP oturumuyla bağlantısı kesildi.

Oturum kapatma , bir kullanıcı oturumunun sonunu ifade eder. “Applications and Services Logs -> Microsoft -> Windows -> TerminalServices-LocalSessionManager -> Operational” altında EventID 23 (ile olay olarakRemote Desktop Services: Session logoff succeeded

Windowsta Uzak Masaustu Baglanti Gunluklerini Izleme ve Analiz Etme7

Aynı zamanda Güvenlik günlüğünde EventID 4634  ( ) görünür.An account was logged off

Sistem günlüğündeki EventID 9009  ( The Desktop Window Manager has exited with code <X>), bir kullanıcının hem pencere hem de kullanıcının grafik kabuğu sonlandırıldığında RDP oturumundan oturumu kapatmayı başlattığı anlamına gelir.

EventID 4647 — Kullanıcı tarafından başlatılan oturum kapatma

PowerShell ile Uzak Masaüstü Oturum Açma Geçmişini Alma

İşte, terminal RDS sunucusu olay günlüklerinden o gün için tüm RDP bağlantılarının geçmişini listeleyen kısa bir PowerShell betiği. Ortaya çıkan tablo bağlantı süresini, istemcinin IP adresini (DNS bilgisayar adı) ve uzak kullanıcı adını (gerekirse rapora diğer LogonType’ları dahil edebilirsiniz) gösterir.


Get-EventLog -LogName Security -after (Get-date -hour 0 -minute 0 -second 0)| ?{(4624,4778) -contains $_.EventID -and $_.Message -match 'logon type:\s+(10)\s'}| %{
(new-object -Type PSObject -Property @{
TimeGenerated = $_.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'
})
} | sort TimeGenerated -Descending | Select TimeGenerated, ClientIP `
, @{N='Username';E={'{0}\{1}' -f $_.UserDomain,$_.UserName}} `
, @{N='LogType';E={
switch ($_.LogonType) {
2 {'Interactive - local logon'}
3 {'Network connection to shared folder)'}
4 {'Batch'}
5 {'Service'}
7 {'Unlock (after screensaver)'}
8 {'NetworkCleartext'}
9 {'NewCredentials (local impersonation process under existing connection)'}
10 {'RDP'}
11 {'CachedInteractive'}
default {"LogType Not Recognised: $($_.LogonType)"}
}
}}

Windowsta Uzak Masaustu Baglanti Gunluklerini Izleme ve Analiz Etme8

Bu yöntem, bağımsız bir RDSH sunucusunda RDP bağlantı günlüklerini toplamanıza ve ayrıştırmanıza olanak tanır . RDS grubunda birden çok sunucunuz varsa, her birini bu komut dosyasıyla sorgulayabilir veya Uzak Masaüstü Bağlantı Aracısı rolüne sahip bir yönetim sunucusundan günlükler alabilirsiniz .

RDP bağlantı günlüklerini Olay Görüntüleyici’den bir CSV dosyasına aktarabilirsiniz (bir Excel elektronik tablosunda daha fazla analiz için). Günlüğü Olay Görüntüleyici GUI’sinden (Olay Görüntüleyici günlüklerinin temizlenmediğini varsayarak) veya komut istemi aracılığıyla dışa aktarabilirsiniz:


WEVTUtil query-events Security > c:\ps\rdp_security_log.txt

Veya PowerShell ile:

get-winevent -logname "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" | Export-Csv c:\ps\rdp_connection_log.txt -Encoding UTF8

Kullanıcılarınız Uzak Masaüstü Ağ Geçidi üzerinden kurumsal RDS ana bilgisayarlarına bağlanırsa , EventID 302 ile Microsoft-Windows-TerminalServices-Gateway günlüğündeki kullanıcı bağlantı günlüklerini kontrol edebilirsiniz . Örneğin, aşağıdaki PowerShell betiği, belirtilen kullanıcının RD Ağ Geçidi aracılığıyla bağlantı geçmişini görüntüler:

$rdpusername="b.smith"
$properties = @(
@{n='User';e={$_.Properties[0].Value}},
@{n='Source IP Adress';e={$_.Properties[1].Value}},
@{n='TimeStamp';e={$_.TimeCreated}}
@{n='Target RDP host';e={$_.Properties[3].Value}}
)
(Get-WinEvent -FilterHashTable @{LogName='Microsoft-Windows-TerminalServices-Gateway/Operational';ID='302'} | Select-Object $properties) -match $rdpusername

Windowsta Uzak Masaustu Baglanti Gunluklerini Izleme ve Analiz Etme9

Microsoft-Windows-TerminalServices-Gateway olay günlüğünde aşağıdaki RD Ağ Geçidi kullanıcı bağlantısı olaylarını kontrol edebilirsiniz:

 

  • 300 — CİHAZ istemci bilgisayarındaki NAME kullanıcısı, kaynak yetkilendirme ilkesi gereksinimlerini karşıladı ve bu nedenle RDPHOST kaynağına bağlanma yetkisine sahipti;
  • 302 — DEVICE istemci bilgisayarındaki kullanıcı ADI, RDPHOST kaynağına bağlı;
  • 303 — DEVICE istemci bilgisayarındaki NAME kullanıcısının şu ağ kaynağıyla bağlantısı kesildi: RDPHOST. Kullanıcının bağlantısı kesilmeden önce, istemci X bayt aktardı ve X bayt aldı. İstemci oturumu süresi X saniyeydi.

Şu komutla RDS ana makinenizde mevcut uzak oturumların listesini görüntüleyebilirsiniz:

qwinsta

Komut, oturum kimliğini, KULLANICI ADI ve oturum durumunu (Etkin/Bağlantıyı Kes) döndürür. Bu komut, gölge Uzak Masaüstü bağlantılarını kullanırken kullanıcının RDP oturum kimliğini almanız gerektiğinde kullanışlıdır .

Windowsta Uzak Masaustu Baglanti Gunluklerini Izleme ve Analiz Etme10

Belirli RDP oturumunda çalışan işlemlerin listesini görüntüleyebilirsiniz (oturum kimliği belirtilir):

qprocess /id:5

Windowsta Uzak Masaustu Baglanti Gunluklerini Izleme ve Analiz Etme11

Windows’ta Giden RDP Bağlantı Günlükleri

Ayrıca, giden RDP bağlantı günlüklerini istemci tarafında da görüntüleyebilirsiniz. Aşağıdaki olay günlüğünde bulunurlar: Uygulama ve Hizmet Günlükleri -> Microsoft -> Windows -> TerminalServices-ClientActiveXCore -> Microsoft-Windows-TerminalServices-RDPClient -> Operasyonel.

Örneğin, bir kullanıcı uzak bir Windows Server RDS ana bilgisayarına veya RDP etkinleştirilmiş bir Windows 10/11 bilgisayarına bağlandığında EventID 1102 oluşur (masaüstü Windows sürümleri ayrıca birden çok eşzamanlı RDP bağlantısını destekler ).

İstemci, 192.168.13.201 sunucusuna çoklu aktarım bağlantısı başlattı.
Windowsta Uzak Masaustu Baglanti Gunluklerini Izleme ve Analiz Etme12

Aşağıdaki RDP komut dosyası, geçerli bilgisayardaki RDP istemci bağlantılarının geçmişini görüntüler:

$properties = @(
@{n='TimeStamp';e={$_.TimeCreated}}
@{n='LocalUser';e={$_.UserID}}
@{n='Target RDP host';e={$_.Properties[1].Value}}
)
Get-WinEvent -FilterHashTable @{LogName='Microsoft-Windows-TerminalServices-RDPClient/Operational';ID='1102'} | Select-Object $properties

Windowsta Uzak Masaustu Baglanti Gunluklerini Izleme ve Analiz Etme13

 

Komut dosyası, bu bilgisayarda RDP bağlantılarını başlatan kullanıcıların SID’lerini ve ayrıca kullanıcıların bağlandığı Uzak Masaüstü ana bilgisayarlarının DNS adlarını/IP adreslerini döndürür. SID’leri aşağıdaki gibi kullanıcı adlarına dönüştürebilirsiniz .