ลดความยุ่งยากในการใช้คลาวด์ พูดคุยกับเจ้าหน้าที่

Home ตั้งค่า Account Lockout Policy ป้องกันการเดารหัสผ่าน RDP

ตั้งค่า Account Lockout Policy ป้องกันการเดารหัสผ่าน RDP

Windows Server ที่เปิด Remote Desktop (RDP) สู่อินเทอร์เน็ตจะถูกโปรแกรมอัตโนมัติสแกนและลองเดารหัสผ่านตลอดเวลา โดยเฉพาะชื่อผู้ใช้ยอดนิยมอย่าง Administrator, admin หรือ user Account Lockout Policy เป็นนโยบายในตัวของ Windows ที่ล็อกบัญชีชั่วคราวเมื่อใส่รหัสผ่านผิดติดกันเกินจำนวนที่กำหนด ทำให้การเดารหัสผ่านทีละหลายพันครั้งทำไม่ได้

บทความนี้อธิบายการตั้งค่าทั้งผ่านหน้าจอ Local Security Policy และผ่าน Command Line การเลือกค่าที่เหมาะสม และข้อควรระวังที่อาจทำให้ผู้ดูแลเองถูกล็อกออกจากเซิร์ฟเวอร์

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

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

ทำความเข้าใจค่าทั้งสาม

ค่าความหมายค่าที่แนะนำ
Account lockout thresholdจำนวนครั้งที่ใส่รหัสผ่านผิดติดกันก่อนบัญชีถูกล็อก ค่า 0 คือไม่ล็อกเลย5-10 ครั้ง
Account lockout durationระยะเวลาที่บัญชีถูกล็อกเป็นนาที ค่า 0 คือล็อกจนกว่าผู้ดูแลจะปลดเอง15-30 นาที
Reset account lockout counter afterถ้าไม่ได้ใส่ผิดเพิ่มภายในเวลานี้ ตัวนับครั้งที่ผิดจะกลับเป็น 0เท่ากับหรือน้อยกว่า Lockout duration

ตัวอย่างการคำนวณ ถ้าตั้ง 10 ครั้ง ล็อก 15 นาที ผู้โจมตีจะเดาได้ไม่เกินประมาณ 40 ครั้งต่อชั่วโมงต่อบัญชี แทนที่จะเป็นหลายพันครั้ง ไม่ควรตั้ง Duration เป็น 0 บนเซิร์ฟเวอร์ที่เปิด RDP สู่อินเทอร์เน็ต เพราะผู้ไม่หวังดีสามารถจงใจใส่รหัสผิดเพื่อล็อกบัญชีของคุณไว้ถาวรได้ และการตั้ง Threshold ต่ำเกินไป เช่น 3 ครั้ง ก็ทำให้ผู้ใช้จริงถูกล็อกบ่อยจากการพิมพ์ผิดธรรมดา

ขั้นตอนที่ 1: ตรวจค่าปัจจุบัน

เปิด Command Prompt หรือ PowerShell แบบ Run as administrator แล้วรัน

net accounts

ดูสามบรรทัดนี้ในผลลัพธ์ (ตัวอย่างด้านล่างเป็นเครื่องที่ยังไม่ได้เปิดการล็อก ตัวเลขอาจต่างกันตามรุ่น)

Lockout threshold:                                    Never
Lockout duration (minutes):                           30
Lockout observation window (minutes):                 30

Never หมายถึงยังไม่ได้เปิดการล็อก ส่วน Lockout observation window คือค่า Reset account lockout counter after

ขั้นตอนที่ 2: ตั้งค่าผ่าน Local Security Policy

  1. กด Win+R พิมพ์ secpol.msc แล้วกด Enter
  2. ไปที่ Security Settings จากนั้น Account Policies และ Account Lockout Policy
  3. ดับเบิลคลิก Account lockout threshold ใส่ 10 แล้วกด OK
  4. Windows จะแสดงหน้าต่าง Suggested Value Changes เสนอค่าอีกสองค่าให้อัตโนมัติ กด OK เพื่อรับไว้ก่อน
  5. ดับเบิลคลิก Account lockout duration ตั้งเป็น 15 นาที
  6. ดับเบิลคลิก Reset account lockout counter after ตั้งเป็น 15 นาที

ค่า Duration และ Reset counter จะแก้ไขได้หลังจากตั้ง Threshold เป็นค่าที่ไม่ใช่ 0 แล้วเท่านั้น และ Windows ไม่ยอมให้ Reset counter มากกว่า Duration

Allow Administrator account lockout

ในอดีตบัญชี Administrator ที่มากับระบบ (Built-in) จะไม่ถูกล็อกเลย ซึ่งเป็นช่องโหว่ใหญ่เพราะเป็นชื่อที่ถูกเดามากที่สุด ตั้งแต่อัปเดตความปลอดภัยเดือนตุลาคม 2022 เป็นต้นมา Microsoft เพิ่มนโยบาย Allow Administrator account lockout ในหน้าเดียวกันนี้ ถ้าเซิร์ฟเวอร์ของคุณเห็นนโยบายนี้ ให้ตรวจว่าเป็น Enabled ค่าเริ่มต้นของนโยบายนี้ต่างกันตามรุ่นและวิธีติดตั้ง จึงควรตรวจเองทุกเครื่อง ถ้าไม่เห็นนโยบายนี้ แปลว่าเครื่องยังไม่ได้รับอัปเดต ให้อัปเดต Windows ก่อน

ทางที่ดีกว่านั้นคือไม่ใช้บัญชี Administrator เข้า RDP เลย ให้สร้างบัญชีผู้ดูแลชื่ออื่นใช้งาน แล้วปิดหรือเปลี่ยนชื่อบัญชี Built-in ที่ Local Policies, Security Options นโยบาย Accounts: Rename administrator account

ขั้นตอนที่ 3: หรือตั้งค่าด้วย Command Line

ได้ผลเช่นเดียวกับขั้นตอนที่ 2 เหมาะกับการตั้งหลายเครื่องหรือเขียนเป็นสคริปต์ ต้องตั้ง Threshold ก่อน แล้วค่อยตั้งอีกสองค่า

net accounts /lockoutthreshold:10
net accounts /lockoutduration:15 /lockoutwindow:15

ถ้าสำเร็จจะแสดง The command completed successfully. คำสั่งนี้ไม่มีตัวเลือกสำหรับ Allow Administrator account lockout ให้ตั้งค่านั้นผ่าน secpol.msc

ขั้นตอนที่ 4: กรณีเซิร์ฟเวอร์อยู่ใน Active Directory Domain

ถ้าเซิร์ฟเวอร์เข้าร่วม Domain ค่าที่ตั้งใน Local Security Policy สำหรับบัญชี Domain จะไม่มีผล นโยบายรหัสผ่านและการล็อกของบัญชี Domain กำหนดที่ระดับ Domain ใน Group Policy Management โดยแก้ Default Domain Policy ที่ Computer Configuration, Policies, Windows Settings, Security Settings, Account Policies, Account Lockout Policy ส่วนค่าในเครื่องยังมีผลกับบัญชี Local ของเครื่องนั้น

ตรวจสอบผลลัพธ์

  1. รัน net accounts อีกครั้ง ต้องเห็น Lockout threshold เป็น 10 และสองค่าที่เหลือเป็น 15
  2. สร้างบัญชีทดสอบชั่วคราวที่อยู่ในกลุ่ม Remote Desktop Users จากเครื่องอื่นเปิด RDP แล้วใส่รหัสผ่านผิดให้ครบตามจำนวนที่ตั้ง ครั้งถัดไปควรได้ข้อความว่าบัญชีถูกล็อก (The referenced account is currently locked out)
  3. เปิด Event Viewer ที่ Windows Logs, Security จะเห็น Event ID 4625 สำหรับการเข้าสู่ระบบที่ล้มเหลวแต่ละครั้ง และ 4740 เมื่อบัญชีถูกล็อก รายละเอียดการอ่าน Event ดูที่ ตรวจสอบประวัติการเข้าระบบ RDP ด้วย Event Viewer
  4. ลบบัญชีทดสอบเมื่อเสร็จ

ดูรายการ Event การล็อกล่าสุดด้วย PowerShell ได้เช่นกัน

Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4740} -MaxEvents 20 |
  Format-Table TimeCreated, @{n='Account';e={$_.Properties[0].Value}} -AutoSize

ปลดล็อกบัญชีที่ถูกล็อก

ถ้าไม่ต้องการรอให้ครบเวลา ให้ผู้ดูแลอีกคนเปิด lusrmgr.msc (Local Users and Groups) ไปที่ Users ดับเบิลคลิกบัญชีที่ถูกล็อก แล้วเอาเครื่องหมายออกจากช่อง Account is locked out แล้วกด OK สำหรับบัญชี Domain ใช้ Active Directory Users and Computers ที่แท็บ Account แทน

ปัญหาที่พบบ่อย

บัญชีผู้ดูแลถูกล็อกซ้ำ ๆ ทั้งที่ไม่ได้ใส่รหัสผิด

แปลว่ามีคนภายนอกกำลังเดารหัสผ่านบัญชีนั้นอยู่ Lockout Policy ทำงานถูกต้องแล้ว แต่ก็ทำให้คุณใช้งานไม่ได้เช่นกัน ทางแก้คือลดการเปิดเผย RDP: จำกัด IP ที่เข้า RDP ได้ด้วย Firewall ตาม เปิด Port บน Windows Defender Firewall (แก้กฎ Remote Desktop ให้รับเฉพาะ IP ของสำนักงาน) เปลี่ยนพอร์ตตาม เปลี่ยน Port Remote Desktop (RDP) บน Windows Server และใช้ชื่อบัญชีที่เดายาก หากเซิร์ฟเวอร์มี Security Group หรือ Firewall ภายนอกจากฝั่งผู้ให้บริการ ให้จำกัด IP ที่นั่นด้วย

บัญชีบริการหรือแอปพลิเคชันถูกล็อกหลังเปลี่ยนรหัสผ่าน

Scheduled Task, Service หรือ Drive ที่ Map ไว้ซึ่งยังเก็บรหัสผ่านเก่าจะพยายามเข้าสู่ระบบซ้ำจนบัญชีถูกล็อก ดู Event 4625 เพื่อหาชื่อโปรแกรมและเครื่องต้นทาง แล้วอัปเดตรหัสผ่านในจุดนั้น เช่น ใน Task Scheduler ดู ตั้งเวลาให้งานทำงานอัตโนมัติด้วย Task Scheduler บน Windows Server

ตั้งค่าแล้วแต่ net accounts ยังแสดงค่าเดิม

ถ้าเครื่องอยู่ใน Domain ค่าจาก Group Policy ของ Domain จะเขียนทับค่าในเครื่อง ให้ตรวจด้วย gpresult /h C:\gp.html แล้วเปิดไฟล์ดูว่านโยบายใดเป็นตัวกำหนด หรือสั่ง gpupdate /force หลังแก้ที่ระดับ Domain

Account Lockout Policy เป็นเพียงหนึ่งชั้นของการป้องกัน ควรใช้ร่วมกับรหัสผ่านที่ยาวและการจำกัด IP เสมอ หากต้องการความช่วยเหลือในการตั้งค่า ติดต่อทีมงาน THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/

ผู้ให้บริการคลาวด์ไทย
เพื่อธุรกิจของคนไทย

"มุ่งมั่น" และ "มั่นคง"
พร้อมรับมือทุกการเติบโต
Trust Cloud
คลาว์ที่ปลอดภัย
คือรากฐานที่มั่นคง
cloud security