Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel enthält Schritte zum Beheben eines Kontosperrproblems in Microsoft Active Directory-Verbunddienste (AD FS) (AD FS) unter Windows Server.
Originalproduktversion: Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012
Ursprüngliche KB-Nummer: 4471013
Möglicherweise tritt ein Kontosperrproblem in AD FS auf Windows Server auf. Um dieses Problem zu beheben, überprüfen Sie zuerst die folgenden Punkte:
- Wenn Microsoft Entra Connect Health für AD FS-Server konfiguriert ist, wechseln Sie zum Abschnitt "Use Connect Health", um Daten für benutzeranmeldungsaktivitäten zu generieren.
- Wenn Microsoft Entra Connect Health für AD FS-Server nicht konfiguriert ist, wechseln Sie zu den Ereignisprotokollen zum Sammeln von AD FS- und Web-Anwendungsproxy-Servern.
Verwenden von Connect Health zum Generieren von Daten für Benutzeranmeldungsaktivitäten
Sie können connect Health verwenden, um Daten über die Benutzeranmeldungsaktivität zu generieren. Connect Health erzeugt Berichte zu den wichtigsten fehlerhaften Kennwortversuchen, die in der AD FS-Farm vorgenommen werden.
Lesen Sie die Informationen in diesem Artikel , um die Liste der Benutzerkonten und IPs des fehlerhaften Kennwortversuchs zu analysieren. Wechseln Sie dann zur Analyse der IP und des Benutzernamens der Konten, die von ungültigen Kennwortversuchen betroffen sind.
Sammeln von AD FS-Ereignisprotokollen von AD FS- und Web-Anwendungsproxy-Servern
Schritt 1: Sammeln von AD FS-Ereignisprotokollen von AD FS- und Web-Anwendungsproxy-Servern
Zum Sammeln von Ereignisprotokollen müssen Sie zunächst AD FS-Server für die Überwachung konfigurieren. Wenn Sie über einen Lastenausgleich für Ihre AD FS-Farm verfügen, müssen Sie die Überwachung auf jedem AD FS-Server in der Farm aktivieren. Die Überwachung muss nicht auf den Anwendungsproxy-Servern im Web konfiguriert werden.
Zum Konfigurieren von AD FS-Servern für die Überwachung können Sie die folgende Methode verwenden:
Schritt 2: Durchsuchen der AD FS-Protokolle
Durchsuchen Sie für Windows Server 2012 R2 oder Windows Server 2016 AD FS alle Sicherheitsereignisprotokolle von AD FS-Servern nach "Ereignis-ID 411-Quell-AD FS-Überwachung"-Ereignisse. Beachten Sie die folgenden Informationen zu "411 Ereignissen":
- Sie können das ADFS-Kontosperrout und die bad Cred Search (AD FSBadCredsSearch.ps1)PowerShell-Skript herunterladen, um Ihre AD FS-Server nach "411"-Ereignissen zu durchsuchen. Das Skript stellt eine CSV-Datei bereit, die den UserPrincipalName, die IP-Adresse des Sendeers und die Uhrzeit aller ungültigen Anmeldeinformationsübermittlungen an Ihre AD FS-Farm enthält. Öffnen Sie die CSV-Datei in Excel, und filtern Sie schnell nach Benutzername, IP-Adresse oder Uhrzeit.
- Diese Ereignisse enthalten den Benutzerprinzipalnamen (UPN) des Zielbenutzers.
- Diese Ereignisse enthalten eine Meldung "Tokenüberprüfung fehlgeschlagen", die angibt, ob das Ereignis einen ungültigen Kennwortversuch oder eine Kontosperrung angibt.
- Wenn auf dem Server "411"-Ereignisse angezeigt werden, aber das IP-Adressfeld nicht im Ereignis enthalten ist, stellen Sie sicher, dass der neueste AD FS-Hotfix auf Ihre Server angewendet wurde. Weitere Informationen finden Sie unter MS16-020: Sicherheitsupdate für Active Directory-Verbunddienste (AD FS), um den Denial of Service zu adressieren: 9. Februar 2016.
Für Windows Server 2008 R2 oder Windows Server 2012 AD FS verfügen Sie nicht über die erforderlichen Ereignis-411-Details. Laden Sie stattdessen das folgende PowerShell-Skript herunter, und führen Sie es aus, um Sicherheitsereignisse 4625 (ungültige Kennwortversuche) und 501 (AD FS-Überwachungsdetails) zu korrelieren, um die Details zu den betroffenen Benutzern zu finden.
- Sie können das PowerShell-Skript ADFS Security Audit Events Parser (ADFSSecAuditParse.ps1) herunterladen, um Ihre AD FS-Server nach Ereignissen zu durchsuchen. Das Skript stellt eine CSV-Datei bereit, die den UserPrincipalName, die IP-Adresse des Sendeers und die Uhrzeit aller ungültigen Anmeldeinformationsübermittlungen an Ihre AD FS-Farm enthält.
- Sie können diese Methode auch verwenden, um zu untersuchen, welche Verbindungen für die Benutzer in den "411"-Ereignissen erfolgreich sind. Sie können die AD FS-Ereignisse "501" nach weiteren Details durchsuchen.
- Wenn Sie das PowerShell-Skript ausführen, um die Ereignisse zu durchsuchen, übergeben Sie den UPN des Benutzers, der in den "411"-Ereignissen identifiziert wird, oder suchen Sie nach Kontosperrberichten.
- Die IP-Adresse der böswilligen Absender wird in einem von zwei Feldern in den Ereignissen "501" angezeigt.
- Für webbasierte Szenarien und die meisten Anwendungsauthentifizierungsszenarien befindet sich die bösartige IP im Feld "x-ms-client-ip ".
Analysieren der IP und des Benutzernamens der Konten, die von fehlerhaften Kennwortversuchen betroffen sind
Nachdem Sie die IP-Adressen und Benutzernamen aufgezählt haben, identifizieren Sie die IP-Adressen und Benutzernamen, die sich auf unerwartete Zugriffsorte beziehen.
Werden die Versuche von externen unbekannten IPs durchgeführt?
- Wenn die Versuche von externen unbekannten IPs durchgeführt werden, wechseln Sie zu Aktualisieren von AD FS-Servern mit den neuesten Hotfixes.
- Wenn die Versuche von externen unbekannten IPs nicht durchgeführt werden, wechseln Sie zu "Sicherstellen, dass die Anmeldeinformationen im Dienst oder in der Anwendung aktualisiert werden".
Aktualisieren von AD FS-Servern mit den neuesten Hotfixes
Um sicherzustellen, dass AD FS-Server über die neuesten Funktionen verfügen, wenden Sie die neuesten Hotfixes für die AD FS- und Web-Anwendungsproxy-Server an. Darüber hinaus ist hotfix-3134222 unter Windows Server 2012 R2 erforderlich, um IP-Adressen in Ereignis 411 zu protokollieren, die später verwendet werden.
Überprüfen, ob die Extranetsperre aktiviert ist
Verwenden Sie "Get-ADFSProperties ", um zu überprüfen, ob die Extranetsperre aktiviert ist.
- Wenn die Extranetsperre aktiviert ist, wechseln Sie zu "Extranetsperrung überprüfen" und " Interne Sperrschwellenwerte".
- Wenn die Extranetsperre nicht aktiviert ist, starten Sie die folgenden Schritte für die entsprechende Version von AD FS.
Schritte zum Überprüfen des Sperrstatus
Für Windows Server 2012 R2 oder neuere Version
Intelligente Sperrung ist ein neues Feature, das in Kürze in AD FS 2016 und 2012 R2 über ein Update verfügbar sein wird. Dieser Abschnitt wird mit den entsprechenden Schritten für die Aktivierung von Smart Lockout aktualisiert, sobald das Feature verfügbar ist. Wechseln Sie dann zu " Extranetsperrung überprüfen" und "Interne Sperrschwellenwerte".
Für Windows Server 2008 R2 Windows oder ältere Version
Es wird empfohlen, die AD FS-Server auf Windows Server 2012 R2 oder Windows Server 2016 zu aktualisieren. Weitere Informationen finden Sie unter Durchführen eines Upgrades für eine vorhandene AD FS-Farm mithilfe der internen Windows-Datenbank. Führen Sie dann die Schritte für Windows Server 2012 R2 oder eine neuere Version aus.
Schritt 1: Überprüfen der Extranetsperrung und interner Sperrschwellenwerte
Stellen Sie sicher, dass Extranetsperrungs- und interne Sperrschwellenwerte ordnungsgemäß konfiguriert sind. Weitere Informationen finden Sie unter Empfohlene Sicherheitskonfigurationen. Im Allgemeinen sollte der ExtranetLockoutThreshold kleiner als der Sperrschwellenwert für AD sein, sodass der Benutzer nur für Extranetzugriff gesperrt wird, ohne auch in Active Directory für internen Zugriff gesperrt zu werden.
Schritt 2: Aktivieren der modernen Authentifizierung und zertifikatbasierten Authentifizierung
Es wird empfohlen, die moderne Authentifizierung, die zertifikatbasierte Authentifizierung und die anderen Features zu aktivieren, die in diesem Schritt aufgeführt sind, um das Risiko von Brute-Force-Angriffen zu verringern.
Bereitstellen der modernen Authentifizierung
Zusätzlich zum Entfernen eines der Angriffsvektoren, die derzeit über Exchange Online verwendet werden, ermöglicht die Bereitstellung der modernen Authentifizierung für Ihre Office-Clientanwendungen Ihrer Organisation das Nutzen von mehrstufiger Authentifizierung. Moderne Authentifizierung wird von allen neuesten Office-App lizenzen auf den Windows-, iOS- und Android-Plattformen unterstützt.
Weitere Informationen finden Sie unter Bereitstellen der modernen Authentifizierung für Office 365.
Da Benutzernamen- und kennwortbasierte Zugriffsanforderungen trotz unserer proaktiven und reaktiven Abwehrmaßnahmen weiterhin anfällig sind, sollten Organisationen planen, nicht kennwortbasierte Zugriffsmethoden so schnell wie möglich zu übernehmen.
Die folgenden nicht kennwortbasierten Authentifizierungstypen sind für AD FS und die Web-Anwendungsproxy verfügbar.
Zertifikatbasierte Authentifizierung
Wenn die zertifikatbasierte Authentifizierung als Alternative zum Benutzernamen und kennwortbasierten Zugriff verwendet wird, werden Benutzerkonten und Zugriff auf folgende Weise geschützt:
Da Benutzer ihre Kennwörter nicht über das Internet verwenden, sind diese Kennwörter weniger anfällig für die Offenlegung. Benutzernamen- und Kennwortendpunkte können vollständig in der Firewall blockiert werden. Dadurch wird der Angriffsvektor für Sperr- oder Brute-Force-Angriffe entfernt.
Selbst wenn Benutzernamen- und Kennwortendpunkte in der Firewall verfügbar gehalten werden, wirken sich böswillige Benutzernamen und kennwortbasierte Anforderungen, die eine Sperrung verursachen, nicht auf Zugriffsanforderungen aus, die Zertifikate verwenden. Daher wird der Zugriff des berechtigten Benutzers beibehalten.
Weitere Informationen zur zertifikatbasierten Authentifizierung für Microsoft Entra ID und Office 365 finden Sie in diesem Microsoft Entra Identity Blog-Artikel.
Azure Multi-Factor Authentication (MFA)
Azure MFA ist eine weitere nicht kennwortbasierte Zugriffsmethode, die Sie auf die gleiche Weise wie die zertifikatbasierte Authentifizierung verwenden können, um die Verwendung von Kennwort- und Benutzernamenendpunkten vollständig zu vermeiden.
Azure MFA kann verwendet werden, um Ihre Konten in den folgenden Szenarien zu schützen.
Szenarien Vorteil Verwenden von Azure MFA als zusätzliche Authentifizierung über das Extranet Hinzufügen von Azure MFA oder einem zusätzlichen Authentifizierungsanbieter zu AD FS und Erfordern, dass die zusätzliche Methode für Extranetanforderungen verwendet werden muss, schützt Ihre Konten vor dem Zugriff mithilfe eines gestohlenen oder brute-erzwungenen Kennworts. Dies kann in AD FS 2012 R2 und 2016 erfolgen. Verwenden von Azure MFA als primäre Authentifizierung Dies ist eine neue Funktion in AD FS 2016, um den kennwortfreien Zugriff mithilfe von Azure MFA anstelle des Kennworts zu aktivieren. Dadurch werden sowohl Kennwortverletzungen als auch Sperrungen geschützt. Weitere Informationen zum Konfigurieren von Azure MFA mithilfe von AD FS finden Sie unter Konfigurieren von AD FS 2016 und Azure MFA
Windows Hello for Business
Windows Hello for Business ist in Windows 10 verfügbar. Windows Hello for Business ermöglicht den kennwortfreien Zugriff über das Extranet, basierend auf starken kryptografischen Schlüsseln, die sowohl an den Benutzer als auch an das Gerät gebunden sind.
Windows Hello for Business wird von AD FS in Windows Server 2016 unterstützt. Siehe Authentifizieren von Identitäten ohne Kennwörter über Windows Hello for Business.
Schritt 3: Deaktivieren der Legacyauthentifizierung und nicht verwendeter Endpunkte
Deaktivieren Sie die Legacyendpunkte, die von EAS-Clients über Exchange Online verwendet werden, z. B. die folgenden:
/adfs/services/trust/13/usernamemixed endpoint
Notiz
Dies kann einige Funktionen stören. Es kann jedoch dazu beitragen, die Oberflächenvektoren zu reduzieren, die angreifern zur Verfügung stehen. Außerdem wird empfohlen, nicht verwendete Endpunkte zu deaktivieren.
Überprüfen Sie, ob das Problem behoben ist.
Stellen Sie sicher, dass anmeldeinformationen im Dienst oder in der Anwendung aktualisiert werden
Wenn das Benutzerkonto als Dienstkonto verwendet wird, werden die neuesten Anmeldeinformationen möglicherweise nicht für den Dienst oder die Anwendung aktualisiert. In diesem Fall versucht der Dienst möglicherweise weiterhin, sich mithilfe der falschen Anmeldeinformationen zu authentifizieren. Dies führt zu einer Sperrbedingung.
Um dieses Problem zu beheben, überprüfen Sie die Dienstkontokonfiguration im Dienst oder der Anwendung, um sicherzustellen, dass die Anmeldeinformationen korrekt sind. Wenn nicht, führen Sie den nächsten Schritt aus.
Löschen zwischengespeicherter Anmeldeinformationen in der Anwendung
Wenn Benutzeranmeldeinformationen in einer der Anwendungen zwischengespeichert werden, können wiederholte Authentifizierungsversuche dazu führen, dass das Konto gesperrt wird. Um dieses Problem zu beheben, löschen Sie die zwischengespeicherten Anmeldeinformationen in der Anwendung. Überprüfen Sie, ob das Problem behoben ist.
ADFS-Kontosperrung und ungültige Cred-Suche
PARAM ($PastDays = 1, $PastHours)
#************************************************
# ADFSBadCredsSearch.ps1
# Version 1.0
# Date: 6-20-2016
# Author: Tim Springston [MSFT]
# Description: This script will parse the ADFS server's (not proxy) security ADFS
# for events which indicate an incorrectly entered username or password. The script can specify a
# past period to search the log for and it defaults to the past 24 hours. Results will be placed into a CSV for
# review of UPN, IP address of submitter, and timestamp.
#************************************************
cls
if ($PastHours -gt 0)
{$PastPeriod = (Get-Date).AddHours(-($PastHours))}
else
{$PastPeriod = (Get-Date).AddDays(-($PastDays)) }
$Outputfile = $Pwd.path + "\BadCredAttempts.csv"
$CS = get-wmiobject -class win32_computersystem
$Hostname = $CS.Name + '.' + $CS.Domain
$Instances = @{}
$OSVersion = gwmi win32_operatingsystem
[int]$BN = $OSVersion.Buildnumber
if ($BN -lt 9200){$ADFSLogName = "AD FS 2.0/Admin"}
else {$ADFSLogName = "AD FS/Admin"}
$Users = @()
$IPAddresses = @()
$Times = @()
$AllInstances = @()
Write-Host "Searching event log for bad credential events..."
if ($BN -ge 9200) {Get-Winevent -FilterHashTable @{LogName= "Security"; StartTime=$PastPeriod; ID=411} -ErrorAction SilentlyContinue | Where-Object {$_.Message -match "The user name or password is incorrect"} | % {
$Instance = New-Object PSObject
$UPN = $_.Properties[2].Value
$UPN = $UPN.Split("-")[0]
$IPAddress = $_.Properties[4].Value
$Users += $UPN
$IPAddresses += $IPAddress
$Times += $_.TimeCreated
add-member -inputobject $Instance -membertype noteproperty -name "UserPrincipalName" -value $UPN
add-member -inputobject $Instance -membertype noteproperty -name "IP Address" -value $IPAddress
add-member -inputobject $Instance -membertype noteproperty -name "Time" -value ($_.TimeCreated).ToString()
$AllInstances += $Instance
$Instance = $null
}
}
$AllInstances | select * | Export-Csv -Path $Outputfile -append -force -NoTypeInformation
Write-Host "Data collection finished. The output file can be found at $outputfile`."
$AllInstances = $null
Parser für ADFS-Sicherheitsüberwachungsereignisse
PARAM ($SearchCriteria, $PastDays = 1, $PastHours)
#************************************************
# ADFSSecAuditParse.ps1
# Version 1.0
# Date: 2-2-2016
# Author: Tim Springston [MSFT]
# Description: This script will parse an ADFS Security event log file (EVTX)
# and search for audit events related to a specific user or other criteria.
# The script will work for the each ADFS login instance for a given criteria during a stated time frame.
# If you need to locate a second then filter and save the event log to focus in.
# Return an array of initial instance IDs with the criteria, run the search function against each and output
# a unique text file for each.
#************************************************
cls
if ($PastHours -gt 0)
{
$PastPeriod = (Get-Date).AddHours(-($PastHours))
}
else
{$PastPeriod = $PastDays}
$CS = get-wmiobject -class win32_computersystem
$Hostname = $CS.Name + '.' + $CS.Domain
$Instances = @()
Get-Winevent -ComputerName $Hostname -LogName Security | Where-Object {(($_.ID -eq 501) `
-and ($_.Properties.Value -contains $SearchCriteria) -and ($_.TimeCreated -gt $PastPeriod))} | % { $Instances += $_.Properties[0].Value}
function FindADFSAuditEvents {
param ($valuetomatch, $counter, $instance, $PastPeriod)
$Results = $pwd.Path + "\" + $SearchCriteria + "-ADFSSecAudit" + '-' + $Counter + ".txt"
$SearchString = $SearchCriteria + " and instance " + $Instance + " in Security event log."
"Security Audit Events which match $SearchString" | Out-File $Results -Encoding UTF8
Get-WinEvent -ComputerName $Hostname -LogName Security -WarningAction SilentlyContinue | `
Where-Object -ErrorAction SilentlyContinue {($_.TimeCreated -gt $PastPeriod) -and (($_.Properties -contains $ValueToMatch) -or ($_.Properties[0].Value -match $Instance))} | % {
$Event = New-object PSObject
add-member -inputobject $Event -membertype noteproperty -name "Event ID" -value $_.ID
add-member -inputobject $Event -membertype noteproperty -name "Provider" -value $_.ProviderName
add-member -inputobject $Event -membertype noteproperty -name "Machine Name" -value $_.MachineName
add-member -inputobject $Event -membertype noteproperty -name "User ID" -value $_.UserID
add-member -inputobject $Event -membertype noteproperty -name "Time Created " -value $_.TimeCreated
$Event | FL *
$Event | Out-File $Results -Encoding UTF8 -Append
$_.Properties | FL *
$_.Properties | Out-File $Results -Encoding UTF8 -Append
$DateTimeExport = $_.TimeCreated
}
$DateTime = (($DateTimeExport.ToShortDateString()).Replace('/','-') + '@' + (($DateTimeExport.ToShortTimeString()).Replace(' ','')))
$DateTime = $DateTime.Replace(':','')
$Results2 = $pwd.Path + "\" + $SearchCriteria + '-' + $DateTime + "-ADFSSecAudit" + $Counter + ".txt"
Rename-Item -Path $Results -NewName $Results2
}
$Counter = 1
foreach ($instance in $Instances)
{
FindADFSAuditEvents -ValueToMatch $SearchCriteria -Instance $Instance -PastPeriod $PastPeriod -Counter $Counter
$Counter++
}
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.