Compartir a través de


Descripción de la característica Bloqueo inteligente de extranet en Windows Server 2016

En este artículo se describe la característica Bloqueo inteligente de extranet en Windows Server 2016.

Se aplica a: Windows Server 2016
Número de KB original: 4096478

Información general

A partir de la actualización de marzo de 2018 para Windows Server 2016, Servicios de federación de Active Directory (AD FS) (AD FS) tiene una nueva característica denominada Bloqueo inteligente deExtranet (ESL). En una era de mayores ataques a los servicios de autenticación, ESL permite a AD FS diferenciar entre los intentos de inicio de sesión de un usuario válido y los inicios de sesión de lo que puede ser un atacante. Como resultado, AD FS puede bloquear a los atacantes mientras se permite que los usuarios válidos sigan usando sus cuentas. Esto evita la denegación de servicio para los usuarios y protege contra ataques dirigidos contra cuentas de usuario conocidas.

La característica ESL está disponible para AD FS en Windows Server 2016.

Instalación y configuración de ESL

Instalación de actualizaciones en todos los nodos de la granja de servidores

En primer lugar, asegúrese de que todos los servidores de Windows Server 2016 AD FS estén actualizados a partir de las actualizaciones de Windows de marzo de 2018.

Actualizar los permisos de la base de datos de artefactos

El bloqueo inteligente de extranet requiere que la cuenta de servicio de AD FS tenga permisos para crear una nueva tabla en la base de datos de artefactos de AD FS. Inicie sesión en cualquier servidor de AD FS como administrador de AD FS y, a continuación, conceda este permiso ejecutando los siguientes comandos en una ventana del símbolo del sistema de PowerShell:

$cred= Get-Credential
Update-AdfsArtifactDatabasePermission -Credential$cred

Nota

El marcador de posición $cred es una cuenta que tiene permisos de administrador de AD FS. Esto debe proporcionar los permisos de escritura para crear la tabla.

Es posible que se produzca un error en los comandos anteriores debido a la falta de permisos suficientes porque la granja de servidores de AD FS usa SQL Server y la credencial proporcionada anteriormente no tiene permisos de administrador en SQL Server. En este caso, puede configurar los permisos de base de datos manualmente en la base de datos de SQL Server ejecutando el siguiente comando cuando esté conectado a la base de datos AdfsArtifactStore.

ALTER AUTHORIZATION ON SCHEMA::[ArtifactStore] TO [db_genevaservice]

Configuración de ESL

Se agrega un nuevo parámetro denominado ExtranetLockoutMode para admitir ESL. Contiene los siguientes valores:

  • ADPasswordCounter: este es el modo heredado de bloqueo temporal de AD FS, que no diferencia en función de la ubicación. Este es el valor predeterminado.
  • ADFSSmartLockoutLogOnly: se trata de bloqueo inteligente de extranet. En lugar de rechazar solicitudes de autenticación, AD FS escribe eventos de administrador y auditoría.
  • ADFSSmartLockoutEnforce: se trata de bloqueo inteligente extranet con compatibilidad total para bloquear solicitudes desconocidas cuando se alcanzan los umbrales.

Se recomienda establecer primero el proveedor de bloqueo para iniciar sesión durante un breve período de tiempo (de 1 a 3 días) mediante la ejecución del siguiente cmdlet. Revisa las auditorías (consulta a continuación para obtener más información) durante este período para determinar el número de cuentas que pueden verse afectadas, así como la frecuencia de estos eventos. Después de una evaluación correcta de las auditorías, establece la configuración en el modo «ADFSSmartLockoutEnforce»:

Set-AdfsProperties -ExtranetLockoutMode AdfsSmartlockoutLogOnly

En este modo, AD FS realiza el análisis, pero no bloquea ninguna solicitud debido a contadores de bloqueo. Este modo se usa para validar que el bloqueo inteligente se está ejecutando correctamente antes de habilitar el modo «aplicación».

Para que el nuevo modo surta efecto, reinicie el servicio AD FS en todos los nodos de la granja ejecutando el siguiente comando:

Restart-service adfssrv

Establecer el umbral de bloqueo y la ventana de observación

Hay dos opciones clave para ESL: umbral de bloqueo y ventana de observación.

Configuración del umbral de bloqueo

Cada vez que una autenticación basada en contraseña se realiza correctamente, AD FS almacena las direcciones IP de cliente como ubicaciones conocidas en la tabla de actividad de la cuenta.

Si se produce un error en la autenticación basada en contraseña y las credenciales no proceden de una ubicación conocida, se incrementa el recuento de autenticación con errores.

Después de que el número de intentos de contraseña con errores de ubicaciones desconocidas alcance el umbral de bloqueo, si se produce un error en la autenticación basada en contraseña desde una ubicación desconocida, la cuenta se bloquea.

Nota:

El bloqueo continúa aplicándose a ubicaciones conocidas por separado de este nuevo contador de bloqueo desconocido.

El umbral se establece mediante Set-AdfsProperties.

Ejemplo:

Set-AdfsProperties -ExtranetLockoutThreshold 10

Configuración de la ventana de observación

La configuración de la ventana de observación permite que una cuenta se desbloquee automáticamente después de algún tiempo. Una vez desbloqueada la cuenta, se permite un intento de autenticación. Si la autenticación se realiza correctamente, el recuento de autenticación con errores se restablece a 0. Si se produce un error, el sistema espera otra ventana de observación antes de que el usuario pueda volver a intentarlo.

La ventana de observación se establece con Set-AdfsProperties como en el siguiente comando de ejemplo:

Set-AdfsProperties -ExtranetObservationWindow ( new-timespan -minutes 5 )

Habilitación del bloqueo

El bloqueo de extranet se puede habilitar o deshabilitar mediante el parámetro EnableExtranetLockout como en los ejemplos siguientes.

Para habilitar el bloqueo, ejecute el siguiente comando:

Set-AdfsProperties -EnableExtranetLockout $true

Para deshabilitar el bloqueo, ejecute el siguiente comando:

Set-AdfsProperties -EnableExtranetLockout $false

Habilitación del modo de aplicación

Después de estar familiarizado con el umbral de bloqueo y la ventana de observación, ESL se puede mover al modo "aplicar" mediante el siguiente cmdlet de PSH:

Set-AdfsProperties -ExtranetLockoutMode AdfsSmartLockoutEnforce

Para que el nuevo modo surta efecto, reinicie el servicio AD FS en todos los nodos de la granja mediante el comando siguiente:

Restart-service adfssrv

Administración de ESL

Administración de actividad de la cuenta de usuario

AD FS proporciona tres cmdlets para administrar los datos de actividad de la cuenta de usuario. Estos cmdlets se conectan automáticamente al nodo de la granja de servidores que contiene el rol maestro.

Nota:

Este comportamiento se puede invalidar pasando el parámetro -Server.

  • Get-ADFSAccountActivity

    Lea la actividad de la cuenta actual de una cuenta de usuario. El cmdlet siempre se conecta automáticamente al maestro de la granja de servidores mediante el punto de conexión REST de actividad de la cuenta. Por lo tanto, todos los datos siempre deben ser coherentes.

    Get-ADFSAccountActivity user@contoso.com
    
  • Set-ADFSAccountActivity

    Actualice la actividad de la cuenta de una cuenta de usuario. Esto se puede usar para agregar nuevas ubicaciones conocidas o borrar el estado de cualquier cuenta.

    Set-ADFSAccountActivity user@contoso.com -FamiliarLocation "1.2.3.4"
    
  • Reset-ADFSAccountLockout

    Restablece el contador de bloqueo de una cuenta de usuario.

    Reset-ADFSAccountLockout user@contoso.com -Familiar
    

Solución de problemas

Actualización de permisos de base de datos

Si se devuelven errores del Update-AdfsArtifactDatabasePermission cmdlet, compruebe lo siguiente:

  • Se producirá un error en la comprobación si los nodos están en la lista de granjas de servidores, pero ya no son miembros de la granja de servidores. Esto se puede corregir mediante la ejecución remove-adfsnode <node name>de .
  • Compruebe que la actualización se implementa en todos los nodos de la granja de servidores.
  • Compruebe que las credenciales que se pasan al cmdlet tienen permiso para modificar el propietario del esquema de base de datos de artefactos de AD FS.

Registro y auditoría

Cuando se rechaza una solicitud de autenticación porque la cuenta supera el umbral de bloqueo, AD FS escribirá un ExtranetLockoutEvent en el flujo de auditoría de seguridad.

Evento registrado de ejemplo

Se ha producido un evento de bloqueo de extranet. Consulte XML para obtener más información sobre los errores.
Id. de actividad: 172332e1-1301-4e56-0e00-008000000db
Datos adicionales
XML: <?xml version="1.0" encoding="utf-16"?><AuditBase xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ExtranetLockoutAudit"><AuditType>ExtranetLockout</AuditType>
<AuditResult>Failure</AuditResult>
<FailureType>ExtranetLockoutError</FailureType>
<ErrorCode>AccountRestrictedAudit</ErrorCode>
<ContextComponents>
<Componente xsi:type="ResourceAuditComponent">
<RelyingParty>http://contoso.com /adfs/services/trust</RelyingParty>
<ClaimsProvider>N/A</ClaimsProvider>
<UserId>TQDFTD\Administrator</UserId>
</Componente>
<Componente xsi:type="RequestAuditComponent">
<Servidor>N/A</Servidor>
<AuthProtocol>WSFederation</AuthProtocol>
<NetworkLocation>Intranet</NetworkLocation>
<IpAddress>4.4.4.4</IpAddress>
<ForwardedIpAddress />
<ProxyIpAddress>1.2.3.4</ProxyIpAddress>
<NetworkIpAddress>1.2.3.4</NetworkIpAddress>
<ProxyServer>N/A</ProxyServer>
<UserAgentString>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/63.0.3239.132 Safari/537.36</UserAgentString>
<Endpoint>/adfs/ls</Endpoint>
</Componente>
<Componente xsi:type="LockoutConfigAuditComponent">
<CurrentBadPasswordCount>5</CurrentBadPasswordCount>
<ConfigBadPasswordCount>5</ConfigBadPasswordCount>
<LastBadAttempt>02/07/2018 21:47:44</LastBadAttempt>
<LockoutWindowConfig>00:30:00</LockoutWindowConfig>
</Componente>
</ContextComponents>
</AuditBase>

Desinstalación

Las granjas de bases de datos de SQL Server pueden desinstalar la actualización mediante la aplicación Configuración sin problema.

Las granjas de bases de datos WID deben seguir estos pasos debido al binario de comprobación de la base de datos WID actualizado:

  1. Ejecute el script Uninstall psh (Desinstalar psh) que detiene el servicio y quita la tabla de actividad de la cuenta.

    Stop-Service adfssrv -ErrorAction Stop
    
    $doc = new-object Xml
    $doc.Load("$env:windir\ADFS\Microsoft.IdentityServer.Servicehost.exe.config")
    $connString = $doc.configuration.'microsoft.identityServer.service'.policystore.connectionString
    
    if ( -not $connString -like "*##wid*" )
    {
        Write-Error "SQL installs don't require DB updates, skipping DB table drop"
    }
    else
    {
            $connString = "Data Source=np:\\.\pipe\microsoft##wid\tsql\query;Initial Catalog=AdfsArtifactStore;Integrated Security=True"
            stop-service adfssrv
            $cli = new-object System.Data.SqlClient.SqlConnection
            $cli.ConnectionString = $connString
            $cli.Open()
            try
            {
            $cmd = new-object System.Data.SqlClient.SqlCommand
            $cmd.CommandText = "IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[ArtifactStore].[AccountActivity]') AND type in (N'U')) DROP TABLE [ArtifactStore].[AccountActivity]"
            $cmd.Connection = $cli
            $cmd.ExecuteNonQuery()
        }
        finally
        {
            $cli.CLose()
        } write-warning "Finish removing the patch using the Settings app and then restart the complete to complete the uninstall"
    }
    
  2. Desinstale la actualización mediante la aplicación de configuración.

  3. Reinicie el equipo.