Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł zawiera kroki rozwiązywania problemów z blokadą konta w usługach Microsoft Active Directory Federation Services (AD FS) w systemie Windows Server.
Oryginalna wersja produktu: Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012
Oryginalny numer KB: 4471013
Może wystąpić problem z blokadą konta w usługach AD FS w systemie Windows Server. Aby rozwiązać ten problem, najpierw sprawdź następujące kwestie:
- Jeśli masz program Microsoft Entra Connect Health skonfigurowany dla serwerów usług AD FS, przejdź do sekcji Używanie programu Connect Health do generowania danych dotyczących działań logowania użytkowników.
- Jeśli nie masz programu Microsoft Entra Connect Health skonfigurowanego dla serwerów usług AD FS, przejdź do sekcji Zbieranie dzienników zdarzeń usług AD FS z usług AD FS i serwerów sieci Web serwer proxy aplikacji.
Generowanie danych dla działań logowania użytkowników przy użyciu programu Connect Health
Możesz użyć programu Connect Health, aby wygenerować dane dotyczące aktywności logowania użytkownika. Program Connect Health tworzy raporty dotyczące najważniejszych nieudanych prób haseł w farmie usług AD FS.
Zapoznaj się z informacjami w tym artykule , aby przeanalizować listę kont użytkowników i adresów IP nieprawidłowego hasła. Następnie przejdź do pozycji Analizuj adres IP i nazwę użytkownika kont, na które mają wpływ nieprawidłowe próby hasła.
Zbieranie dzienników zdarzeń usług AD FS z usług AD FS i serwerów serwer proxy aplikacji sieci Web
Krok 1. Zbieranie dzienników zdarzeń usług AD FS z usług AD FS i serwerów serwer proxy aplikacji sieci Web
Aby zbierać dzienniki zdarzeń, należy najpierw skonfigurować serwery usług AD FS na potrzeby inspekcji. Jeśli masz moduł równoważenia obciążenia dla farmy usług AD FS, należy włączyć inspekcję na każdym serwerze usług AD FS w farmie. Inspekcja nie musi być skonfigurowana na serwerach serwer proxy aplikacji sieci Web.
Aby skonfigurować serwery usług AD FS do inspekcji, można użyć następującej metody:
Krok 2. Wyszukiwanie dzienników usług AD FS
W przypadku systemu Windows Server 2012 R2 lub Windows Server 2016 AD FS wyszukaj wszystkie dzienniki zdarzeń zabezpieczeń serwerów usług AD FS pod kątem zdarzeń "Identyfikator zdarzenia 411 Źródłowy inspekcja usług AD FS". Należy pamiętać o następujących informacjach o zdarzeniach "411":
- Możesz pobrać blokadę konta usług ADFS i nieprawidłowe wyszukiwanie cred (AD FSBadCredsSearch.ps1)Skrypt programu PowerShell do wyszukiwania serwerów usług AD FS pod kątem zdarzeń "411". Skrypt zawiera plik CSV, który zawiera userPrincipalName, adres IP przesyłania i czas wszystkich złych poświadczeń przesłanych do farmy usług AD FS. Otwórz plik CSV w programie Excel i szybko filtruj według nazwy użytkownika, adresu IP lub czasu.
- Te zdarzenia zawierają główną nazwę użytkownika (UPN) docelowego użytkownika.
- Te zdarzenia zawierają komunikat "Weryfikacja tokenu nie powiodła się" wskazujący, czy zdarzenie wskazuje na nieprawidłową próbę hasła, czy blokadę konta.
- Jeśli na serwerze są wyświetlane zdarzenia "411", ale pole adresu IP nie znajduje się w zdarzeniu, upewnij się, że masz najnowszą poprawkę usług AD FS zastosowaną do serwerów. Aby uzyskać więcej informacji, zobacz MS16-020: Aktualizacja zabezpieczeń usług Active Directory Federation Services w celu rozwiązania problemu odmowy usługi: 9 lutego 2016 r.
W przypadku systemu Windows Server 2008 R2 lub Windows Server 2012 AD FS nie będziesz mieć niezbędnych szczegółów zdarzenia 411. Zamiast tego pobierz i uruchom następujący skrypt programu PowerShell, aby skorelować zdarzenia zabezpieczeń 4625 (nieprawidłowe próby hasła) i 501 (szczegóły inspekcji usług AD FS), aby znaleźć szczegółowe informacje o dotkniętych użytkownikach.
- Analizator zdarzeń inspekcji zabezpieczeń usług ADFS (ADFSSecAuditParse.ps1) programu PowerShell umożliwia wyszukiwanie serwerów usług AD FS pod kątem zdarzeń. Skrypt zawiera plik CSV, który zawiera userPrincipalName, adres IP przesyłania i czas wszystkich złych poświadczeń przesłanych do farmy usług AD FS.
- Można również użyć tej metody, aby zbadać, które połączenia są pomyślne dla użytkowników w zdarzeniach "411". Aby uzyskać więcej informacji, możesz wyszukać zdarzenia "501" usług AD FS.
- Po uruchomieniu skryptu programu PowerShell w celu wyszukania zdarzeń przekaż nazwę UPN użytkownika, który jest identyfikowany w zdarzeniach "411" lub wyszukuj według raportów blokady konta.
- Adres IP złośliwych osób przesyłających jest wyświetlany w jednym z dwóch pól zdarzeń "501".
- W przypadku scenariuszy internetowych i większości scenariuszy uwierzytelniania aplikacji złośliwy adres IP będzie znajdować się w polu x-ms-client-ip .
Analizowanie adresu IP i nazwy użytkownika kont, na które mają wpływ nieprawidłowe próby hasła
Po wyliczenie adresów IP i nazw użytkowników zidentyfikuj adresy IP, które są przeznaczone dla nieoczekiwanych lokalizacji dostępu.
Czy próby są podejmowane z zewnętrznych nieznanych adresów IP?
- Jeśli podjęto próby z zewnętrznych nieznanych adresów IP, przejdź do strony Aktualizowanie serwerów usług AD FS przy użyciu najnowszych poprawek.
- Jeśli próby nie zostaną wykonane z zewnętrznych nieznanych adresów IP, przejdź do pozycji Upewnij się, że poświadczenia są aktualizowane w usłudze lub aplikacji.
Aktualizowanie serwerów usług AD FS przy użyciu najnowszych poprawek
Aby upewnić się, że serwery usług AD FS mają najnowsze funkcje, zastosuj najnowsze poprawki dla serwerów usług AD FS i sieci Web serwer proxy aplikacji. Ponadto w systemie Windows Server 2012 R2 jest wymagana poprawka 3134222 do rejestrowania adresów IP w zdarzeniu 411, które będą używane później.
Sprawdzanie, czy blokada ekstranetu jest włączona
Użyj właściwości Get-ADFSProperties , aby sprawdzić, czy blokada ekstranetu jest włączona.
- Jeśli blokada ekstranetu jest włączona, przejdź do pozycji Sprawdź blokadę ekstranetu i wewnętrzne progi blokady.
- Jeśli blokada ekstranetu nie jest włączona, uruchom poniższe kroki dla odpowiedniej wersji usług AD FS.
Kroki sprawdzania stanu blokady
W przypadku systemu Windows Server 2012 R2 lub nowszej wersji
Inteligentna blokada to nowa funkcja, która będzie dostępna wkrótce w usługach AD FS 2016 i 2012 R2 za pośrednictwem aktualizacji. Ta sekcja zostanie zaktualizowana o odpowiednie kroki umożliwiające włączenie inteligentnej blokady zaraz po udostępnieniu funkcji. Następnie przejdź do pozycji Sprawdź blokadę ekstranetu i wewnętrzne progi blokady.
W przypadku systemu Windows Server 2008 R2 Windows lub starszej wersji
Zalecamy uaktualnienie serwerów usług AD FS do systemu Windows Server 2012 R2 lub Windows Server 2016. Aby uzyskać więcej informacji, zobacz Uaktualnianie do usług AD FS w systemie Windows Server 2016. Następnie wykonaj kroki dla systemu Windows Server 2012 R2 lub nowszej wersji.
Krok 1. Sprawdzanie blokady ekstranetu i wewnętrznych progów blokady
Upewnij się, że blokada ekstranetu i wewnętrzne progi blokady są poprawnie skonfigurowane. Aby uzyskać więcej informacji, zobacz Zalecane konfiguracje zabezpieczeń. Ogólnie rzecz biorąc, wartość ExtranetLockoutThreshold powinna być mniejsza niż próg blokady dla usługi AD, dzięki czemu użytkownik zostanie zablokowany tylko dla dostępu ekstranetu bez konieczności blokowania dostępu wewnętrznego w usłudze Active Directory.
Krok 2. Włączanie nowoczesnego uwierzytelniania i uwierzytelniania opartego na certyfikatach
Zalecamy włączenie nowoczesnego uwierzytelniania, uwierzytelniania opartego na certyfikatach i innych funkcji wymienionych w tym kroku w celu obniżenia ryzyka ataków siłowych.
Wdrażanie nowoczesnego uwierzytelniania
Oprócz usuwania jednego z wektorów ataków, które są obecnie używane za pośrednictwem usługi Exchange Online, wdrażanie nowoczesnego uwierzytelniania dla aplikacji klienckich pakietu Office umożliwia organizacji korzystanie z uwierzytelniania wieloskładnikowego. Nowoczesne uwierzytelnianie jest obsługiwane przez wszystkie najnowsze aplikacja pakietu Office licacje na platformach Windows, iOS i Android.
Aby uzyskać więcej informacji, zobacz Jak wdrożyć nowoczesne uwierzytelnianie dla usługi Office 365.
Ze względu na to, że żądania dostępu oparte na nazwach użytkowników i hasłach będą nadal podatne na zagrożenia pomimo proaktywnej i reaktywnej ochrony, organizacje powinny planować wdrożenie metod dostępu nienależących do haseł tak szybko, jak to możliwe.
Następujące typy uwierzytelniania nie oparte na hasłach są dostępne dla usług AD FS i sieci Web serwer proxy aplikacji.
Uwierzytelnianie oparte na certyfikatach
Jeśli uwierzytelnianie oparte na certyfikatach jest używane jako alternatywa dla nazwy użytkownika i dostępu opartego na hasłach, konta użytkowników i dostęp są chronione w następujący sposób:
Ponieważ użytkownicy nie używają swoich haseł przez Internet, te hasła są mniej podatne na ujawnienie. Punkty końcowe nazwy użytkownika i hasła mogą być całkowicie blokowane w zaporze. Spowoduje to usunięcie wektora ataku na blokadę lub ataki siłowe.
Nawet jeśli nazwy użytkownika i punkty końcowe haseł są przechowywane w zaporze, złośliwe nazwy użytkownika i żądania oparte na hasłach, które powodują blokadę, nie mają wpływu na żądania dostępu korzystające z certyfikatów. W związku z tym dostęp uzasadnionego użytkownika jest zachowywany.
Aby uzyskać więcej informacji na temat uwierzytelniania opartego na certyfikatach dla identyfikatorów firmy Microsoft i usługi Office 365, zobacz ten artykuł na temat tożsamości firmy Microsoft.
Azure Multi-Factor Authentication (MFA)
Usługa Azure MFA to inna metoda dostępu nie oparta na hasłach, której można używać w taki sam sposób, jak uwierzytelnianie oparte na certyfikatach, aby uniknąć całkowitego używania punktów końcowych haseł i nazw użytkowników.
Usługa Azure MFA może służyć do ochrony kont w następujących scenariuszach.
Scenariusze Korzyść Używanie usługi Azure MFA jako dodatkowego uwierzytelniania za pośrednictwem ekstranetu Dodanie usługi Azure MFA lub dowolnego dodatkowego dostawcy uwierzytelniania do usług AD FS i wymaganie użycia dodatkowej metody dla żądań ekstranetu chroni konta przed dostępem przy użyciu skradzionego lub wymuszonego hasła. Można to zrobić w usługach AD FS 2012 R2 i 2016. Używanie usługi Azure MFA jako uwierzytelniania podstawowego Jest to nowa funkcja w usługach AD FS 2016 w celu włączenia dostępu bez hasła przy użyciu usługi Azure MFA zamiast hasła. Chroni to zarówno przed naruszeniami haseł, jak i blokadami. Aby uzyskać więcej informacji na temat konfigurowania usługi Azure MFA przy użyciu usług AD FS, zobacz Konfigurowanie usług AD FS 2016 i Azure MFA
Windows Hello for Business
Windows Hello dla firm jest dostępna w systemie Windows 10. Windows Hello dla firm umożliwia dostęp bez hasła z ekstranetu na podstawie silnych kluczy kryptograficznych powiązanych zarówno z użytkownikiem, jak i urządzeniem.
Windows Hello dla firm jest obsługiwany przez usługi AD FS w systemie Windows Server 2016. Zobacz Uwierzytelnianie tożsamości bez haseł za pośrednictwem Windows Hello dla firm.
Krok 3. Wyłączanie starszego uwierzytelniania i nieużywanych punktów końcowych
Wyłącz starsze punkty końcowe, które są używane przez klientów EAS za pośrednictwem usługi Exchange Online, takie jak:
/adfs/services/trust/13/usernamemixed endpoint
Uwaga 16.
Może to zakłócić niektóre funkcje. Może jednak pomóc zmniejszyć liczbę wektorów powierzchni, które są dostępne dla osób atakujących w celu wykorzystania ich. Ponadto zalecamy wyłączenie nieużywanych punktów końcowych.
Sprawdź, czy problem został rozwiązany.
Upewnij się, że poświadczenia są aktualizowane w usłudze lub aplikacji
Jeśli konto użytkownika jest używane jako konto usługi, najnowsze poświadczenia mogą nie zostać zaktualizowane dla usługi lub aplikacji. W takiej sytuacji usługa może nadal próbować uwierzytelniać się przy użyciu nieprawidłowych poświadczeń. Powoduje to warunek blokady.
Aby rozwiązać ten problem, sprawdź konfigurację konta usługi w usłudze lub aplikacji, aby upewnić się, że poświadczenia są poprawne. Jeśli nie, wykonaj następny krok.
Wyczyść buforowane poświadczenia w aplikacji
Jeśli poświadczenia użytkownika są buforowane w jednej z aplikacji, powtarzające się próby uwierzytelniania mogą spowodować zablokowanie konta. Aby rozwiązać ten problem, wyczyść buforowane poświadczenia w aplikacji. Sprawdź, czy problem został rozwiązany.
Blokada konta usług ADFS i nieprawidłowe wyszukiwanie cred
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
Analizator zdarzeń inspekcji zabezpieczeń usług AD FS
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++
}
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.