Freigeben über


Beschreibung des Extranet-Smart Lockout-Features in Windows Server 2016

In diesem Artikel wird das Extranet-Feature für intelligente Sperrung in Windows Server 2016 beschrieben.

Gilt für: Windows Server 2016
Ursprüngliche KB-Nummer: 4096478

Übersicht

Seit dem Update vom März 2018 für Windows Server 2016 verfügt Active Directory-Verbunddienste (AD FS) (AD FS) über ein neues Feature mit dem Namen "Extranet Smart Lockout (ESL). In einer Ära erhöhter Angriffe auf Authentifizierungsdienste ermöglicht ESL AD FS, zwischen Anmeldeversuchen von einem gültigen Benutzer und Anmeldeversuchen von dem zu unterscheiden, was ein Angreifer sein kann. Daher kann AD FS Angreifer sperren, während gültige Benutzer weiterhin ihre Konten verwenden können. Dies verhindert denial-of-Service für Benutzer und schützt vor gezielten Angriffen auf bekannte Benutzerkonten.

Das ESL-Feature ist für AD FS in Windows Server 2016 verfügbar.

Installieren und Konfigurieren von ESL

Installieren von Updates auf allen Knoten in der Farm

Stellen Sie zunächst sicher, dass alle AD FS-Server von Windows Server 2016 ab März 2018 auf dem neuesten Stand sind.

Aktualisieren von Artefakt-Datenbankberechtigungen

Die intelligente Extranetsperre erfordert, dass das AD FS-Dienstkonto über Berechtigungen zum Erstellen einer neuen Tabelle in der AD FS-Artefaktdatenbank verfügt. Melden Sie sich bei einem beliebigen AD FS-Server als AD FS-Administrator an, und erteilen Sie diese Berechtigung, indem Sie die folgenden Befehle in einem PowerShell-Eingabeaufforderungsfenster ausführen:

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

Hinweis

Der $cred-Platzhalter steht für ein Konto mit AD FS-Administratorberechtigungen. Dadurch sollten Sie eine Schreibberechtigung zum Erstellen der Tabelle erhalten.

Die oben genannten Befehle können aufgrund unzureichender Berechtigungen fehlschlagen, da Ihre AD FS-Farm SQL Server verwendet und die oben angegebenen Anmeldeinformationen keine Administratorberechtigung für SQL Server aufweisen. In diesem Fall können Sie Datenbankberechtigungen in SQL Server-Datenbank manuell konfigurieren, indem Sie den folgenden Befehl ausführen, während Sie mit der AdfsArtifactStore-Datenbank verbunden sind.

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

Konfigurieren von ESL

Ein neuer Parameter namens ExtranetLockoutMode wird zur Unterstützung von ESL hinzugefügt. Sie enthält die folgenden Werte:

  • ADPasswordCounter– Dies ist der ältere AD FS-Modus "Extranet soft lockout", der sich nicht basierend auf dem Standort unterscheidet. Dies ist der Standardwert.
  • ADFSSmartLockoutLogOnly - Dies ist Extranet Smart Lockout. Statt Authentifizierungsanforderungen abzulehnen, schreibt AD FS Administrator- und Überwachungsereignisse.
  • ADFSSmartLockoutEnforce- Dies ist Extranet Smart Lockout mit vollständiger Unterstützung zum Blockieren unbekannter Anforderungen, wenn Schwellenwerte erreicht werden.

Es wird empfohlen, zuerst den Sperranbieter so festzulegen, dass er sich nur für einen kurzen Zeitraum (1 bis 3 Tage) anmeldet, indem Sie das folgende Cmdlet ausführen. Überprüfen Sie während dieses Zeitraums die Überwachungen (Details siehe unten), um die Anzahl der möglicherweise betroffenen Konten sowie die Häufigkeit dieser Ereignisse zu ermitteln. Legen Sie nach erfolgreicher Bewertung der Überwachungen die Einstellung auf den Modus „ADFSSmartLockoutEnforce“ fest:

Set-AdfsProperties -ExtranetLockoutMode AdfsSmartlockoutLogOnly

In diesem Modus führt AD FS die Analyse durch, blockiert jedoch keine Anforderungen aufgrund von Sperrzählern. Dieser Modus wird verwendet, um zu überprüfen, ob die intelligente Sperre erfolgreich ausgeführt wird, bevor der Modus „Erzwingen“ aktiviert wird.

Damit der neue Modus wirksam wird, starten Sie den AD FS-Dienst auf allen Knoten in der Farm neu, indem Sie den folgenden Befehl ausführen:

Restart-service adfssrv

Festlegen des Sperrschwellen- und Beobachtungsfensters

Es gibt zwei Schlüsseleinstellungen für ESL: Sperrschwellenwert und Beobachtungsfenster.

Sperrschwellenwerteinstellung

Jedes Mal, wenn eine kennwortbasierte Authentifizierung erfolgreich ist, speichert AD FS die Client-IPs als vertraute Speicherorte in der Kontoaktivitätstabelle.

Wenn die kennwortbasierte Authentifizierung fehlschlägt und die Anmeldeinformationen nicht von einem vertrauten Speicherort stammen, wird die Anzahl der fehlgeschlagenen Authentifizierungen erhöht.

Nachdem die Anzahl der fehlgeschlagenen Kennwortversuche von unbekannten Speicherorten den Sperrschwellenwert erreicht hat, wenn die kennwortbasierte Authentifizierung von einem unbekannten Speicherort fehlschlägt, wird das Konto gesperrt.

Notiz

Sperrung gilt weiterhin separat für vertraute Speicherorte von diesem neuen unbekannten Sperrzähler.

Der Schwellenwert wird mithilfe von Set-AdfsProperties.

Beispiel:

Set-AdfsProperties -ExtranetLockoutThreshold 10

Einstellung des Beobachtungsfensters

Mit der Einstellung des Beobachtungsfensters kann ein Konto nach einiger Zeit automatisch entsperrt werden. Nachdem das Konto entsperrt wurde, ist ein Authentifizierungsversuch zulässig. Wenn die Authentifizierung erfolgreich ist, wird die Anzahl der fehlgeschlagenen Authentifizierungen auf 0 zurückgesetzt. Wenn der Fehler auftritt, wartet das System auf ein anderes Beobachtungsfenster, bevor der Benutzer den Vorgang erneut ausführen kann.

Das Beobachtungsfenster wird wie Set-AdfsProperties im folgenden Beispielbefehl festgelegt:

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

Sperrung aktivieren

Extranetsperrung kann mithilfe des EnableExtranetLockout-Parameters wie in den folgenden Beispielen aktiviert oder deaktiviert werden.

Führen Sie zum Aktivieren der Sperrung den folgenden Befehl aus:

Set-AdfsProperties -EnableExtranetLockout $true

Führen Sie zum Deaktivieren der Sperrung den folgenden Befehl aus:

Set-AdfsProperties -EnableExtranetLockout $false

Erzwingungsmodus aktivieren

Nachdem Sie sich mit dem Sperrschwellen- und Beobachtungsfenster vertraut machen, kann ESL mithilfe des folgenden PSH-Cmdlets in den Modus "Erzwingen" verschoben werden:

Set-AdfsProperties -ExtranetLockoutMode AdfsSmartLockoutEnforce

Damit der neue Modus wirksam wird, starten Sie den AD FS-Dienst auf allen Knoten in der Farm neu, indem Sie den folgenden Befehl verwenden:

Restart-service adfssrv

Verwalten von ESL

Verwalten von Benutzerkontoaktivitäten

AD FS stellt drei Cmdlets zum Verwalten von Benutzerkontoaktivitätsdaten bereit. Diese Cmdlets stellen automatisch eine Verbindung mit dem Knoten in der Farm her, der über die Masterrolle verfügt.

Notiz

Dieses Verhalten kann durch Übergeben des -Server-Parameters überschrieben werden.

  • Get-ADFSAccountActivity

    Ermittelt die aktuelle Kontoaktivität für ein Benutzerkonto. Das Cmdlet stellt über den AccountActivity-REST-Endpunkt immer automatisch eine Verbindung mit dem Farmmaster her. Daher sollten alle Daten immer konsistent sein.

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

    Aktualisieren Sie die Kontoaktivität für ein Benutzerkonto. Dies kann verwendet werden, um neue vertraute Speicherorte hinzuzufügen oder den Zustand für ein beliebiges Konto zu löschen.

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

    Setzt den Sperrzähler für ein Benutzerkonto zurück.

    Reset-ADFSAccountLockout user@contoso.com -Familiar
    

Problembehandlung

Aktualisieren von Datenbankberechtigungen

Wenn Fehler vom Update-AdfsArtifactDatabasePermission Cmdlet zurückgegeben werden, überprüfen Sie Folgendes:

  • Die Überprüfung schlägt fehl, wenn sich Knoten in der Farmliste befinden, aber nicht mehr Mitglieder der Farm sind. Dies kann durch Ausführen behoben remove-adfsnode <node name>werden.
  • Stellen Sie sicher, dass das Update auf allen Knoten in der Farm bereitgestellt wird.
  • Überprüfen Sie, ob die an das Cmdlet übergebenen Anmeldeinformationen über die Berechtigung zum Ändern des Besitzers des AD FS-Artefaktdatenbankschemas verfügen.

Protokollierung/Überwachung

Wenn eine Authentifizierungsanforderung abgelehnt wird, da das Konto den Sperrschwellenwert überschreitet, schreibt AD FS ein ExtranetLockoutEvent in den Sicherheitsüberwachungsstream.

Beispiel für protokolliertes Ereignis

Es ist ein Extranetsperrungsereignis aufgetreten. Siehe XML für Details zu Fehlern.
Aktivitäts-ID: 172332e1-1301-4e56-0e00-008000000db
Zusätzliche Daten
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-Fehler></AuditResult>
<FailureType>ExtranetLockoutError</FailureType>
<ErrorCode>AccountRestrictedAudit</ErrorCode>
<ContextComponents>
<Component xsi:type="ResourceAuditComponent">
<RelyingParty>http://contoso.com /adfs/services/trust</RelyingParty>
<ClaimsProvider>N/A</ClaimsProvider>
<UserId>TQDFTD\Administrator</UserId>
</Bestandteil>
<Component xsi:type="RequestAuditComponent">
<Server>N/A</Server>
<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, wie Gecko) Chrome/63.0.3239.132 Safari/537.36</UserAgentString>
<Endpunkt>/adfs/ls</Endpoint>
</Bestandteil>
<Component xsi:type="LockoutConfigAuditComponent">
<CurrentBadPasswordCount>5</CurrentBadPasswordCount>
<ConfigBadPasswordCount>5</ConfigBadPasswordCount>
<LastBadAttempt>02/07/2018 21:47:44</LastBadAttempt>
<LockoutWindowConfig>00:30:00</LockoutWindowConfig>
</Bestandteil>
</ContextComponents>
</AuditBase>

Deinstallieren

SQL Server-Datenbankfarmen können das Update mithilfe der Einstellungsanwendung ohne Probleme deinstallieren.

WID-Datenbankfarmen müssen die folgenden Schritte ausführen, da die aktualisierte WID-Datenbanküberprüfungsdatei binär ist:

  1. Führen Sie das Skript "Deinstallieren psh" aus, das den Dienst beendet, und legen Sie die Kontoaktivitätstabelle ab.

    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. Deinstallieren Sie das Update mithilfe der Einstellungsanwendung.

  3. Starten Sie den Computer neu.