Windows LAPS: หมุนรหัสผ่าน Local Administrator อัตโนมัติ

ตั้ง Windows LAPS ที่มากับ Windows Server ให้หมุนรหัส Local Administrator ทุกเครื่องอัตโนมัติ เก็บแบบเข้ารหัสใน Active Directory และสั่งเปลี่ยนรหัสได้ทันที

โดย ทีมงาน THAI DATA CLOUD อ่าน 14 นาที

แชร์FacebookXLINELinkedIn
Windows LAPS — Windows LAPS: หมุนรหัสผ่าน Local Administrator อัตโนมัติ
Windows LAPS: หมุนรหัสผ่าน Local Administrator อัตโนมัติ

คำตอบสั้น ๆ: ตั้ง Windows LAPS ที่มากับ Windows Server ให้หมุนรหัส Local Administrator ทุกเครื่องอัตโนมัติ เก็บแบบเข้ารหัสใน Active Directory และสั่งเปลี่ยนรหัสได้ทันที

คู่มือนี้อธิบาย Windows LAPS ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย

Windows LAPS (Windows Local Administrator Password Solution) คือฟีเจอร์ที่มากับ Windows Server และ Windows รุ่นปัจจุบัน ทำหน้าที่ตั้งรหัสผ่านบัญชี Local Administrator ของแต่ละเครื่องให้ไม่ซ้ำกัน หมุนรหัสใหม่ตามรอบอัตโนมัติ และเก็บรหัสไว้ใน Active Directory หรือ Microsoft Entra ID ปัญหาที่ Windows LAPS แก้คือการใช้รหัสแอดมินชุดเดียวกันทุกเครื่อง ซึ่งเมื่อเครื่องหนึ่งโดนเจาะ ผู้โจมตีก็ใช้รหัสเดียวกันเดินไปเครื่องอื่นต่อได้ทันที

คู่มือนี้เหมาะกับผู้ดูแลที่มี Windows Server หลายเครื่องอยู่ใน Active Directory domain บนคลาวด์ เมื่อทำครบ คุณจะได้ schema ที่รองรับ Windows LAPS สิทธิ์บน OU ที่ถูกต้อง GPO ที่บังคับใช้กับเซิร์ฟเวอร์ รหัสที่เข้ารหัสเก็บใน AD และรู้วิธีดึงรหัสออกมาใช้ตอนฉุกเฉินพร้อมสั่งเปลี่ยนรหัสทันทีหลังใช้เสร็จ

สิ่งที่ต้องเตรียม

  • เครื่องที่จะจัดการต้องเป็น Windows Server 2019 ที่ติดตั้งอัปเดตตั้งแต่เมษายน 2023 ขึ้นไป หรือ Windows Server 2022 และ 2025 ซึ่งมี Windows LAPS อยู่แล้ว Windows Server 2016 ไม่รองรับ
  • เครื่องทุกเครื่อง join domain แล้ว Windows LAPS เก็บรหัสได้เฉพาะใน AD หรือ Entra ID เท่านั้น เครื่องเดี่ยวแบบ Workgroup ใช้ขั้นตอนในคู่มือนี้ไม่ได้ ถ้ายังไม่มีโดเมน ดูคู่มือติดตั้ง Active Directory Domain Services
  • บัญชีที่อยู่ในกลุ่ม Schema Admins สำหรับขยาย schema หนึ่งครั้ง และ Domain Admins สำหรับตั้งสิทธิ์และสร้าง GPO
  • Domain Functional Level 2016 ขึ้นไป ถ้าต้องการเข้ารหัสรหัสผ่านใน AD ซึ่งควรเปิดเสมอ ตรวจได้ด้วย (Get-ADDomain).DomainMode
  • OU ที่รวมเซิร์ฟเวอร์ไว้ เช่น OU=Servers,DC=corp,DC=example,DC=com และกลุ่มผู้ดูแลที่จะอนุญาตให้อ่านรหัส เช่น CORP\LAPS-Readers
ลำดับการทำงานของ Windows LAPS ตั้งแต่ GPO กำหนดนโยบาย เครื่องประมวลผลทุกชั่วโมง สร้างรหัสใหม่ เก็บแบบเข้ารหัสใน AD จนถึงแอดมินดึงรหัสไปใช้
แต่ละเครื่องเปลี่ยนรหัสเองและส่งขึ้น AD ไม่มีรหัสเดียวกันซ้ำสองเครื่อง

ขั้นตอนที่ 1: ตรวจว่าเครื่องพร้อมใช้ Windows LAPS

บนเครื่องปลายทางทุกรุ่น ตรวจว่ามีโมดูล LAPS ของ PowerShell แล้ว ถ้าคำสั่งด้านล่างแสดงรายการ cmdlet เช่น Get-LapsADPassword และ Invoke-LapsPolicyProcessing แปลว่าเครื่องรองรับ Windows LAPS ถ้าไม่มี ให้ติดตั้งอัปเดตสะสมล่าสุดก่อน

Get-Command -Module LAPS | Select-Object -ExpandProperty Name

ถ้าองค์กรเคยใช้ Microsoft LAPS ตัวเก่าที่ติดตั้งจากไฟล์ MSI ให้วางแผนย้ายก่อน อย่าให้ทั้งสองระบบจัดการบัญชีเดียวกันพร้อมกัน วิธีที่ดูแลง่ายคือสร้าง GPO ของ Windows LAPS ใหม่ ทดสอบกับ OU ทดลอง เมื่อรหัสถูกเก็บใน attribute ใหม่เรียบร้อยแล้วจึงถอน GPO และ MSI ของตัวเก่าออก

ตารางเปรียบเทียบ Microsoft LAPS รุ่นเก่ากับ Windows LAPS ที่มากับระบบ ทั้งการติดตั้ง การเข้ารหัส ปลายทางที่เก็บ และสถานะการรองรับ
เครื่องใหม่ควรใช้ Windows LAPS อย่างเดียว ไม่ต้องติดตั้ง MSI ของ LAPS ตัวเก่า

ขั้นตอนที่ 2: ขยาย Active Directory schema

Windows LAPS ใช้ attribute ใหม่ใน AD จึงต้องขยาย schema หนึ่งครั้งต่อ forest รันบน Domain Controller ที่เป็น Windows Server 2019 ขึ้นไป หรือเครื่องสมาชิกที่มีโมดูล LAPS ด้วยบัญชีที่อยู่ใน Schema Admins

Update-LapsADSchema -Verbose

การขยาย schema ย้อนกลับไม่ได้ แต่เป็นการเพิ่ม attribute ที่ Microsoft กำหนดไว้ ไม่กระทบ attribute เดิม ถ้าองค์กรมี Domain Controller หลายเครื่อง ให้รอ replication ให้ครบก่อนไปขั้นถัดไป ตรวจสถานะได้ด้วย repadmin /replsummary

ขั้นตอนที่ 3: ให้สิทธิ์บน OU

เครื่องแต่ละเครื่องต้องมีสิทธิ์เขียนรหัสของตัวเองลง AD และผู้ดูแลต้องได้สิทธิ์อ่าน รันคำสั่งต่อไปนี้กับ OU ที่เก็บเซิร์ฟเวอร์

$ou = "OU=Servers,DC=corp,DC=example,DC=com"
Set-LapsADComputerSelfPermission -Identity $ou
Set-LapsADReadPasswordPermission -Identity $ou -AllowedPrincipals "CORP\LAPS-Readers"
Set-LapsADResetPasswordPermission -Identity $ou -AllowedPrincipals "CORP\LAPS-Readers"
Find-LapsADExtendedRights -Identity $ou

คำสั่งสุดท้ายแสดงว่าใครมีสิทธิ์ extended rights บน OU นี้ ซึ่งอ่าน attribute ลับได้ทุกตัว รวมถึงรหัสของ Windows LAPS ผลที่ปลอดภัยคือมีแค่ NT AUTHORITY\SYSTEM และ Domain Admins ถ้าเห็นกลุ่มอื่น เช่น กลุ่ม helpdesk ที่ถูกให้สิทธิ์ไว้นานแล้ว ให้ทบทวนและถอดออก กลุ่ม Domain Admins มีสิทธิ์อ่านและถอดรหัสโดยค่าเริ่มต้นอยู่แล้ว

ขั้นตอนที่ 4: สร้าง GPO สำหรับ Windows LAPS

เปิด Group Policy Management สร้าง GPO ใหม่ชื่อ LAPS-Servers แล้วลิงก์กับ OU Servers คลิกขวา Edit ไปที่ Computer Configuration > Policies > Administrative Templates > System > LAPS ถ้าใช้ Central Store ต้องคัดลอกไฟล์ LAPS.admx จาก C:\Windows\PolicyDefinitions และ LAPS.adml จากโฟลเดอร์ภาษา เช่น C:\Windows\PolicyDefinitions\en-US ไปไว้ใน Central Store เอง เพราะ Windows Update ไม่คัดลอกให้ ตั้งค่าดังนี้

  • Configure password backup directory: Enabled แล้วเลือก Backup Directory เป็น Active Directory ถ้าไม่ตั้งข้อนี้ ค่าเริ่มต้นคือ Disabled และ Windows LAPS จะไม่ทำงานเลย
  • Password Settings: ค่าเริ่มต้นคือความซับซ้อนแบบตัวใหญ่ ตัวเล็ก ตัวเลข และอักขระพิเศษ ยาว 14 ตัวอักษร อายุ 30 วัน แนะนำเพิ่มความยาวเป็น 20 ขึ้นไป
  • Enable password encryption: Enabled เพื่อเข้ารหัสรหัสผ่านก่อนเก็บใน AD ต้องใช้ DFL 2016 ขึ้นไป
  • Configure authorized password decryptors: ใส่ CORP\LAPS-Readers ถ้าไม่ตั้ง จะถอดรหัสได้เฉพาะ Domain Admins
  • Do not allow password expiration time longer than required by policy: Enabled เพื่อกันไม่ให้ใครยืดวันหมดอายุของรหัสเกินนโยบาย
  • Post-authentication actions: ค่าเริ่มต้นคือหลังมีคนล็อกอินด้วยบัญชีนี้ 24 ชั่วโมง ระบบจะเปลี่ยนรหัสและ sign out บัญชีนั้น ปรับ Grace period ให้สั้นลงได้ถ้าต้องการให้รหัสที่ถูกดึงไปใช้หมดอายุเร็วขึ้น
หน้าจอจำลองนโยบาย Password Settings ของ Windows LAPS ใน Group Policy Management Editor ที่ตั้งความยาวรหัส 20 ตัวและอายุ 30 วัน
ความยาวรหัสต้องไม่ขัดกับ password policy ของเครื่อง ไม่เช่นนั้น LAPS สร้างรหัสใหม่ไม่ได้ (ภาพจำลอง)

ไม่ต้องตั้ง Name of administrator account to manage ถ้าจะจัดการบัญชี Administrator ตัวที่มากับระบบ เพราะ Windows LAPS หาบัญชีนี้จาก RID เองแม้จะเปลี่ยนชื่อไปแล้ว ถ้าจะจัดการบัญชีแอดมินที่สร้างเอง ให้ใส่ชื่อบัญชีนั้น และต้องสร้างบัญชีไว้ก่อน Windows LAPS ไม่สร้างให้ ยกเว้น Windows Server 2025 ที่มีนโยบาย automatic account management เพิ่มเข้ามา

ระวังเรื่องความยาวและความซับซ้อนที่ขัดกับ password policy ของโดเมนหรือของเครื่อง ถ้า Windows LAPS สร้างรหัสที่ผ่านนโยบายไม่ได้ จะบันทึกเหตุการณ์ 10027 ในล็อกและไม่เปลี่ยนรหัส

ขั้นตอนที่ 5: บังคับให้เครื่องประมวลผลนโยบายและตรวจล็อก

Windows LAPS ประมวลผลนโยบายทุกชั่วโมงอยู่แล้ว ถ้าไม่อยากรอ ให้รันบนเครื่องปลายทาง

gpupdate /force
Invoke-LapsPolicyProcessing -Verbose

เปิด Event Viewer ไปที่ Applications and Services Logs > Microsoft > Windows > LAPS > Operational เหตุการณ์ 10018 แปลว่าเครื่องอัปเดตรหัสลง AD สำเร็จ ดูจาก PowerShell ได้ด้วยคำสั่งนี้

Get-WinEvent -LogName "Microsoft-Windows-LAPS/Operational" -MaxEvents 20 | Format-Table TimeCreated, Id, Message -Wrap

ถ้าเห็นข้อผิดพลาดเรื่องสิทธิ์ ให้กลับไปตรวจว่ารัน Set-LapsADComputerSelfPermission กับ OU ที่เครื่องอยู่จริง เครื่องที่ถูกย้าย OU หลังตั้งสิทธิ์จะไม่ได้สิทธิ์ตาม

ขั้นตอนที่ 6: ดึงรหัส Windows LAPS เมื่อต้องเข้าเครื่อง

ผู้ที่อยู่ในกลุ่ม LAPS-Readers ดึงรหัสของเครื่องได้จาก PowerShell บนเครื่องที่มีโมดูล LAPS

Get-LapsADPassword -Identity web-01 -AsPlainText
ผลคำสั่ง Get-LapsADPassword ดึงรหัสผ่าน Windows LAPS ของเครื่อง web-01 จาก Active Directory แบบถอดรหัสแล้ว
Source เป็น EncryptedPassword แปลว่ารหัสถูกเข้ารหัสใน AD และถอดได้เฉพาะกลุ่มที่อนุญาต

ถ้าไม่ใส่ -AsPlainText รหัสจะแสดงเป็น SecureString ซึ่งเหมาะกับการส่งต่อในสคริปต์ อีกช่องทางคือแท็บ LAPS ในหน้าต่าง Properties ของ computer object ใน Active Directory Users and Computers ซึ่งแสดงรหัสและวันหมดอายุ เหมาะกับทีมที่ไม่ถนัด PowerShell

บัญชี Local Administrator ใช้ในกรณีที่บัญชีโดเมนใช้ไม่ได้ เช่น เครื่องหลุดจากโดเมน ถ้าต้องล็อกอินผ่าน RDP ให้ใช้ชื่อในรูปแบบ web-01\Administrator ถ้าเครื่องขาดการติดต่อกับ AD ทั้งหมด ให้เข้าทาง Console ของแพลตฟอร์มด้วยรหัสเดียวกัน

ขั้นตอนที่ 7: สั่งหมุนรหัสทันทีหลังใช้งาน

รหัสที่ถูกดึงออกมาดูแล้วควรถือว่าไม่ลับอีกต่อไป ถ้าไม่อยากรอ Post-authentication actions หรือรอบ 30 วัน ให้สั่งให้รหัสหมดอายุทันทีจากฝั่ง AD แล้วให้เครื่องประมวลผลนโยบาย

Set-LapsADPasswordExpirationTime -Identity web-01
Invoke-Command -ComputerName web-01 -ScriptBlock { Invoke-LapsPolicyProcessing }

หรือรัน Reset-LapsPassword บนเครื่องนั้นโดยตรง หลังจากนั้นดึงรหัสอีกครั้งด้วย Get-LapsADPassword ค่า PasswordUpdateTime ต้องเป็นเวลาปัจจุบัน ใช้ขั้นตอนนี้ทุกครั้งที่พนักงานที่เคยรู้รหัสลาออก หรือสงสัยว่าเครื่องถูกเจาะ

ถ้าเครื่องเป็น Microsoft Entra hybrid join

Windows LAPS เก็บรหัสใน Microsoft Entra ID แทน AD ได้ โดยเปิด Enable Microsoft Entra Local Administrator Password Solution (LAPS) ในหน้า Device settings ของ Microsoft Entra admin center แล้วตั้ง Backup Directory ให้เป็น Entra ID ผ่าน Intune หรือ GPO (GPO รุ่นแรกแสดงตัวเลือกนี้เป็น Azure Active Directory) การตั้งค่านี้ใช้ได้กับเครื่องที่ join Entra ID หรือเป็น hybrid join เท่านั้น เซิร์ฟเวอร์บนคลาวด์ทั่วไปที่อยู่แค่ใน AD ให้ใช้โหมด Active Directory ตามคู่มือนี้ รายละเอียดทั้งหมดอยู่ในเอกสาร Get started with Windows LAPS and Windows Server Active Directory และ Configure policy settings for Windows LAPS

ปัญหาที่พบบ่อยเกี่ยวกับ Windows LAPS

ใช้ Windows LAPS กับเซิร์ฟเวอร์ที่ไม่ได้ join domain ได้หรือไม่?

ขั้นตอนในคู่มือนี้ใช้ไม่ได้ เพราะ Windows LAPS ต้องมีที่เก็บรหัสคือ AD หรือ Entra ID สำหรับเครื่องเดี่ยวไม่กี่เครื่อง ให้ตั้งรหัส Administrator ไม่ซ้ำกันทุกเครื่อง เก็บในตัวจัดการรหัสผ่านของทีม และตั้ง Account Lockout Policy กันการเดารหัสผ่าน RDP

Get-LapsADPassword ขึ้นว่าไม่มีรหัส หรือ DecryptionStatus ไม่เป็น Success ทำไม?

ถ้าไม่มีรหัสเลย แปลว่าเครื่องยังไม่เคยส่งรหัสขึ้น AD ให้ตรวจล็อกตามขั้นตอนที่ 5 ถ้ามีรหัสแต่ถอดไม่ได้ แปลว่าบัญชีที่ใช้ไม่อยู่ในกลุ่มที่ตั้งไว้ใน Configure authorized password decryptors ตอนที่เครื่องเก็บรหัส เปลี่ยนนโยบายแล้วต้องให้เครื่องหมุนรหัสใหม่หนึ่งรอบ รหัสใหม่จึงถอดได้ด้วยกลุ่มใหม่

ล็อกอินด้วยรหัสจาก Windows LAPS แล้ว session ถูก sign out เอง เกิดจากอะไร?

เป็นพฤติกรรมของ Post-authentication actions ค่าเริ่มต้นคือเมื่อครบ 24 ชั่วโมงหลังใช้บัญชีนี้ ระบบจะเปลี่ยนรหัสและ sign out โดยเตือนล่วงหน้า 2 นาที ถ้าต้องทำงานยาว ให้บันทึกงานเป็นระยะ หรือใช้บัญชีโดเมนของตัวเองสำหรับงานประจำ บัญชี Local Administrator ควรใช้เฉพาะตอนจำเป็น

ต้องถอน Microsoft LAPS ตัวเก่าออกก่อนเปิด Windows LAPS หรือไม่?

ไม่จำเป็นต้องถอนก่อน แต่ต้องไม่ให้สองระบบจัดการบัญชีเดียวกัน ทยอยย้ายทีละ OU ด้วย GPO ใหม่ ตรวจว่า Get-LapsADPassword ดึงรหัสได้ครบทุกเครื่อง แล้วจึงปิด GPO ตัวเก่าและถอนโปรแกรม Local Administrator Password Solution ออกจากเครื่อง

ถ้าต้องการให้ช่วยวางโครงสร้าง Active Directory และนโยบายบัญชีแอดมินของเซิร์ฟเวอร์ทั้งหมด ติดต่อทีมงาน THAI DATA CLOUD ได้ ดูบริการดูแลความปลอดภัยเพิ่มเติมที่ Managed Security Services

อ่านเพิ่มเติมเกี่ยวกับ Windows LAPS

แชร์FacebookXLINELinkedIn

มีคำถามเรื่องบริการ? ติดต่อทีมงาน