Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

การกำหนดค่านโยบายรหัสผ่านโดเมนใน Active Directory

เพื่อให้บัญชีผู้ใช้ในโดเมน Active Directory มีระดับความปลอดภัยสูง ผู้ดูแลระบบต้องกำหนดค่าและนำไปใช้ Domain Password Policy นโยบายรหัสผ่านควรให้ความซับซ้อน ความยาว และความถี่ในการเปลี่ยนรหัสผ่านของบัญชีผู้ใช้และบัญชีบริการเพียงพอ ดังนั้นจึงทำให้ผู้โจมตียากที่จะ brute-force หรือจับรหัสผ่านผู้ใช้เมื่อส่งผ่านเครือข่าย

นโยบายรหัสผ่านใน Default Domain Policy

โดยค่าเริ่มต้น ใช้การตั้งค่า Group Policy (GPO) เพื่อกำหนดข้อกำหนดทั่วไปสำหรับรหัสผ่านผู้ใช้ในโดเมน AD นโยบายรหัสผ่านของบัญชีผู้ใช้โดเมนถูกกำหนดค่าใน Default Domain Policy นโยบายนี้ลิงก์กับรากของโดเมนและต้องนำไปใช้กับ Domain Controller ที่มีบทบาท PDC Emulator

  1. เพื่อกำหนดค่านโยบายรหัสผ่านบัญชี AD ให้เปิดคอนโซล Group Policy Management (gpmc.msc)
  2. ขยายโดเมนของคุณและหา GPO ชื่อ Default Domain Policy คลิกขวาและเลือก Edit
  3. นโยบายรหัสผ่านอยู่ในส่วน GPO ดังนี้: Computer configuration → Policies → Windows Settings → Security Settings → Account Policies → Password Policy
  4. ดับเบิลคลิกการตั้งค่านโยบายเพื่อแก้ไข เพื่อเปิดใช้งานการตั้งค่านโยบายเฉพาะ ให้ติ๊ก Define this policy settings และระบุค่าที่จำเป็น (ในภาพด้านล่าง ตั้งค่าความยาวรหัสผ่านขั้นต่ำเป็น 8 ตัวอักษร) บันทึกการเปลี่ยนแปลง
  5. การตั้งค่านโยบายรหัสผ่านใหม่จะถูกนำไปใช้กับคอมพิวเตอร์โดเมนทั้งหมดในพื้นหลังภายในเวลาบางช่วง (90 นาที) ระหว่างการบูตคอมพิวเตอร์ หรือสามารถนำไปใช้ทันทีโดยรันคำสั่ง gpupdate /force

สามารถเปลี่ยนการตั้งค่านโยบายรหัสผ่านจากคอนโซล GPO Management หรือโดยใช้ PowerShell cmdlet Set-ADDefaultDomainPasswordPolicy:

Set-ADDefaultDomainPasswordPolicy -Identity woshub.com -MinPasswordLength 10 -LockoutThreshold 3

การตั้งค่านโยบายรหัสผ่านพื้นฐานบน Windows

มาพิจารณาการตั้งค่ารหัสผ่าน Windows ทั้งหมดที่มีอยู่ มีการตั้งค่ารหัสผ่าน 6 รายการใน GPO:

  • Enforce password history – กำหนดจำนวนรหัสผ่านเก่าที่เก็บใน AD ป้องกันไม่ให้ผู้ใช้นำรหัสผ่านเก้ามาใช้ซ้ำ อย่างไรก็ตาม Domain Admin หรือผู้ใช้ที่ได้รับมอบสิทธิ์รีเซ็ตรหัสผ่านใน AD สามารถตั้งรหัสผ่านเก่าให้บัญชีได้ด้วยตนเอง
  • Maximum password age – ตั้งค่าหมดอายุรหัสผ่านเป็นวัน หลังรหัสผ่านหมดอายุ Windows จะขอให้ผู้ใช้เปลี่ยนรหัสผ่าน รับประกันความสม่ำเสมอในการเปลี่ยนรหัสผ่านโดยผู้ใช้ สามารถตรวจสอบว่ารหัสผ่านของผู้ใช้เฉพาะคนหมดอายุเมื่อไหร่ด้วย PowerShell: Get-ADUser -Identity j.werder -Properties msDS-UserPasswordExpiryTimeComputed | select-object @{Name="ExpirationDate";Expression= {[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed") }}
  • Minimum password length – แนะนำว่ารหัสผ่านควรมีอย่างน้อย 8 สัญลักษณ์ (หากระบุ 0 ที่นี่ รหัสผ่านจะไม่จำเป็น)
  • Minimum password age – ตั้งค่าความถี่ที่ผู้ใช้สามารถเปลี่ยนรหัสผ่านได้ การตั้งค่านี้จะไม่ให้ผู้ใช้เปลี่ยนรหัสผ่านบ่อยเกินไปเพื่อกลับไปใช้รหัสผ่านเก่าที่ชอบโดยการลบออกจาก Password History หลังจากเปลี่ยนรหัสผ่านหลายครั้งติดกัน ปกติควรตั้งค่า 1 วัน เพื่อให้ผู้ใช้เปลี่ยนรหัสผ่านเองได้หากถูกโจมตี (มิฉะนั้นแอดมินจะต้องเปลี่ยนให้)
  • Password must meet complexity requirements – หากนโยบายเปิดใช้งาน ผู้ใช้ไม่สามารถใช้ชื่อบัญชีในรหัสผ่านได้ (ไม่เกิน 2 สัญลักษณ์ของ username หรือ Firstname ติดต่อกัน) และต้องใช้สัญลักษณ์ 3 ประเภทในรหัสผ่าน: ตัวเลข (0-9), ตัวอักษรใหญ่, ตัวอักษรเล็ก และอักขระพิเศษ ($, #%, ฯลฯ) นอกจากนี้ เพื่อป้องกันการใช้รหัสผ่านอ่อนแอ (จากพจนานุกรมรหัสผ่าน) แนะนำให้ตรวจสอบรหัสผ่านผู้ใช้ในโดเมน AD เป็นประจำ
  • Store passwords using reversible encryption – รหัสผ่านผู้ใช้ถูกเก็บในรูปแบบเข้ารหัสในฐานข้อมูล AD แต่ในบางกรณีต้องให้แอปพลิเคชันบางตัวเข้าถึงรหัสผ่านผู้ใช้ได้ หากเปิดใช้งานการตั้งค่านโยบายนี้ รหัสผ่านจะมีการป้องกันน้อยลง (เกือบ plain text) ไม่ปลอดภัย (ผู้โจมตีอาจเข้าถึงฐานข้อมูลรหัสผ่านได้หาก DC ถูกเจาะ Read-only Domain Controllers (RODC) สามารถใช้เป็นมาตรการป้องกันหนึ่งได้)

หากผู้ใช้พยายามเปลี่ยนรหัสผ่านที่ไม่ตรงกับนโยบายรหัสผ่านในโดเมน จะปรากฏข้อความข้อผิดพลาด:

Unable to update the password. The value provided for the new password does not meet the length, complexity, or history requirements of the domain.

นอกจากนี้ ควรกำหนดการตั้งค่ารหัสผ่านต่อไปนี้ในส่วน GPO Account Lockout Password:

  • Account Lockout Threshold – จำนวนครั้งที่ผู้ใช้สามารถพยายาม Sign-in ล้มเหลว (ด้วยรหัสผ่านผิด) ก่อนที่บัญชีจะถูกล็อก
  • Account Lockout Duration – ระยะเวลาที่บัญชีจะถูกล็อก หากผู้ใช้ป้อนรหัสผ่านผิดหลายครั้ง
  • Reset account lockout counter after – จำนวนนาทีที่นับถอยหลังก่อนที่ตัวนับ Account Lockout Threshold จะถูกรีเซ็ต
หากบัญชีโดเมนเฉพาะถูกล็อกบ่อยเกินไป สามารถระบุแหล่งที่มาของการล็อกบัญชีได้ด้วยวิธีนี้

การตั้งค่าเริ่มต้นของนโยบายรหัสผ่านในโดเมน AD แสดงในตารางด้านล่าง:

PolicyDefault value
Enforce password history24 passwords
Maximum password age42 days
Minimum password age1 day
Minimum password length7
Password must meet complexity requirementsEnabled
Store passwords using reversible encryptionDisabled
Account lockout durationNot set
Account lockout threshold0
Reset account lockout counter afterNot set

ใน Security Compliance Toolkit Microsoft แนะนำการตั้งค่านโยบายรหัสผ่านดังนี้:

  • Enforce Password History: 24
  • Maximum password age: not set
  • Minimum password age: not set
  • Minimum password length: 14
  • Password must meet complexity: Enabled
  • Store passwords using reversible encryption: Disabled

ในคำแนะนำ Security Baseline 1903 ล่าสุด Microsoft ระบุว่าไม่จำเป็นต้องเปิดนโยบายหมดอายุรหัสผ่านสำหรับผู้ใช้ การหมดอายุรหัสผ่านไม่เพิ่มความปลอดภัย แต่สร้างปัญหาที่ไม่จำเป็น (link)

วิธีตรวจสอบนโยบายรหัสผ่านปัจจุบันในโดเมน AD

สามารถดูการตั้งค่านโยบายรหัสผ่านปัจจุบันใน Default Domain Policy ในคอนโซล gpmc.msc (บนแท็บ Settings)

ยังสามารถแสดงข้อมูลนโยบายรหัสผ่านด้วย PowerShell (ต้องติดตั้ง AD PowerShell module บนคอมพิวเตอร์):

Get-ADDefaultDomainPasswordPolicy
ComplexityEnabled: True
DistinguishedName: DC=woshub,DC=com
LockoutDuration: 00:20:00
LockoutObservationWindow: 00:30:00
LockoutThreshold: 0
MaxPasswordAge: 60.00:00:00
MinPasswordAge: 1.00:00:00
MinPasswordLength: 8
objectClas : {domainDNS}
PasswordHistoryCount: 24
ReversibleEncryptionEnabled: False

ยังสามารถตรวจสอบการตั้งค่านโยบายรหัสผ่าน AD ปัจจุบันบนคอมพิวเตอร์โดเมนใดๆ ได้ด้วยคำสั่ง gpresult

นโยบายรหัสผ่านหลายรายการในโดเมน Active Directory

Domain Controller ที่เป็นเจ้าของบทบาท PDC Emulator FSMO Role รับผิดชอบการจัดการนโยบายรหัสผ่านของโดเมน ต้องมีสิทธิ์ Domain Administrator เพื่อแก้ไขการตั้งค่า Default Domain Policy

เริ่มต้นมีเพียงนโยบายรหัสผ่านเดียวในโดเมน ซึ่งนำไปใช้กับรากโดเมนและมีผลต่อผู้ใช้ทุกคนโดยไม่มีข้อยกเว้น (มีรายละเอียดบางอย่าง แต่เราจะพูดถึงภายหลัง) แม้จะสร้าง GPO ใหม่ด้วยการตั้งค่ารหัสผ่านที่แตกต่างและนำไปใช้กับ OU เฉพาะพร้อมพารามิเตอร์ Enforced และ Block Inheritance ก็จะไม่มีผลกับผู้ใช้

หมายเหตุ. Domain password policy มีผลต่อ AD user objects เท่านั้น รหัสผ่านของคอมพิวเตอร์ที่ให้ความเชื่อมั่นความสัมพันธ์โดเมนมีการตั้งค่า GPO ของตัวเอง

ก่อน Active Directory ใน Windows Server 2008 สามารถกำหนดค่านโยบายรหัสผ่านได้เพียงหนึ่งรายการต่อโดเมน ใน AD เวอร์ชันใหม่ สามารถสร้างนโยบายรหัสผ่านหลายรายการสำหรับผู้ใช้หรือกลุ่มต่างๆ ได้โดยใช้ Fine-Grained Password Policies (FGPP) FGPP ให้สร้างและบังคับใช้ Password Settings Objects (PSOs) ที่แตกต่างกันได้ ตัวอย่างเช่น สร้าง PSO ที่มีความยาวรหัสผ่านหรือความซับซ้อนเพิ่มขึ้นสำหรับบัญชี Domain Admin (ดูบทความ Securing administrator accounts in AD domain) หรือทำให้รหัสผ่านของบัญชีบางบัญชีง่ายขึ้นหรือปิดใช้งานได้ทั้งหมด

ในสภาพแวดล้อม Workgroup จะต้องกำหนดค่านโยบายรหัสผ่านบนแต่ละคอมพิวเตอร์โดยใช้ Local GPO editor – gpedit.msc หรือสามารถโอนการตั้งค่านโยบาย GPO ท้องถิ่นระหว่างคอมพิวเตอร์ได้ด้วยวิธีนี้