Я работаю над типичной архитектурой Windows, содержащей контроллеры домена, серверы Exchange и т. Д.
Недавно я настроил сценарий для получения уведомлений, когда пользователь заблокирован. Работает отлично, но я заметил кое-что очень странное.
Я сообщаю некоторую информацию, такую как машина, с которой пользователь был заблокирован, контроллер домена, ответственный за действие, и т. Д. (Я могу получить всю эту информацию в журналах на контроллерах домена. ID 4740 для блокировки, 4767 для разблокировки ).
Дело в том, что регулярно (примерно 1-2 раза в день) некоторые пользователи блокируются контроллером домена (например, если он несколько раз вводил пароль на этом DC). Конечно, пользователи не могут получить доступ к контроллерам домена, так что это первая странность. Более странно то, что эти пользователи автоматически разблокируются администратором примерно через 1 секунду.
Вы знаете, что может вызвать это? Я почти уверен, что в этом не может быть ничего злого.
Обратите внимание, что :
Спасибо за ваше время ! :)
Вот код скрипта (но я не думаю, что он может быть полезен)
#Get security user lockout events. 61 seconds should be sufficient, as the scheduled task run every minute.
#It leaves 1 sec for execution time.
#EventID 4740 is user lockout. 4767 is unlock.
$startTime = (get-date).addseconds(-61)
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$DomainControllers = (Get-ADDomainController -Filter *)
foreach ($DC in $DomainControllers) {
$eventList = Get-WinEvent -ComputerName $DC.Name -filterhashtable @{logname="security";starttime=$startTime;id="4740"} -ErrorAction SilentlyContinue
$emailBody = $null
if ($eventList) {
#Start a walk through the events to collect data.
$eventList | foreach-object {
[string]$lockoutTime = $_.timecreated
$userName = $_.Properties[0].Value
$user = Get-ADUser -Identity $userName -Properties *
$name = $user.Name
$department = $user.Department
$site = $user.City
$mail = $user.PrimarySmtpAddress
$userSID = $_.Properties[2].Value
$computerName = $_.Properties[1].Value -creplace '^\\+',''
$IPAddress = [System.Net.Dns]::GetHostAddresses($computerName).IPAddressToString
#Compile the alert text from each event
$emailBody += "Utilisateur : $name`nDepartment : $department`nSite : $site`nLogin : $userName`nEmail : $mail`nOrdinateur fautif : $computerName`nAdresses IP : $IPAddress`nDate de verrouillage : $lockoutTime`nDC responsable du verrouillage : $($DC.Name)`nSID de l'utilisateur : $userSID"
#Send mail to report the lockout
Send-MailMessage -To "<####>" -From "<####>" -Subject "Blocage compte AD" -Body $emailBody -SmtpServer "####"
#Create a popup on desktop
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Unlocked AD accounts"
$objForm.Size = New-Object System.Drawing.Size(300,115)
$objForm.StartPosition = "CenterScreen"
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Location = New-Object System.Drawing.Size(10,15)
$objLabel.Text = "Compte de $name verrouillé."
$objForm.Controls.Add($objLabel)
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(160,50)
$OKButton.Size = New-Object System.Drawing.Size(85,23)
$OKButton.Text = "Tant pis"
$OKButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($OKButton)
$UnlockButton = New-Object System.Windows.Forms.Button
$UnlockButton.Location = New-Object System.Drawing.Size(60,50)
$UnlockButton.Size = New-Object System.Drawing.Size(85,23)
$UnlockButton.Text = "Déverrouiller"
$UnlockButton.Add_Click({Unlock-ADAccount $userName; $objForm.Close()})
$objForm.Controls.Add($UnlockButton)
if ((Get-ADUser $userName -Properties Lockedout).Lockedout) {
[void] $objForm.ShowDialog()
}
}
}
}
На всякий случай, если вы все еще искали ответ 11 месяцев спустя, обычно причина того, что «Имя вызывающего компьютера» является контроллером домена, заключается в том, что именно этот DC сообщает о блокировке.
DC1 имеет событие 4740, говорящее о том, что учетная запись пользователя была заблокирована, по сообщению DC2.
Если вы перейдете на DC2 и найдете то же событие 4740, вы увидите, что «Имя вызывающего компьютера» теперь указывает на настоящий компьютер, с которого пользователь был заблокирован.
У меня были события, исходящие от моего локального сервера Exchange, и это сбивало меня с толку так же, как и вы, до тех пор, пока я не вошел на сервер обмена, не поискал те же события блокировки и не увидел, откуда они.
Автоматическая разблокировка, вероятно, заключается в том, что DC2 разблокирует учетную запись после 30-минутной задержки блокировки по умолчанию и сообщает об этом DC1.
Это может быть похоже на учетную запись службы, поскольку в большинстве политик по умолчанию учетная запись службы автоматически разблокируется, если она заблокирована. Я наблюдал то же самое в своей среде. Надеюсь, что это поможет, и если у вас есть какие-либо предложения / предложения. Не стесняйтесь поделиться