Permitir a los usuarios cambiar la contraseña caducada a través de la conexión de escritorio remoto

13

INFORMACIÓN:

  • Tengo una situación en la que me veo obligado a usar un servidor (Windows 2012 R2) que NO es parte de un dominio y NO tiene AD. Esta no es mi elección, no es óptima, pero está fuera de mi control.

  • También tengo usuarios locales que se conectan a este servidor a través de RDP, y los usuarios locales tienen una política de caducidad de contraseña.

  • Dado que AD / Exchange no es parte de la imagen, los usuarios no reciben notificación de que sus contraseñas están a punto de caducar.

PROBLEMA: El problema es cuando la contraseña de un usuario ha expirado e intentan iniciar sesión utilizando una Conexión a Escritorio remoto. No les permite cambiar su contraseña.

He desmarcado la opción "Permitir conexiones SOLO desde computadoras que ejecutan Escritorio remoto con autenticación de nivel de red" desde el lado del servidor, por lo que el servidor NO requiere NLA de las sesiones RDP entrantes.

Sin embargo, cuando se usa el Administrador de conexión de escritorio remoto de Windows, parece estar forzando NLA.

Si estoy usando el Cliente de escritorio remoto "Terminales", hay una opción en el lado del cliente, para deshabilitar el uso de "Autenticación de nivel de red". Si desactivo NLA a través del cliente Terminals y me conecto al servidor, me permite cambiar la contraseña expirada de los usuarios.

PREGUNTA: Supongo, quizás incorrectamente, que el programa de Terminales se encuentra en la parte superior de los protocolos de Conexión a Escritorio remoto de Windows, y que si puede deshabilitar la autenticación de Nivel de red del lado del cliente a través del programa de Terminales, entonces también debería ser capaz de deshabilite esto a través del Administrador de conexión de escritorio remoto incorporado de Windows. Desafortunadamente, no veo esta opción en la GUI de los administradores de conexión, y no veo ningún parámetro en los archivos ".RDP" específicos de NLA.

Si hago clic en "Acerca de" en el Administrador de conexión de escritorio remoto del lado del cliente, me dice que "Autenticación de nivel de red compatible". La redacción me lleva a creer que usarlo es opcional, pero nuevamente, no veo forma de desactivarlo en el administrador de conexión. Por cierto, este administrador de conexión particular es v10.

guht
fuente
1
Edité su pregunta (el título específicamente) para centrarse en su objetivo subyacente, en lugar de un método propuesto para lograr el objetivo. Ver el problema XY .
Digo reinstalar a Mónica el

Respuestas:

13

Puede resolver esto con un enfoque doble:

1. Instale el rol de Acceso web de Escritorio remoto y habilite la opción de cambio de contraseña remota

Las siguientes instrucciones son del artículo de woshub.com Permitir a los usuarios restablecer la contraseña caducada a través de RD WebAccess en Windows Server 2012 :

En Windows 2012/2012 R2 apareció una opción que permite a un usuario remoto cambiar su contraseña (actual o caducada) utilizando una página web especial en el servidor RD Web Access. La contraseña se cambiará de esta manera: un usuario inicia sesión en la página web de registro en el servidor con el rol de Acceso web de Escritorio remoto y cambia su contraseña mediante un formulario especial.

Una opción de cambio de contraseña remota está disponible en el servidor con la función de Acceso web a escritorio remoto (Acceso web de escritorio remoto), pero está deshabilitada de forma predeterminada. Para cambiar una contraseña, se utiliza un script password.aspx , que se encuentra en C: \ Windows \ Web \ RDWeb \ Pages \ en-US .

  1. Para habilitar la opción de cambio de contraseña, en el servidor con el rol de Acceso web RD configurado, abra la consola del Administrador IIS, vaya a [Nombre del servidor] -> Sitios -> Sitio web predeterminado -> RDWeb -> Páginas y abra la sección Configuración de la aplicación .

    ingrese la descripción de la imagen aquí

  2. En el panel derecho, busque el parámetro PasswordChangeEnabled y cambie su valor a verdadero .

    ingrese la descripción de la imagen aquí

  3. Puede probar el mecanismo de cambio de contraseña en la siguiente página web:

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

    ingrese la descripción de la imagen aquí

  4. Ahora, cuando intente conectarse al servidor RD Web Access con la contraseña caducada, un usuario será redirigido a la página web password.aspx y se le ofrecerá cambiar su contraseña.

    ingrese la descripción de la imagen aquí

    Tip . La misma característica de Windows Server 2008 R2 puede estar disponible después de instalar un parche especial: KB2648402 .


2. Habilite los avisos que notifican a los usuarios sobre el vencimiento de la contraseña pendiente

  1. Ejecutar gpedit.mscen el servidor RDSH para abrir la Política de grupo local
  2. Nagivate a Computer Configuration\Windows Settings\Local Policies\Security Options
  3. Edite la configuración Inicio de sesión interactivo: solicite al usuario que cambie la contraseña antes de que caduque y especifique un número razonable de días, como 14.
  4. Los usuarios, incluidos los que inician sesión a través de Escritorio remoto, recibirán una notificación antes de que caduque su contraseña.
Yo digo reinstalar a Mónica
fuente
Gracias @twisty, debería haber mencionado que instalar el rol de servidor de escritorio remoto tampoco era una opción. Sin embargo, esta es una gran información para alguien más en una situación similar. ¡Sin embargo, es bueno saber las indicaciones!
guht
3
Entonces no tiene más remedio que deshabilitar NLA en el servidor y los clientes para permitirles cambiar su contraseña. Peligrosamente, esto reduce significativamente la seguridad de las conexiones RDP.
Digo reinstalar a Mónica el
10

Resulta que esto se controla a través de una propiedad no listada en el archivo de configuración .RDP llamada "enablecredsspsupport", al establecer esto en "0" se carga la página de inicio de sesión en una sesión RDP y permite al usuario cambiar su contraseña caducada.

La sintaxis exacta necesaria en el archivo de configuración .RDP es:

enablecredsspsupport: i: 0

Si necesita más referencias o lecturas, haga clic aquí: The Tyranny of Network Level Authentication and CredSSP

guht
fuente
77
Esto funciona solo si el servidor no requiere NLA. De lo contrario, recibirá un mensaje que dice que la computadora remota requiere soporte a nivel de red pero no es compatible con la computadora local. Debería explicar qué hace realmente esta configuración, posiblemente citando un párrafo del artículo vinculado.
simlev
1
Nota: al hacer clic en el botón Guardar en Conexión a Escritorio remoto, se creará el archivo de configuración Default.rdc. (Haga clic en el botón Guardar como para ver en qué directorio está almacenado el archivo). Ese es el archivo a editar si desea esta configuración de forma predeterminada. O puede colocarlo en un archivo .RDP diferente que abra manualmente cuando lo necesite.
Bampfer
3

Ninguna de las opciones funcionó para mí ya que tengo NLA habilitado. Aquí hay una manera de cambiarlo a través de PowerShell: historia completa sobre cómo cambiar su propia contraseña caducada cuando no puede iniciar sesión en 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.'
    }
}

Simplemente ejecute Set-PasswordRemotelyy le hará 4 preguntas: nombre de usuario, contraseña anterior, contraseña nueva, controlador de dominio y cambie la contraseña por usted. Funciona desde una PC sin dominio unido también. Requiere conectividad a DC.

Chico loco
fuente
puede utilizar ECHO% LOGONSERVER% para obtener el controlador de dominio, éste y el powershell anteriormente funcionaba muy bien
kevinsky