อนุญาตให้ผู้ใช้เปลี่ยนรหัสผ่านที่หมดอายุผ่านการเชื่อมต่อเดสก์ท็อประยะไกล


13

ข้อมูล:

  • ฉันมีสถานการณ์ที่ฉันถูกบังคับให้ใช้เซิร์ฟเวอร์ (Windows 2012 R2) ที่ไม่ได้เป็นส่วนหนึ่งของโดเมนและไม่มีโฆษณา นี่ไม่ใช่ตัวเลือกของฉันไม่เหมาะสม แต่อยู่นอกเหนือการควบคุมของฉัน

  • ฉันยังมีผู้ใช้ท้องถิ่นที่เชื่อมต่อกับเซิร์ฟเวอร์นี้ผ่าน RDP และผู้ใช้ในพื้นที่มีนโยบายการหมดอายุรหัสผ่าน

  • เนื่องจาก AD / Exchange ไม่ได้เป็นส่วนหนึ่งของรูปภาพผู้ใช้จะไม่ได้รับการแจ้งเตือนว่ารหัสผ่านของพวกเขากำลังจะหมดอายุ

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

ฉันได้ยกเลิกการเลือก "อนุญาตการเชื่อมต่อจากคอมพิวเตอร์ที่รันเดสก์ท็อประยะไกลด้วยการรับรองความถูกต้องระดับเครือข่าย" จากฝั่งเซิร์ฟเวอร์ดังนั้นเซิร์ฟเวอร์จึงไม่ต้องการ NLA จากเซสชัน RDP ขาเข้า

อย่างไรก็ตามเมื่อใช้ Windows Remote Desktop Connection Manager ดูเหมือนว่าจะบังคับให้ NLA

หากฉันใช้ไคลเอ็นต์เดสก์ท็อประยะไกล "เทอร์มินัล" มีตัวเลือกในฝั่งไคลเอ็นต์เพื่อปิดใช้งานโดยใช้ "การรับรองความถูกต้องระดับเครือข่าย" หากฉันปิดการใช้งาน NLA ผ่านทางไคลเอนต์ Terminals และฉันเชื่อมต่อกับเซิร์ฟเวอร์จะช่วยให้ฉันเปลี่ยนรหัสผ่านที่หมดอายุของผู้ใช้

คำถาม: ฉันกำลังตั้งสมมติฐานว่าอาจไม่ถูกต้องว่าโปรแกรม Terminals กำลังนั่งอยู่บนโปรโตคอล Windows Remote Desktop Connection และถ้าคุณสามารถปิดการใช้งานด้านไคลเอนต์ Network Level Authentication ผ่านโปรแกรม Terminals คุณควรจะสามารถ ปิดการใช้งานผ่านตัวจัดการการเชื่อมต่อเดสก์ท็อประยะไกลใน Windows น่าเสียดายที่ฉันไม่เห็นตัวเลือกนี้ใน GUI ผู้จัดการการเชื่อมต่อและฉันไม่เห็นพารามิเตอร์ใด ๆ ในไฟล์ ".RDP" เฉพาะสำหรับ NLA

ถ้าฉันคลิก "เกี่ยวกับ" ที่ฝั่งไคลเอนต์ Remote Desktop Connection Manager มันจะบอกฉันว่า "รองรับการรับรองความถูกต้องระดับเครือข่าย" การใช้ถ้อยคำทำให้ฉันเชื่อว่าการใช้มันเป็นทางเลือก แต่อีกครั้งฉันไม่เห็นวิธีที่จะปิดการใช้งานในเครื่องมือจัดการการเชื่อมต่อ BTW ผู้จัดการการเชื่อมต่อนี้คือ v10


1
ฉันแก้ไขคำถามของคุณ (ชื่อเรื่องเฉพาะ) เพื่อมุ่งเน้นไปที่เป้าหมายพื้นฐานของคุณแทนที่จะเป็นวิธีการที่เสนอเพื่อบรรลุเป้าหมาย ดูปัญหา XY
ฉันพูดว่า Reinstate Monica

คำตอบ:


13

คุณสามารถแก้ปัญหานี้ด้วยวิธีการสองง่าม:

1. ติดตั้งบทบาท RD Web Access และเปิดใช้งานตัวเลือกการเปลี่ยนรหัสผ่านระยะไกล

คำแนะนำต่อไปนี้มาจากบทความ woshub.com อนุญาตให้ผู้ใช้รีเซ็ตรหัสผ่านที่หมดอายุผ่าน RD WebAccess ใน Windows Server 2012 :

ใน Windows 2012/2012 R2 มีตัวเลือกที่อนุญาตให้ผู้ใช้ระยะไกลเปลี่ยนรหัสผ่าน (ปัจจุบันหรือหมดอายุ) โดยใช้หน้าเว็บพิเศษบนเซิร์ฟเวอร์ RD Web Access รหัสผ่านจะถูกเปลี่ยนเช่นนี้ผู้ใช้ลงชื่อเข้าใช้เว็บเพจการลงทะเบียนบนเซิร์ฟเวอร์ที่มีบทบาทการเข้าถึงเว็บ RD และเปลี่ยนรหัสผ่านของเขาโดยใช้แบบฟอร์มพิเศษ

ตัวเลือกการเปลี่ยนรหัสผ่านระยะไกลมีอยู่บนเซิร์ฟเวอร์ที่มีบทบาท Remote Desktop Web Access (การเข้าถึงเว็บ RD) แต่จะถูกปิดใช้งานตามค่าเริ่มต้น การเปลี่ยนรหัสผ่านสคริปต์password.aspxถูกนำมาใช้ซึ่งตั้งอยู่ในC: \ Windows \ Web \ RDWeb \ หน้า \ en-US

  1. เมื่อต้องการเปิดใช้ตัวเลือกการเปลี่ยนรหัสผ่านบนเซิร์ฟเวอร์ด้วยการกำหนดค่าบทบาทเข้าถึงเว็บ RD เปิดตัวจัดการ IIS คอนโซลไปที่ [ชื่อเซิร์ฟเวอร์] -> Sites -> เริ่มต้นเว็บไซต์ -> RDWeb -> หน้าและเปิดการตั้งค่าในส่วนของโปรแกรมประยุกต์

    ป้อนคำอธิบายรูปภาพที่นี่

  2. ในบานหน้าต่างด้านขวาพบPasswordChangeEnabledพารามิเตอร์และเปลี่ยนค่าของจริง

    ป้อนคำอธิบายรูปภาพที่นี่

  3. คุณสามารถทดสอบกลไกการเปลี่ยนรหัสผ่านไปที่หน้าเว็บต่อไปนี้:

    https: //RDSServerName/RDWeb/Pages/en-US/password.aspx

    ป้อนคำอธิบายรูปภาพที่นี่

  4. ตอนนี้เมื่อพยายามเชื่อมต่อกับเซิร์ฟเวอร์ RD Web Access ด้วยรหัสผ่านที่หมดอายุผู้ใช้จะถูกเปลี่ยนเส้นทางไปยัง password.aspx เว็บเพจและเสนอให้เปลี่ยนรหัสผ่านของเขา

    ป้อนคำอธิบายรูปภาพที่นี่

    ปลาย คุณลักษณะเดียวกัน Windows Server 2008 R2 จะกลายเป็นพร้อมใช้งานหลังจากที่คุณติดตั้งแพทช์ - พิเศษKB2648402


2. เปิดใช้งานจะแจ้งให้ผู้ใช้ทราบถึงการหมดอายุของรหัสผ่านที่ค้างอยู่

  1. เรียกใช้gpedit.mscบนเซิร์ฟเวอร์ RDSH เพื่อเปิดนโยบายกลุ่มภายใน
  2. ทำความรู้จักกับ Computer Configuration\Windows Settings\Local Policies\Security Options
  3. แก้ไขการตั้งค่าการเข้าสู่ระบบแบบโต้ตอบ: แจ้งให้ผู้ใช้เปลี่ยนรหัสผ่านก่อนหมดอายุและระบุจำนวนวันที่เหมาะสมเช่น 14
  4. ผู้ใช้รวมถึงผู้ที่ลงชื่อเข้าใช้ผ่าน Remote Desktop จะได้รับการแจ้งเตือนก่อนที่รหัสผ่านจะหมดอายุ

ขอบคุณ @twisty ฉันควรจะกล่าวว่าการติดตั้ง Remote Desktop Server Role นั้นไม่ใช่ตัวเลือกเช่นกัน อย่างไรก็ตามนี่เป็นข้อมูลที่ดีสำหรับคนอื่นในสถานการณ์ที่คล้ายคลึงกัน คำแนะนำเป็นสิ่งที่ดีที่จะรู้!
ก.ค.

3
จากนั้นคุณไม่มีทางเลือกนอกจากปิดใช้งาน NLA บนเซิร์ฟเวอร์และไคลเอนต์เพื่ออนุญาตให้พวกเขาเปลี่ยนรหัสผ่านของพวกเขา อันตรายนี้ลดความปลอดภัยของการเชื่อมต่อ RDP อย่างมีนัยสำคัญ
ฉันพูดว่า Reinstate Monica

10

ปรากฎว่าสิ่งนี้ถูกควบคุมผ่านคุณสมบัติที่ไม่แสดงในไฟล์คอนฟิกูเรชัน. RDP ที่ชื่อ "enablecredsspsupport" โดยการตั้งค่านี้เป็น "0" จะโหลดหน้าล็อกอินในเซสชัน RDP และอนุญาตให้ผู้ใช้เปลี่ยนรหัสผ่านที่หมดอายุ

ไวยากรณ์ที่แน่นอนที่จำเป็นในไฟล์คอนฟิกูเรชัน. RDP คือ:

enablecredsspsupport: i: 0

หากคุณต้องการข้อมูลเพิ่มเติมหรืออ่านเพิ่มเติมได้ที่นี่: Tyranny of Network Level Authentication และ CredSSP


7
ใช้งานได้เฉพาะในกรณีที่เซิร์ฟเวอร์ไม่ต้องการ NLA มิฉะนั้นคุณจะได้รับข้อความแจ้งว่าต้องใช้การสนับสนุนระดับเครือข่ายโดยคอมพิวเตอร์ระยะไกล แต่ไม่รองรับในเครื่องคอมพิวเตอร์ คุณควรอธิบายว่าการตั้งค่านี้ทำอะไรได้จริงโดยอ้างอิงย่อหน้าจากบทความที่เชื่อมโยง
simlev

1
หมายเหตุ: การคลิกปุ่มบันทึกในการเชื่อมต่อเดสก์ท็อประยะไกลจะสร้างไฟล์กำหนดค่า Default.rdc (คลิกปุ่มบันทึกเป็นเพื่อดูว่าไฟล์เก็บไว้ในไดเรกทอรีใด) นั่นคือไฟล์ที่จะแก้ไขหากคุณต้องการให้การตั้งค่านี้เป็นค่าเริ่มต้น หรือคุณสามารถวางไว้ในไฟล์. RDP อื่นที่คุณเปิดด้วยตนเองเมื่อคุณต้องการ
Bampfer

3

ไม่มีตัวเลือกใดที่เหมาะกับฉันตั้งแต่ฉันเปิดใช้งาน NLA นี่คือวิธีการเปลี่ยนผ่าน PowerShell - เรื่องราวทั้งหมดเกี่ยวกับวิธีการเปลี่ยนรหัสผ่านที่หมดอายุของคุณเองเมื่อคุณไม่สามารถเข้าสู่ RDPได้

function Set-PasswordRemotely {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true)][string] $UserName,
        [Parameter(Mandatory = $true)][string] $OldPassword,
        [Parameter(Mandatory = $true)][string] $NewPassword,
        [Parameter(Mandatory = $true)][alias('DC', 'Server', 'ComputerName')][string] $DomainController
    )
    $DllImport = @'
[DllImport("netapi32.dll", CharSet = CharSet.Unicode)]
public static extern bool NetUserChangePassword(string domain, string username, string oldpassword, string newpassword);
'@
    $NetApi32 = Add-Type -MemberDefinition $DllImport -Name 'NetApi32' -Namespace 'Win32' -PassThru
    if ($result = $NetApi32::NetUserChangePassword($DomainController, $UserName, $OldPassword, $NewPassword)) {
        Write-Output -InputObject 'Password change failed. Please try again.'
    } else {
        Write-Output -InputObject 'Password change succeeded.'
    }
}

เพียงแค่เรียกใช้Set-PasswordRemotelyและมันจะถามคุณ 4 คำถาม - ชื่อผู้ใช้รหัสผ่านเก่ารหัสผ่านใหม่ตัวควบคุมโดเมนและเปลี่ยนรหัสผ่านสำหรับคุณ มันทำงานได้จากพีซีที่ไม่ใช่โดเมนร่วมด้วยเช่นกัน ต้องเชื่อมต่อกับ DC


คุณสามารถใช้ ECHO% LOGONSERVER% เพื่อให้ตัวควบคุมโดเมนของคุณใช้งานได้และสิ่งที่ดีกว่านี้ก็ใช้งานได้ดี
kevinsky
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.