Zulassen, dass Benutzer das abgelaufene Kennwort über eine Remotedesktopverbindung ändern

13

INFORMATION:

  • Ich habe eine Situation, in der ich gezwungen bin, einen Server (Windows 2012 R2) zu verwenden, der NICHT Teil einer Domäne ist und über KEINE AD verfügt. Dies ist nicht meine Wahl, ist nicht optimal, aber außerhalb meiner Kontrolle.

  • Ich habe auch lokale Benutzer, die über RDP eine Verbindung zu diesem Server herstellen, und die lokalen Benutzer haben eine Kennwortablaufrichtlinie.

  • Da AD / Exchange nicht Teil des Bildes ist, erhalten die Benutzer keine Benachrichtigung, dass ihre Kennwörter bald ablaufen.

PROBLEM: Das Problem liegt vor, wenn das Kennwort eines Benutzers abgelaufen ist und dieser versucht, sich über eine Remotedesktopverbindung anzumelden. Es erlaubt ihnen nicht, ihr Passwort zu ändern.

Ich habe die Option "NUR Verbindungen von Computern mit Remotedesktop und Authentifizierung auf Netzwerkebene zulassen" auf der Serverseite deaktiviert, sodass der Server für eingehende RDP-Sitzungen KEINE NLA benötigt.

Bei Verwendung des Windows-Remotedesktopverbindungs-Managers scheint NLA erzwungen zu werden.

Wenn ich den Remotedesktop-Client "Terminals" verwende, gibt es auf der Clientseite eine Option zum Deaktivieren der Authentifizierung auf Netzwerkebene. Wenn ich NLA über den Terminals-Client deaktiviere und eine Verbindung zum Server herstelle, kann ich das abgelaufene Kennwort des Benutzers ändern.

FRAGE: Ich gehe möglicherweise fälschlicherweise davon aus, dass das Programm "Terminals" nur auf den Protokollen für Windows-Remotedesktopverbindungen aufbaut. Wenn Sie die clientseitige Authentifizierung auf Netzwerkebene über das Programm "Terminals" deaktivieren können, sollte dies auch möglich sein Deaktivieren Sie dies über den in Windows integrierten Remotedesktop-Verbindungs-Manager. Leider wird diese Option in der GUI des Verbindungsmanagers nicht angezeigt, und in NLA-spezifischen ".RDP" -Dateien werden keine Parameter angezeigt.

Wenn ich auf der Client-Seite des Remotedesktop-Verbindungs-Managers auf "Info" klicke, wird die Meldung "Authentifizierung auf Netzwerkebene unterstützt" angezeigt. Die Formulierung lässt mich glauben, dass die Verwendung optional ist, aber ich sehe auch hier keine Möglichkeit, sie im Verbindungsmanager zu deaktivieren. Übrigens, dieser spezielle Verbindungsmanager ist v10.

guht
quelle
1
Ich habe Ihre Frage (den Titel speziell) bearbeitet, um mich auf Ihr zugrunde liegendes Ziel zu konzentrieren, anstatt auf eine vorgeschlagene Methode zur Erreichung des Ziels. Siehe das XY-Problem .
Ich sage Reinstate Monica

Antworten:

13

Sie können dies mit einem zweigleisigen Ansatz lösen:

1. Installieren Sie die Web Access-Rolle für Remotezugriff, und aktivieren Sie die Option zum Ändern des Remotekennworts

Die folgenden Anweisungen stammen aus dem woshub.com-Artikel Zulassen, dass Benutzer abgelaufene Kennwörter über RD WebAccess in Windows Server 2012 zurücksetzen :

In Windows 2012/2012 R2 wurde eine Option angezeigt, mit der ein Remotebenutzer sein (aktuelles oder abgelaufenes) Kennwort mithilfe einer speziellen Webseite auf dem RD Web Access-Server ändern kann. Das Kennwort wird folgendermaßen geändert: Ein Benutzer meldet sich auf der Registrierungswebseite auf dem Server mit der RD-Webzugriffsrolle an und ändert sein Kennwort mithilfe eines speziellen Formulars.

Auf dem Server mit der Remotedesktop-Webzugriffsrolle (RD-Webzugriff) ist eine Option zum Ändern des Remotekennworts verfügbar, die jedoch standardmäßig deaktiviert ist. Zum Ändern eines Kennworts wird ein Skript password.aspx verwendet, das sich unter C: \ Windows \ Web \ RDWeb \ Pages \ de-DE befindet .

  1. Um die Option zum Ändern des Kennworts zu aktivieren, öffnen Sie auf dem Server mit der konfigurierten RD- Webzugriffsrolle die IIS-Manager-Konsole, gehen Sie zu [Servername] -> Sites -> Standardwebsite -> RDWeb -> Seiten und öffnen Sie den Abschnitt Anwendungseinstellungen .

    Bildbeschreibung hier eingeben

  2. Suchen Sie im rechten Bereich den Parameter PasswordChangeEnabled und ändern Sie seinen Wert in true .

    Bildbeschreibung hier eingeben

  3. Sie können den Kennwortänderungsmechanismus testen, indem Sie die folgende Webseite aufrufen:

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

    Bildbeschreibung hier eingeben

  4. Wenn nun versucht wird, mit dem abgelaufenen Kennwort eine Verbindung zum RD Web Access-Server herzustellen, wird ein Benutzer zur password.aspx-Webseite umgeleitet und aufgefordert, sein Kennwort zu ändern.

    Bildbeschreibung hier eingeben

    Tipp . Die gleiche Windows Server 2008 R2-Funktion ist möglicherweise verfügbar, nachdem Sie einen speziellen Patch installiert haben - KB2648402 .


2. Aktivieren Sie Eingabeaufforderungen, mit denen Benutzer über den Ablauf des ausstehenden Kennworts benachrichtigt werden

  1. Führen Sie gpedit.mscdas Programm auf dem RDSH-Server aus, um die lokale Gruppenrichtlinie zu öffnen
  2. Nagivate zu Computer Configuration\Windows Settings\Local Policies\Security Options
  3. Bearbeiten Sie die Einstellung Interaktive Anmeldung: Fordern Sie den Benutzer auf, das Kennwort vor Ablauf zu ändern, und geben Sie eine angemessene Anzahl von Tagen an, z. B. 14.
  4. Benutzer, einschließlich der über Remotedesktop angemeldeten Benutzer, erhalten eine Benachrichtigung, bevor ihr Kennwort abläuft.
Ich sage Reinstate Monica
quelle
Danke @twisty, ich hätte erwähnen sollen, dass die Installation der Remotedesktop-Serverrolle ebenfalls keine Option war. Dies ist jedoch eine großartige Information für jemanden, der sich in einer ähnlichen Situation befindet. Die Eingabeaufforderungen sind jedoch gut zu wissen!
Guht
3
Dann haben Sie keine andere Wahl, als NLA auf dem Server und den Clients zu deaktivieren , damit sie ihr Kennwort ändern können. Gefährlicherweise verringert dies die Sicherheit der RDP-Verbindungen erheblich.
Ich sage Reinstate Monica
10

Es hat sich herausgestellt, dass dies durch eine nicht aufgeführte Eigenschaft in der RDP-Konfigurationsdatei mit dem Namen "enablecredsspsupport" gesteuert wird. Wenn Sie diese auf "0" setzen, wird die Anmeldeseite in einer RDP-Sitzung geladen, und ein Benutzer kann sein abgelaufenes Kennwort ändern.

Die genaue Syntax, die in der .RDP-Konfigurationsdatei benötigt wird, lautet:

enablecredsspsupport: i: 0

Wenn Sie weitere Informationen benötigen, klicken Sie hier: Die Tyrannei der Authentifizierung auf Netzwerkebene und CredSSP

guht
quelle
7
Dies funktioniert nur, wenn NLA vom Server nicht benötigt wird. Andernfalls wird die Meldung angezeigt, dass der Remotecomputer Netzwerkunterstützung benötigt, diese jedoch auf dem lokalen Computer nicht unterstützt. Sie sollten erklären, was diese Einstellung tatsächlich bewirkt, und möglicherweise einen Absatz aus dem verlinkten Artikel zitieren.
Simlev
1
Hinweis: Durch Klicken auf die Schaltfläche Speichern in Remotedesktopverbindung wird die Konfigurationsdatei Default.rdc erstellt. (Klicken Sie auf die Schaltfläche Speichern unter, um zu sehen, in welchem ​​Verzeichnis die Datei gespeichert ist.) Diese Datei muss bearbeitet werden, wenn Sie diese Einstellung standardmäßig möchten. Sie können es auch in eine andere .RDP-Datei einfügen, die Sie bei Bedarf manuell öffnen.
Bampfer
2

Keine der Optionen hat bei mir funktioniert, da ich NLA aktiviert habe. Hier finden Sie eine Möglichkeit, dies über PowerShell zu ändern - eine vollständige Anleitung zum Ändern Ihres eigenen abgelaufenen Kennworts, wenn Sie sich nicht bei RDP anmelden können .

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.'
    }
}

Einfach ausführen Set-PasswordRemotelyund es werden Ihnen 4 Fragen gestellt - Benutzername, altes Passwort, neues Passwort, Domänencontroller und das Passwort für Sie ändern. Es funktioniert auch auf einem PC ohne Domänenbeitritt. Benötigt Konnektivität zu DC.

MadBoy
quelle
Sie können ECHO% LOGONSERVER% verwenden, um Ihren Domänencontroller zu erhalten. Dies und die oben genannte PowerShell haben hervorragend funktioniert
Kevin,