Configuración de la autenticación Kerberos para servicios de acceso de cliente con equilibrio de carga

Para poder usar la autenticación Kerberos con servidores de buzones con equilibrio de carga que ejecutan servicios de acceso de cliente, debe completar los pasos de configuración descritos en este artículo.

Crear la credencial de cuenta de servicio alternativa en Servicios de dominio de Active Directory

Todos los servidores de Exchange que ejecutan servicios de acceso de cliente que comparten los mismos espacios de nombres y direcciones URL deben usar la misma credencial de cuenta de servicio alternativa o (credencial ASA). Por lo general, es suficiente tener una cuenta para un bosque para cada versión de Exchange.

Importante

Exchange 2010 y Exchange 2016 no pueden compartir la misma credencial asa. Si la credencial asa se creó para Exchange 2010, tiene que crear una nueva para Exchange 2016.

Aunque los registros CNAME se admiten para los espacios de nombres compartidos, Microsoft recomienda el uso de registros A. De esta forma se garantiza que el cliente emite correctamente una solicitud de vale Kerberos basada en el nombre compartido y no en el FQDN del servidor.

Nota:

Las cuentas de servicio administradas de grupo (gMSA) no se admiten en entornos de Exchange Server locales y, por tanto, no se pueden usar en este escenario.

Cuando configure la credencial ASA, tenga en cuenta estas directrices:

  • Tipo de cuenta: se recomienda crear una cuenta de equipo en lugar de una cuenta de usuario. Una cuenta de equipo no permite inicio de sesión interactivo y puede tener directivas de seguridad más sencillas que una cuenta de usuario. Si crea una cuenta de equipo, la contraseña no expira, pero de todas formas se recomienda actualizar la contraseña de manera periódica. Puede usar una directiva de grupo local para especificar una antigüedad máxima para la cuenta de equipo y scripts para eliminar periódicamente cuentas de equipo que no cumplan las directivas actuales. La directiva de seguridad local también determina cuándo tiene que cambiar la contraseña. Aunque se recomienda usar una cuenta de equipo, puede crear una cuenta de usuario.

  • Nombre de cuenta: no hay requisitos para el nombre de la cuenta. Puede usar cualquier nombre que cumpla con su esquema de nombre.

  • Grupo de cuentas: la cuenta que usa para la credencial ASA no necesita privilegios de seguridad especiales. Si usa una cuenta de equipo, la cuenta solo debe ser miembro del grupo de seguridad Equipos de dominio. Si usa una cuenta de usuario, la cuenta solo debe ser miembro del grupo de seguridad Usuarios del dominio.

  • Contraseña de cuenta: se usará la contraseña que proporcione al crear la cuenta. Por ello, cuando cree la cuenta, debe usar una contraseña compleja y asegurarse de que se ajusta a los requisitos de contraseña de su organización.

Procedimiento para crear la credencial ASA como una cuenta de equipo

  1. En un equipo unido a un dominio, ejecute Windows PowerShell o el Shell de administración de Exchange.

    Use el cmdlet Import-Module para importar el módulo de Active Directory.

    Import-Module ActiveDirectory
    
  2. Use el cmdlet New-ADComputer para crear una nueva cuenta de equipo de Active Directory mediante esta sintaxis de cmdlet:

    New-ADComputer [-Name] <string> [-AccountPassword <SecureString>] [-AllowReversiblePasswordEncryption <System.Nullable[boolean]>] [-Description <string>] [-Enabled <System.Nullable[bool]>]
    

    Ejemplo:

    New-ADComputer -Name EXCH2016ASA -AccountPassword (Read-Host 'Enter password' -AsSecureString) -Description 'Alternate Service Account credentials for Exchange' -Enabled:$True -SamAccountName EXCH2016ASA
    

    Donde EXCH2016ASA es el nombre de la cuenta, la descripción Credenciales de cuenta de servicio alternativa para Exchange es lo que quiera que sea, y el valor del parámetro SamAccountName , en este caso EXCH2016ASA, debe ser único en el directorio.

  3. Use el cmdlet Set-ADComputer para habilitar el soporte de cifrado AES 256 que usa Kerberos siguiendo esta sintaxis de cmdlet:

    Set-ADComputer [-Name] <string> [-add @{<attributename>="<value>"]
    

    Ejemplo:

    Set-ADComputer EXCH2016ASA -add @{"msDS-SupportedEncryptionTypes"="28"}
    

    Donde EXCH2016ASA es el nombre de la cuenta y el atributo que se va a modificar es msDS-SupportedEncryptionTypes con un valor decimal de 28, lo que permite los siguientes cifrados: RC4-HMAC, AES128-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96.

Para obtener más información acerca de estos cmdlets, consulte Import-Module y New-ADComputer.

Escenarios entre bosques

Si tiene una implementación entre bosques o bosques de recursos y tiene usuarios que están fuera del bosque de Active Directory que contiene Exchange, debe configurar relaciones de confianza de bosque entre los bosques. Además, para cada bosque de la implementación, debe configurar una regla de enrutamiento que permita la confianza entre todos los sufijos de nombre dentro del bosque y entre bosques. Para obtener más información sobre la administración de confianzas entre bosques, consulte Configuración de organizaciones asociadas.

Identificar los nombres de entidad de seguridad de servicio para asociar con la credencial de ASA

Después de crear la credencial ASA, usted tiene que asociar los nombres de entidad de seguridad del servicio exchange (SPN) con la credencial ASA. La lista de SPN de Exchange puede variar con su configuración, pero al menos debería incluir lo siguiente:

  • http/: use este SPN para Outlook en cualquier lugar, MAPI a través de HTTP, servicios web de Exchange, detección automática y libreta de direcciones sin conexión.

Los valores de SPN deben coincidir con el nombre del servicio en el equilibrador de carga de red en lugar de en servidores individuales. Para ayudarle a pensar los valores de SPN que debe usar, tenga en cuenta los escenarios siguientes:

En cada uno de estos escenarios, suponga que los nombres de dominio completos (FQDN) con equilibrio de carga se han implementado para las direcciones URL internas, las direcciones URL externas y el URI interno de detección automática que usan los miembros que ejecutan servicios de acceso de cliente.

Sitio único de Active Directory

Si tiene un sitio único de Active Directory, su entorno se puede parecer al de la siguiente figura:

varios sitios de AD.

En función de los FQDN que usan los clientes internos de Outlook en la ilustración anterior, debe asociar los siguientes SPN con la credencial ASA:

  • http/mail.corp.tailspintoys.com
  • http/autodiscover.corp.tailspintoys.com

Varios sitios de Active Directory

Si tiene varios sitios de Active Directory, su entorno se puede parecer al de la siguiente figura:

varios sitios de AD.

En función de los FQDN que usan los clientes de Outlook en la ilustración anterior, tendría que asociar los siguientes SPN con la credencial ASA que usan los servidores de buzón que ejecutan los servicios de acceso de cliente en ADSite 1:

  • http/mail.corp.tailspintoys.com
  • http/autodiscover.corp.tailspintoys.com

También tendría que asociar los siguientes SPN con la credencial ASA que usan los servidores de buzones de correo que ejecutan los servicios de acceso de cliente en ADSite 2:

  • http/mailsdc.corp.tailspintoys.com
  • http/autodiscoversdc.corp.tailspintoys.com

Configure y compruebe la configuración de la credencial ASA en cada servidor que ejecute servicios de acceso de cliente.

Después de crear la cuenta, debe comprobar que la cuenta se ha replicado en todos los controladores de dominio de AD DS. En concreto, la cuenta debe estar presente en cada servidor que ejecute los servicios de acceso de cliente que usarán la credencial ASA. A continuación, configure la cuenta como la credencial ASA en cada servidor que ejecuta los servicios de acceso de cliente en su implementación.

Para configurar la credencial ASA, use el Shell de administración de Exchange tal como se describe en uno de estos procedimientos:

  • Implementación de la credencial ASA en el primer servidor exchange que ejecuta servicios de acceso de cliente
  • Implementación de la credencial asa en servidores exchange posteriores que ejecutan servicios de acceso de cliente

El único método admitido para implementar la credencial ASA es usar el script RollAlternateServiceAcountPassword.ps1. Para obtener más información y los permisos necesarios para ejecutar el script, consulte Uso del script de RollAlternateserviceAccountCredential.ps1 en el shell. Una vez ejecutado el script, recomendamos que compruebe que todos los servidores de destino se hayan actualizado correctamente.

Implementación de la credencial ASA en el primer servidor exchange que ejecuta servicios de acceso de cliente

  1. Abra el Shell de administración de Exchange en un servidor de Exchange 2016 o Exchange 2019.

  2. Cambie los directorios al <directorio> de instalación de Exchange 2016\V15\Scripts.

  3. Ejecute el siguiente comando para implementar la credencial asa en el primer servidor de Exchange 2016 o Exchange 2019 que ejecuta los servicios de acceso de cliente:

    .\RollAlternateServiceAccountPassword.ps1 -ToSpecificServer cas-1.corp.tailspintoys.com -GenerateNewPasswordFor tailspin\EXCH2016ASA$
    
  4. Cuando se le pregunte si quiere cambiar la contraseña de la cuenta de servicio alternativa, conteste .

El siguiente es un ejemplo del resultado que aparece al ejecutar el script RollAlternateServiceAccountPassword.ps1.

========== Starting at 01/12/2016 10:17:47 ==========
Creating a new session for implicit remoting of "Get-ExchangeServer" command...
Destination servers that will be updated:
Name                                                        PSComputerName
----                                                        --------------
cas-1                                                   cas-1.corp.tailspintoys.com
Credentials that will be pushed to every server in the specified scope (recent first):
UserName
Password
--------
--------
tailspin\EXCH2016ASA$
System.Security.SecureString
Prior to pushing new credentials, all existing credentials that are invalid or no longer work will be removed from  the destination servers.
Pushing credentials to server mbx-1
Setting a new password on Alternate Service Account in Active Directory
Password change
Do you want to change password for tailspin\EXCH2016ASA$ in Active Directory at this time?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): y
Preparing to update Active Directory with a new password for tailspin\EXCH2016ASA$ ...
Resetting a password in the Active Directory for tailspin\EXCH2016ASA$ ...
New password was successfully set to Active Directory.
Retrieving the current Alternate Service Account configuration from servers in scope
Alternate Service Account properties:
StructuralObjectClass QualifiedUserName Last Pwd Update       SPNs
--------------------- ----------------- ---------------       ----
computer              tailspin\EXCH2016ASA$   1/12/2016 10:19:53 AM
Per-server Alternate Service Account configuration as of the time of script completion:
   Array: {mail.corp.tailspintoys.com}
Identity  AlternateServiceAccountConfiguration
--------  ------------------------------------
cas-1 Latest: 1/12/2016 10:19:22 AM, tailspin\EXCH2016ASA$
          ...
========== Finished at 01/12/2016 10:20:00 ==========
        THE SCRIPT HAS SUCCEEDED

Implementación de la credencial ASA en otro servidor exchange que ejecuta servicios de acceso de cliente

  1. Abra el Shell de administración de Exchange en un servidor de Exchange 2016 o Exchange 2019.

  2. Cambie los directorios al <directorio> de instalación de Exchange 2016\V15\Scripts.

  3. Ejecute el siguiente comando para implementar la credencial ASA en otro servidor de Exchange 2016 o Exchange 2019 que ejecute servicios de acceso de cliente:

    .\RollAlternateServiceAccountPassword.ps1 -ToSpecificServer cas-2.corp.tailspintoys.com -CopyFrom cas-1.corp.tailspintoys.com
    
  4. Repita el paso 3 para cada servidor que ejecute los servicios de acceso de cliente en los que quiera implementar la credencial ASA.

El siguiente es un ejemplo del resultado que aparece al ejecutar el script RollAlternateServiceAccountPassword.ps1.

========== Starting at 01/12/2016 10:34:35 ==========
Destination servers that will be updated:
Name                                                        PSComputerName
----                                                        --------------
cas-2                                                   cas-2.corp.tailspintoys.com
Credentials that will be pushed to every server in the specified scope (recent first):
UserName
Password
--------
--------
tailspin\EXCH2016ASA$
System.Security.SecureString
Prior to pushing new credentials, all existing credentials will be removed from the destination servers.
Pushing credentials to server mbx-2
Retrieving the current Alternate Service Account configuration from servers in scope
Alternate Service Account properties:
StructuralObjectClass QualifiedUserName Last Pwd Update       SPNs
--------------------- ----------------- ---------------       ----
computer              tailspin\EXCH2016ASA$   1/12/2016 10:19:53 AM
Per-server Alternate Service Account configuration as of the time of script completion:
   Array: cas-2.corp.tailspintoys.com
Identity  AlternateServiceAccountConfiguration
--------  ------------------------------------
cas-2 Latest: 1/12/2016 10:37:59 AM, tailspin\EXCH2016ASA$
          ...
========== Finished at 01/12/2016 10:38:13 ==========
        THE SCRIPT HAS SUCCEEDED

Comprobar la implementación de la credencial ASA

  • Abra el Shell de administración de Exchange en un servidor de Exchange 2016 o Exchange 2019.

  • Ejecute el siguiente comando para comprobar la configuración en el servidor que ejecuta los servicios de acceso de cliente:

    Get-ClientAccessServer CAS-3 -IncludeAlternateServiceAccountCredentialStatus | Format-List Name, AlternateServiceAccountConfiguration
    
  • Repita el paso 2 en cada servidor que ejecuta los servicios de acceso de cliente para los que usted quiere verificar la implementación de la credencial ASA.

El siguiente es un ejemplo del resultado que se muestra cuando se ejecuta el comando Get-ClientAccessServer anterior y aún no se había establecido ninguna credencial ASA.

Name                                 : CAS-1
AlternateServiceAccountConfiguration : Latest: 1/12/2016 10:19:22 AM, tailspin\EXCH2016ASA$
                                       Previous: <Not set>
                                          ...

El siguiente es un ejemplo del resultado que se muestra cuando se ejecuta el comando Get-ClientAccessServer anterior y ya se había establecido una credencial ASA. Se devuelven la credencial ASA anterior y la fecha y hora en que se estableció.

Name                                 : CAS-3
AlternateServiceAccountConfiguration : Latest: 1/12/2016 10:19:22 AM, tailspin\EXCH2016ASA$
                                       Previous: 7/15/2015 12:58:35 PM, tailspin\oldSharedServiceAccountName$
                                          ...

Asociar nombres de entidad de seguridad de servicio (SPN) con la credencial ASA

Importante

No asocie SPN con una credencial ASA hasta que haya implementado esa credencial en al menos una Exchange Server, como se describió anteriormente en Implementación de la credencial ASA en el primer servidor exchange que ejecuta servicios de acceso de cliente. De lo contrario, se producirán errores de autenticación Kerberos.

Antes de asociar los SPN con la credencial ASA, debe comprobar que los SPN de destino no están asociados ya con una cuenta diferente en el bosque. La credencial ASA debe ser la única cuenta en el bosque con el que se asocian estos SPN. Puede comprobar que ninguna otra cuenta en el bosque esté asociada con los SPN ejecutando el comando setspn desde la línea de comandos.

Ejecutar el comando setspn para comprobar que un SPN no está asociado todavía con una cuenta en un bosque

  1. Presione Inicio. En el cuadro Buscar, escriba Símbolo del sistema y, en la lista de resultados, seleccione Símbolo del sistema.

  2. En el símbolo del sistema, escriba el siguiente comando:

    setspn -F -Q <SPN>
    

    Donde <SPN> es el SPN que desea asociar con la credencial ASA. Por ejemplo:

    setspn -F -Q http/mail.corp.tailspintoys.com
    

    El comando no debe devolver nada. Si devuelve algo, otra cuenta ya está asociada al SPN. Repita este paso una vez para cada SPN que desee asociar con la credencial ASA.

Asociar un SPN con una credencial ASA mediante el comando setspn

  1. Presione Inicio. En el cuadro Buscar , escriba Símbolo del sistema y, a continuación, seleccione Símbolo del sistema en la lista de resultados.

  2. En el símbolo del sistema, escriba el siguiente comando:

    setspn -S <SPN> <Account>$
    

    Donde <SPN> es el SPN que desea asociar con la credencial ASA y <Account> es la cuenta asociada con la credencial ASA. Por ejemplo:

    setspn -S http/mail.corp.tailspintoys.com tailspin\EXCH2016ASA$
    

    Ejecute este comando una vez para cada SPN que desee asociar con la credencial ASA.

Ejecutar el comando setspn para comprobar que ha asociado los SPN con las credenciales ASA

  1. Presione Inicio. En el cuadro Buscar , escriba Símbolo del sistema y, a continuación, seleccione Símbolo del sistema en la lista de resultados.

  2. En el símbolo del sistema, escriba el siguiente comando:

    setspn -L <Account>$
    

    Donde <Account> es la cuenta asociada con la credencial ASA. Por ejemplo:

    setspn -L tailspin\EXCH2016ASA$
    

    Solo tiene que ejecutar este comando una vez.

Habilitar la autenticación Kerberos para los clientes de Outlook

  1. Abra el Shell de administración de Exchange en un servidor de Exchange 2016 o Exchange 2019.

  2. Para habilitar la autenticación Kerberos para los clientes de Outlook Anywhere, ejecute el siguiente comando en el servidor de Exchange 2016 o Exchange 2019 que ejecuta servicios de acceso de cliente:

    Get-OutlookAnywhere -Server CAS-1 | Set-OutlookAnywhere -InternalClientAuthenticationMethod  Negotiate
    
  3. Para habilitar la autenticación Kerberos para clientes MAPI a través de HTTP, ejecute el siguiente comando en el servidor de Exchange 2016 o Exchange 2019 que ejecuta servicios de acceso de cliente:

    Get-MapiVirtualDirectory -Server CAS-1 | Set-MapiVirtualDirectory -IISAuthenticationMethods Ntlm,Negotiate
    

    En entornos híbridos con Exchange Online o si usa OAuth internamente, ejecute los siguientes comandos en el servidor de Exchange 2016 o Exchange 2019 que ejecuta servicios de acceso de cliente:

    $mapidir = Get-MapiVirtualDirectory -Server CAS-1
    $mapidir | Set-MapiVirtualDirectory -IISAuthenticationMethods ($mapidir.IISAuthenticationMethods +='Negotiate')
    
  4. Repita los pasos 2 y 3 para cada servidor de Exchange 2016 o Exchange 2019 que ejecute servicios de acceso de cliente para los que quiera habilitar la autenticación Kerberos.

Comprobación de la autenticación Kerberos del cliente de Exchange

Una vez que haya configurado correctamente Kerberos y la credencial ASA, compruebe que los clientes pueden autenticarse correctamente, como se describe en estas tareas.

Comprobar si se está ejecutando el servicio de Microsoft Exchange Service Host

El servicio Host de servicio de Microsoft Exchange (MSExchangeServiceHost) en el servidor que ejecuta servicios de acceso de cliente es responsable de administrar la credencial ASA. Si MSExchangeServiceHost no se está ejecutando, no es posible la autenticación Kerberos. De forma predeterminada, el servicio está configurado para iniciarse de forma automática al iniciar el equipo.

Procedimiento para comprobar si se inició el servicio de Microsoft Exchange Service Host

  1. Haga clic en Inicio, escriba services.msc y seleccione services.msc en la lista.

  2. En la ventana Servicios, busque el servicio Microsoft Exchange Service Host en la lista de servicios.

  3. El estado del servicio debe ser En ejecución. Si el estado no es En ejecución, haga clic con el botón secundario en el servicio y, a continuación, haga clic en Inicio.

Comprobación de Kerberos desde el servidor que ejecuta servicios de acceso de cliente

Cuando configuró la credencial ASA en cada servidor que ejecuta servicios de acceso de cliente, ejecutó el cmdlet Set-ClientAccessServer . Después de ejecutar este cmdlet, puede usar los registros para comprobar las conexiones Kerberos correctas.

Compruebe que Kerberos funciona correctamente mediante el archivo de registro HttpProxy.

  1. En un editor de texto, examine la carpeta donde se almacena el registro de HttpProxy. De forma predeterminada, el archivo está almacenado en la siguiente carpeta:

    %ExchangeInstallPath%\Logging\HttpProxy\RpcHttp

  2. Abra el archivo de registro más reciente y busque la palabra Negotiate. La línea del archivo de registro debe ser similar al siguiente ejemplo:

    2014-02-19T13:30:49.219Z,e19d08f4-e04c-42da-a6be-b7484b396db0,15,0,775,22,,RpcHttp,mail.corp.tailspintoys.com,/rpc/rpcproxy.dll,,Negotiate,True,tailspin\Wendy,tailspintoys.com,MailboxGuid~ad44b1e0-e44f-4a16-9396-3a437f594f88,MSRPC,192.168.1.77,EXCH1,200,200,,RPC_OUT_DATA,Proxy,exch2.tailspintoys.com,15.00.0775.000,IntraForest,MailboxGuidWithDomain,,,,76,462,1,,1,1,,0,,0,,0,0,16272.3359,0,0,3,0,23,0,25,0,16280,1,16274,16230,16233,16234,16282,?ad44b1e0-e44f-4a16-9396-3a437f594f88@tailspintoys.com:6001,,BeginRequest=2014-02-19T13:30:32.946Z;BeginGetRequestStream=2014-02-19T13:30:32.946Z;OnRequestStreamReady=2014-02-19T13:30:32.946Z;BeginGetResponse=2014-02-19T13:30:32.946Z;OnResponseReady=2014-02-19T13:30:32.977Z;EndGetResponse=2014-02-19T13:30:32.977Z;,PossibleException=IOException;
    

    Si ve que el valor AuthenticationType es Negotiate, el servidor está creando correctamente conexiones autenticadas kerberos.

Mantener la credencial ASA

Si usted tiene que actualizar la contraseña en la credencial ASA periódicamente, utilice los pasos para configurar la credencial ASA en este artículo. Considere la posibilidad de configurar una tarea programada para realizar el mantenimiento de contraseñas habitual. Asegúrese de supervisar las tareas programadas para garantizar la sustitución oportuna de contraseñas y evitar los posibles cortes de autenticación.

Apagar la autenticación Kerberos

Para configurar los servidores que ejecutan servicios de acceso de cliente para dejar de usar Kerberos, desasocie o quite los SPN de la credencial ASA. Si se quitan los SPN, los clientes no probarán la autenticación Kerberos y los clientes configurados para usar la autenticación Negotiate usarán NTLM en su lugar. Los clientes configurados para usar solo Kerberos no podrán conectarse. Después de quitar los SPN, también debe eliminar la cuenta.

Para quitar la credencial ASA

  1. Abra el Shell de administración de Exchange en un servidor de Exchange 2016 o Exchange 2019 y ejecute el siguiente comando:

    Set-ClientAccessServer CAS-1 -RemoveAlternateServiceAccountCredentials
    
  2. Aunque no tiene que hacer esto inmediatamente, en algún momento tendrá que reiniciar todos los equipos cliente para borrar la memoria caché de vales de Kerberos del equipo.