ตรวจสอบประวัติการเข้าสู่ระบบของผู้ใช้ในโดเมน Active Directory ด้วย PowerShell
มีเครื่องมือต่างๆ มากมายในการรับข้อมูลเกี่ยวกับเวลาที่ผู้ใช้เข้าสู่ระบบโดเมน Active Directory เวลาของการตรวจสอบผู้ใช้ที่สำเร็จครั้งล่าสุดในโดเมน AD อาจได้รับจากแอตทริบิวต์ lastLogon ของผู้ใช้ ซึ่งจะอัปเดตเฉพาะในตัวควบคุมโดเมนที่ผู้ใช้ได้รับการรับรองความถูกต้อง) หรือ lastLogonTimpestamp แอตทริบิวต์ (มีการจำลองแบบระหว่าง DCs ในโดเมน แต่จะเป็นค่าเริ่มต้นใน 14 วันเท่านั้น) คุณสามารถตรวจสอบค่าของแอตทริบิวต์ผู้ใช้โดยใช้โปรแกรมแก้ไขแอตทริบิวต์ AD หรือด้วย Get-ADUSer PowerShell cmdlet อย่างไรก็ตาม บางครั้งคุณอาจต้องการดูประวัติกิจกรรมของผู้ใช้ (การเข้าสู่ระบบ) ในโดเมนเป็นระยะเวลานาน
คุณสามารถรับข้อมูลเกี่ยวกับเหตุการณ์การเข้าสู่ระบบของผู้ใช้ที่สำเร็จ (การรับรองความถูกต้อง) จากบันทึกของตัวควบคุมโดเมน ในบทความนี้ เราจะแสดงวิธีติดตามประวัติการเข้าสู่ระบบของผู้ใช้ในโดเมนโดยใช้ PowerShell ด้วยวิธีนี้ คุณจะได้รับประวัติที่สมบูรณ์ของกิจกรรมของผู้ใช้ในโดเมน เวลาที่ผู้ใช้เริ่มทำงานและเข้าสู่ระบบคอมพิวเตอร์
นโยบายการตรวจสอบการเข้าสู่ระบบของผู้ใช้ Active Directory
ในการสั่งซื้อข้อมูลเกี่ยวกับการเข้าสู่ระบบที่สำเร็จ/ล้มเหลวที่จะรวบรวมในบันทึกของตัวควบคุมโดเมน ให้เปิดใช้งานนโยบายการตรวจสอบเหตุการณ์การเข้าสู่ระบบของผู้ใช้
เปิดคอนโซลการจัดการ GPO ของโดเมน (
GPMC.msc);
-
เปิดการตั้งค่า GPO นโยบายโดเมนเริ่มต้น และไปที่การกำหนดค่าคอมพิวเตอร์ -> นโยบาย -> การตั้งค่า Windows -> การตั้งค่าความปลอดภัย -> การกำหนดค่านโยบายการตรวจสอบขั้นสูง -> นโยบายการตรวจสอบ -> เข้าสู่ระบบ/ออกจากระบบ;
เปิดใช้นโยบายการตรวจสอบ 2 นโยบาย (การตรวจสอบการเข้าสู่ระบบและ การตรวจสอบกิจกรรมการเข้าสู่ระบบ/การออกจากระบบอื่นๆ) เลือกตัวเลือก สำเร็จ และ ล้มเหลว ในการตั้งค่านโยบายการตรวจสอบเพื่อลงทะเบียนทั้งการเข้าสู่ระบบที่สำเร็จและล้มเหลวในบันทึกความปลอดภัยบน DC และคอมพิวเตอร์
บันทึกการเปลี่ยนแปลงใน GPO และอัปเดตการตั้งค่านโยบายบนตัวควบคุมโดเมนของคุณโดยใช้คำสั่งต่อไปนี้: gpupdate /force (หรือรอ 90 นาที เวลาการจำลองแบบ DC จะไม่นำมาพิจารณา)
เมื่อผู้ใช้เข้าสู่ระบบคอมพิวเตอร์ใดๆ ในโดเมน Active Directory เหตุการณ์ที่มี ID เหตุการณ์ 4624 (บัญชีถูกเข้าสู่ระบบสำเร็จ) ปรากฏในบันทึกของตัวควบคุมโดเมนที่ ได้ตรวจสอบผู้ใช้ (Logon Server) บัญชีที่รับรองความถูกต้องสำเร็จ (ชื่อบัญชี) ชื่อคอมพิวเตอร์ (ชื่อเวิร์กสเตชัน) หรือที่อยู่ IP (ที่อยู่เครือข่ายต้นทาง) ของคอมพิวเตอร์ที่ใช้ในการเข้าสู่ระบบจะแสดงอยู่ในคำอธิบายเหตุการณ์
นอกจากนี้ คุณต้องตรวจสอบค่าของฟิลด์ ประเภทการเข้าสู่ระบบ เราสนใจรหัสต่อไปนี้:
ประเภทการเข้าสู่ระบบ 10 - การเข้าสู่ระบบแบบโต้ตอบระยะไกล - การเข้าสู่ระบบโดยใช้ RDP, การเชื่อมต่อเงาหรือความช่วยเหลือระยะไกล (เหตุการณ์นี้อาจปรากฏบนตัวควบคุมโดเมนหากผู้ดูแลระบบหรือผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบที่มีสิทธิ์การเข้าถึง RDP บน DC เข้าสู่ระบบ ). เหตุการณ์นี้ใช้เพื่อตรวจสอบและวิเคราะห์กิจกรรมของผู้ใช้บริการเดสก์ท็อประยะไกล
การเข้าสู่ระบบประเภทที่ 3 - การเข้าสู่ระบบเครือข่าย (ใช้เมื่อผู้ใช้ได้รับการรับรองความถูกต้องบน DC และเชื่อมต่อกับโฟลเดอร์ที่ใช้ร่วมกัน เครื่องพิมพ์ หรือบริการ IIS)
นอกจากนี้ คุณยังสามารถติดตามเหตุการณ์การออกตั๋ว Kerberos เมื่อตรวจสอบผู้ใช้ รหัสเหตุการณ์ 4768 คือ มีการร้องขอ Kerberos authentication ticket (TGT) โดยเปิดใช้การตรวจสอบกิจกรรมในนโยบายการเข้าสู่ระบบบัญชี -> ตรวจสอบ Kerberos Authentication Service -> สำเร็จและล้มเหลว
เหตุการณ์ 4768 ยังมีชื่อ (ที่อยู่ IP) ของคอมพิวเตอร์และบัญชีผู้ใช้ (ชื่อบัญชีหรือ ID ผู้ใช้) ที่ได้รับตั๋ว Kerberos (ได้รับการรับรองความถูกต้องแล้ว)
รับประวัติการเข้าสู่ระบบครั้งล่าสุดของผู้ใช้ด้วย PowerShell
คุณสามารถใช้ PowerShell cmdlet Get-Eventlog เพื่อรับเหตุการณ์ทั้งหมดจากบันทึกเหตุการณ์ของตัวควบคุมโดเมน กรองเหตุการณ์ตาม EventID ที่คุณต้องการ และแสดงข้อมูลเกี่ยวกับเวลาที่ผู้ใช้รับรองความถูกต้องในโดเมนและ คอมพิวเตอร์ที่ใช้ในการเข้าสู่ระบบ เนื่องจากอาจมีตัวควบคุมโดเมนหลายตัวในโดเมนของคุณ และคุณอาจต้องการรับประวัติการเข้าสู่ระบบของผู้ใช้จากแต่ละตัว ให้ใช้ Get-ADDomainController cmdlet (จากโมดูล AD สำหรับ Windows PowerShell) cmdlet อนุญาตให้รับรายการ DC ทั้งหมดในโดเมนของคุณ
สคริปต์ PowerShell ต่อไปนี้อนุญาตให้คุณรับเหตุการณ์การเข้าสู่ระบบทั้งหมดสำหรับผู้ใช้ไปยังโดเมน AD จากตัวควบคุมโดเมนทั้งหมด ดังนั้น คุณจะได้รับตารางที่มีประวัติการเข้าสู่ระบบของผู้ใช้และคอมพิวเตอร์ที่ผู้ใช้รับรองความถูกต้อง
# a username, whose logon history you want to view
$checkuser='*jbrown*'
# getting information about the user logon history for the last 2 days (you can change this value)
$startDate = (get-date).AddDays(-2)
$DCs = Get-ADDomainController -Filter *
foreach ($DC in $DCs){
$logonevents = Get-Eventlog -LogName Security -InstanceID 4624 -after $startDate -ComputerName $dc.HostName
foreach ($event in $logonevents){
if (($event.ReplacementStrings[5] -notlike '*$') -and ($event.ReplacementStrings[5] -like $checkuser)) {
# Remote (Logon Type 10)
if ($event.ReplacementStrings[8] -eq 10){
write-host "Type 10: Remote Logon`tDate: "$event.TimeGenerated "`tStatus: Success`tUser: "$event.ReplacementStrings[5] "`tWorkstation: "$event.ReplacementStrings[11] "`tIP Address: "$event.ReplacementStrings[18] "`tDC Name: " $dc.Name
}
# Network(Logon Type 3)
if ($event.ReplacementStrings[8] -eq 3){
write-host "Type 3: Network Logon`tDate: "$event.TimeGenerated "`tStatus: Success`tUser: "$event.ReplacementStrings[5] "`tWorkstation: "$event.ReplacementStrings[11] "`tIP Address: "$event.ReplacementStrings[18] "`tDC Name: " $dc.Name
}
}
}
}รับประวัติการเข้าสู่ระบบของผู้ใช้โดเมนตามเหตุการณ์ Kerberos
คุณยังสามารถรับประวัติการตรวจสอบผู้ใช้ในโดเมนตามเหตุการณ์ของปัญหาตั๋ว Kerberos (คำขอ TGT — EventID 4768) ในกรณีนี้ เหตุการณ์น้อยลงจะแสดงในเอาต์พุต (ไม่รวมการเข้าสู่ระบบเครือข่าย รวมถึงเหตุการณ์การเข้าถึงไปยังโฟลเดอร์ DC ระหว่างรับไฟล์ GPO หรือเรียกใช้สคริปต์การเข้าสู่ระบบ) สคริปต์ PowerShell ต่อไปนี้จะแสดงข้อมูลเกี่ยวกับการเข้าสู่ระบบของผู้ใช้ทั้งหมดในช่วง 24 ชั่วโมงที่ผ่านมา:
$alluserhistory = @()
$startDate = (get-date).AddDays(-1)
$DCs = Get-ADDomainController -Filter *
foreach ($DC in $DCs){
$logonevents = Get-Eventlog -LogName Security -InstanceID 4768 -after $startDate -ComputerName $dc.HostName
foreach ($event in $logonevents){
if ($event.ReplacementStrings[0] -notlike '*$') {
$userhistory = New-Object PSObject -Property @{
UserName = $event.ReplacementStrings[0]
IPAddress = $event.ReplacementStrings[9]
Date = $event.TimeGenerated
DC = $dc.Name
}
$alluserhistory += $userhistory
}
}
}
$alluserhistoryโปรดทราบว่าในกรณีนี้ คุณจะไม่เห็นเหตุการณ์การเข้าสู่ระบบใดๆ ของผู้ใช้ที่รับรองความถูกต้องจากลูกค้าหรือแอปที่ใช้ NTLM แทน Kerberos






