ค้นหาเว็บไซต์

วิธีค้นหาผู้ใช้ที่ถูกล็อคใน Active Directory ด้วย PowerShell


ผู้ใช้ในองค์กรของคุณลืมรหัสผ่านหรือไม่ ไม่แน่นอน! ผู้ใช้ Active Directory ล็อคบัญชีของตนหรือไม่ ไม่มีทาง! มาดูกันว่าเราสามารถทำอะไรได้บ้างเพื่อค้นหาผู้ใช้ที่ถูกล็อคใน Active Directory ด้วย PowerShell!

หยุดปัญหากับการเรียกรีเซ็ตรหัสผ่านและการล็อกบัญชีใน Active Directory รับ Specops uReset ทดลองใช้ฟรี

เครือข่ายของคุณเคยติดมัลแวร์ที่พยายามตรวจสอบความถูกต้องกับบัญชีผู้ใช้โดเมนมากที่สุดเท่าที่จะเป็นไปได้หรือไม่? ฉันหวังว่าจะไม่ แต่ฉันเคยเห็นมันเกิดขึ้นสองสามครั้ง ผู้ใช้และเวิร์มเป็นเพียงสองเหตุผลที่บัญชี AD หนึ่งบัญชีขึ้นไปสามารถถูกล็อคได้ ขึ้นอยู่กับนโยบายรหัสผ่านของคุณ การล็อคอาจเกิดขึ้นทุกวันหรือเกิดขึ้นเป็นครั้งคราวเท่านั้น

ไม่ว่าด้วยเหตุผลหรือสถานการณ์ใดก็ตาม การล็อคบัญชีจะส่งผลต่อผู้ใช้ของคุณ เนื่องจากพวกเขาพึ่งพาบัญชีโดเมน Active Directory สำหรับเกือบทุกอย่าง พวกเขาจะสังเกตเห็นได้ทันทีเมื่อถูกล็อค โปรแกรมช่วยเหลือของคุณสามารถเปิดใช้งานบัญชีได้อีกครั้ง แต่จะเกิดอะไรขึ้นหากเกิดขึ้นอีกครั้ง …และอีกครั้ง. …และอีกครั้ง. การหาสาเหตุของปัญหานี้เป็นสิ่งสำคัญ

วิธีหนึ่งในการทำเช่นนี้คือการใช้ PowerShell และโมดูล ActiveDirectory ด้วยการใช้ cmdlet Search-AdAccount ภายในโมดูล Active Directory คุณสามารถติดตามบัญชีทั้งหมดที่ถูกล็อคไม่ให้เข้าถึงทั่วทั้งโดเมนของคุณได้อย่างง่ายดาย

ที่เกี่ยวข้อง: วิธีการติดตั้งโมดูล Active Directory PowerShell

ค้นหาผู้ใช้ที่ถูกล็อคใน Active Directory ด้วย PowerShell

หากต้องการค้นหาบัญชีที่ถูกล็อค คุณสามารถเรียกใช้คำสั่ง Search-AdAccount โดยใช้พารามิเตอร์ LockedOut สิ่งนี้จะส่งคืนผู้ใช้ทั้งหมดที่ถูกล็อคในปัจจุบันโดยที่คุณมีสิทธิ์ที่จะดูสิ่งนั้น

Search-AdAccount -LockedOut

คำสั่งนี้ดีมาก แต่จะเกิดอะไรขึ้นถ้าคุณมีบัญชีที่ถูกล็อคอยู่ตลอดเวลาและคุณต้องรู้ว่ามันมาจากระบบไหน? นี่เป็นงานทั่วไปเมื่อใดก็ตามที่คุณติดมัลแวร์ที่ใดที่หนึ่งบนเครือข่ายของคุณ หรือบางทีเมื่อคุณมีผู้ดูแลระบบขี้ลืมที่ลืมออกจากระบบเซสชันเดสก์ท็อประยะไกล นั่นไม่เคยเกิดขึ้นใช่ไหม?

หากต้องการค้นหาแหล่งที่มาของการล็อก Active Directory ก่อนอื่นคุณจะต้องตรวจสอบให้แน่ใจว่าคุณกำลังค้นหาตัวควบคุมโดเมนที่ถูกต้อง ในกรณีนี้ นี่จะเป็นตัวควบคุมโดเมนที่มีบทบาทตัวจำลอง PDC

ค้นหาผู้มีบทบาท PDCe

การตรวจสอบรหัสผ่านทั้งหมดจะมาที่ DC นี้โดยมีบทบาท PDCe ดังนั้นจึงเป็นสถานที่ที่ดีที่สุดในการตรวจสอบเสมอ หากต้องการค้นหาตัวควบคุมโดเมนที่มีบทบาท PDCe คุณสามารถตรวจสอบคุณสมบัติ PDCEmulator ที่ส่งคืนจาก cmdlet Get-ADDomain

$pdce = (Get-ADDomain).PDCEmulator

กำจัดสิ่งสกปรกในบันทึกเหตุการณ์สำหรับการล็อค

เมื่อคุณมี DC มีบทบาท PDCe คุณจะต้องค้นหาบันทึกเหตุการณ์ด้านความปลอดภัย (บันทึกความปลอดภัย) ของ DC นี้สำหรับรหัสเหตุการณ์ 4740 รหัสเหตุการณ์ 4740 คือเหตุการณ์ที่ลงทะเบียนทุกครั้งที่บัญชีถูกล็อค ทำสิ่งนี้ด้วย cmdlet Get-WinEvent

Get-WinEvent -ComputerName $pdce -FilterHashTable @{'LogName' ='Security';'Id' = 4740}

คุณเข้าใกล้การค้นหาผู้ใช้ที่ถูกล็อคใน Active Directory ด้วย PowerShell มากขึ้น!

แยกชื่อผู้ใช้และที่ตั้ง

การดำเนินการนี้จะส่งคืนเหตุการณ์การล็อกทั้งหมด แต่จะไม่แสดงชื่อผู้ใช้และคอมพิวเตอร์ที่มีการล็อกทันที หากต้องการค้นหาชื่อผู้ใช้ คุณจะต้องเจาะลึกลงไปอีกเล็กน้อยในคุณสมบัติที่ Get-WinEvent ส่งคืนเรียกว่า Properties

$filter = @{'LogName' = 'Security';'Id' = 4740}
$events = Get-WinEvent -ComputerName $pdce -FilterHashTable $filter
$events | Select-Object @{'Name' ='UserName'; Expression={$_.Properties[0]}}, @{'Name' ='ComputerName';Expression={$_.Properties[1]}}

คุณจะเห็นว่าฉันได้ย้ายตัวกรองแฮชเทเบิลเพื่อป้องกันการตัดโค้ด และที่สำคัญกว่านั้นคือใช้คุณสมบัติที่คำนวณของ Select-Object เพื่อดึงชื่อผู้ใช้และชื่อคอมพิวเตอร์จาก Properties รหัส> คุณสมบัติ ในแต่ละเหตุการณ์เหล่านี้ ชื่อผู้ใช้ที่ถูกล็อคจะเป็นองค์ประกอบแรกในอาร์เรย์ คุณสมบัติ เสมอ ในขณะที่องค์ประกอบที่สองจะเป็นชื่อคอมพิวเตอร์ที่ใช้ทำการล็อคเสมอ

ใช้ประโยชน์จาก PowerShell เพื่อปลดล็อกบัญชี AD

เมื่อคุณพบผู้ใช้ AD ที่ถูกล็อคแล้ว คุณจะปลดล็อคบัญชีได้อย่างไร? โมดูล ActiveDirectory ใน PowerShell นำเสนอคำสั่ง Unlock-ADAccount ซึ่งทำให้การรับลูกค้ากลับมาทำงานได้อย่างรวดเร็ว ดังที่แสดงด้านล่าง ใช้ PowerShell เพื่อปลดล็อกบัญชี AD คำสั่งนี้ทำงานได้ทั้งใน Windows PowerShell และ PowerShell 7 เมื่อโหลดผ่านโมดูล ActiveDirectory

Unlock-ADAccount -Identity 'lockeduser'

บางทีคุณอาจต้องการปลดล็อคผู้ใช้ที่ถูกล็อคทั้งหมดในครั้งเดียว ให้ใช้ Search-ADAccount ด้วยพารามิเตอร์ -LockedOut และไพพ์ผลลัพธ์ไปที่ Unlock-ADAccount คำสั่งดังรูปด้านล่าง

Search-ADAccount -LockedOut | Unlock-ADAccount

ลดการเรียกส่วนให้บริการและอัปเดตข้อมูลรับรองแคชสำหรับผู้ใช้ระยะไกลแม้จะอยู่นอก VPN ด้วยโซลูชันการรีเซ็ตรหัสผ่านแบบบริการตนเอง รับการสาธิต Specops uReset!

สรุป

ถึงตอนนี้ คุณควรจะสามารถระบุบัญชีทั้งหมดที่ถูกล็อคออกจากโดเมนของคุณได้อย่างรวดเร็ว รวมถึงดูประวัติของการล็อคบัญชีทั้งหมด ตอนนี้ถึงเวลาที่ต้องพูดคุยกับ Joe อย่างเข้มงวดเกี่ยวกับการเปิดเซสชั่น RDP เหล่านั้นไว้...

บทความที่เกี่ยวข้อง