web-dev-qa-db-fra.com

Autoriser les utilisateurs à modifier le mot de passe expiré via une connexion Bureau à distance

INFORMATION:

  • J'ai une situation où je suis obligé d'utiliser un serveur (Windows 2012 R2) qui ne fait pas partie d'un domaine et qui n'a PAS d'AD. Ce n'est pas mon choix, ce n'est pas optimal, mais hors de mon contrôle.

  • J'ai également des utilisateurs locaux qui se connectent à ce serveur via RDP, et les utilisateurs locaux ont une stratégie d'expiration du mot de passe.

  • Comme AD/Exchange ne fait pas partie de l'image, les utilisateurs ne reçoivent aucune notification leur indiquant que leurs mots de passe sont sur le point d'expirer.

PROBLEME: Le problème vient du fait que le mot de passe d'un utilisateur a expiré et qu'il tente de se connecter à l'aide d'une connexion Bureau à distance. Cela ne leur permet pas de changer leur mot de passe.

J'ai décoché la case "Autoriser les connexions UNIQUEMENT des ordinateurs exécutant Remote Desktop avec une authentification au niveau du réseau", de sorte que le serveur N'A PAS besoin de NLA des sessions RDP entrantes.

Toutefois, lorsque vous utilisez le Gestionnaire de connexion Windows Remote Desktop, il semble forcer NLA.

Si j'utilise le client de bureau à distance "Terminals", une option du côté client permet de désactiver l'utilisation de "l'authentification au niveau du réseau". Si je désactive la NLA via le client Terminals et que je me connecte au serveur, cela me permet de modifier le mot de passe des utilisateurs expiré.

QUESTION: Je suppose, peut-être à tort, que le programme Terminals se trouve juste au-dessus des protocoles de connexion au bureau à distance Windows et que, si vous pouvez désactiver le côté client de l'authentification au niveau du réseau via le programme Terminals, alors vous devriez également être en mesure de désactiver cette fonctionnalité via le gestionnaire de connexion au bureau à distance intégré à Windows. Malheureusement, je ne vois pas cette option dans l'interface graphique des gestionnaires de connexions et je ne vois aucun paramètre dans les fichiers ".RDP" spécifiques à NLA.

Si je clique sur "A propos de" du côté du gestionnaire de connexions Remote Desktop côté client, il m'indique que "l'authentification au niveau du réseau est prise en charge". Le libellé m'amène à penser que son utilisation est facultative, mais encore une fois, je ne vois aucun moyen de le désactiver dans le gestionnaire de connexions. BTW, ce gestionnaire de connexion particulier est v10.

13
guht

Il s'avère que cela est contrôlé par une propriété non répertoriée dans le fichier de configuration .RDP appelée "enablecredsspsupport". Si vous définissez cette option sur "0", la page de connexion est chargée dans une session RDP et permet à l'utilisateur de modifier son mot de passe expiré.

La syntaxe exacte requise dans le fichier de configuration .RDP est la suivante:

enablecredsspsupport: i: 0

Si vous avez besoin de références ou de lectures supplémentaires, rendez-vous ici: La tyrannie de l'authentification au niveau du réseau et de CredSSP

9
guht

Vous pouvez résoudre ceci avec une approche à deux volets:

1. Installez le rôle d'accès Web RD et activez l'option de modification du mot de passe distant.

Les instructions suivantes sont extraites de l'article woshub.com Autoriser les utilisateurs à réinitialiser le mot de passe expiré via RD WebAccess dans Windows Server 2012 :

Sous Windows 2012/2012 R2, une option permettant à un utilisateur distant de modifier son mot de passe (actuel ou expiré) à l'aide d'une page Web spéciale sur le serveur d'accès Web RD est apparue. Le mot de passe sera modifié comme suit: un utilisateur se connecte à la page Web d'enregistrement sur le serveur avec le rôle d'accès Web RD et modifie son mot de passe à l'aide d'un formulaire spécial.

Une option de modification du mot de passe distant est disponible sur le serveur avec le rôle Accès Web au Bureau à distance (RD Web Access), mais elle est désactivée par défaut. Pour changer un mot de passe, un script password.aspx est utilisé, situé dans C:\Windows\Web\RDWeb\Pages\en-US .

  1. Pour activer l'option de modification du mot de passe, sur le serveur avec le rôle d'accès Web RD configuré, ouvrez la console du gestionnaire IIS, accédez à [Nom du serveur] -> Sites -> Site Web par défaut -> RDWeb - > Pages et ouvrez la section Paramètres de l'application .

    enter image description here

  2. Dans le volet de droite, recherchez le paramètre PasswordChangeEnabled et remplacez sa valeur par true .

    enter image description here

  3. Vous pouvez tester le mécanisme de changement de mot de passe en accédant à la page Web suivante:

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

    enter image description here

  4. Désormais, lorsqu'il tente de se connecter au serveur d'accès Web RD avec le mot de passe expiré, un utilisateur est redirigé sur la page Web password.aspx et se voit proposer de modifier son mot de passe.

    enter image description here

    Astuce . La même fonctionnalité Windows Server 2008 R2 peut devenir disponible après l'installation d'un correctif spécial - KB2648402 .


2. Activer les invites informant les utilisateurs de l'expiration du mot de passe en attente

  1. Exécutez gpedit.msc sur le serveur RDSH pour ouvrir la stratégie de groupe locale.
  2. Nagiver à Computer Configuration\Windows Settings\Local Policies\Security Options
  3. Modifiez le paramètre Connexion interactive: Invitez l’utilisateur à changer le mot de passe avant l’expiration et indiquez un nombre de jours raisonnable, tel que 14.
  4. Les utilisateurs, y compris ceux connectés via Remote Desktop, recevront une notification avant l'expiration de leur mot de passe.
12

Aucune des options ne fonctionnait pour moi depuis que la NLA est activée. Voici un moyen de le changer via PowerShell - histoire complète sur Comment changer votre propre mot de passe expiré lorsque vous ne pouvez pas vous connecter à 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.'
    }
}

Exécutez simplement Set-PasswordRemotely et il vous posera 4 questions - nom d'utilisateur, ancien mot de passe, nouveau mot de passe, contrôleur de domaine et changer le mot de passe pour vous. Cela fonctionne également à partir de PC non liés à un domaine. Nécessite une connectivité à DC.

0
MadBoy