UncleFather » 26 апр 2012 15:01, Чт
Задача:
Необходимо найти все заблокированные учетные записи в Microsoft Windows.
Проблема актуальна для доменов с большим количеством пользователей, где нереально просмотреть все учетные записи вручную.
Решение 1:
Можно воспользоваться готовым скриптом PowerShell, запустив его на контроллере домена:
Код: Выделить всё
add-pssnapin "Quest.ActiveRoles.ADManagement"
$WshShell = New-Object -ComObject wscript.shell
$Body1 = Get-QADUser -locked
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”`n”
$Body1 = $Body1 | Select name,DN, canonicalName,userPrincipalName, title, displayName,sAMAccountName,givenName,sn, ";"
$Body1 = $Body1 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"****************************`n" -replace “;”,”`n”
$PopUp = $WshShell.popup("$Body1",0,"Заблокированные учетные записи",1)
$Body1 = Get-QADUser -disabled
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body1 = $Body1 | Select name,userPrincipalName, sAMAccountName, ";"
$Body1 = $Body1 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$PopUp = $WshShell.popup("$Body1",0,"Отключенные учетные записи",1)
$Body1 = Get-QADUser -inactivefor 30 -disabled:$false
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body1 = $Body1 | Select name,userPrincipalName, sAMAccountName, ";"
$Body1 = $Body1 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$PopUp = $WshShell.popup("$Body1",0,"Неактивные в течение 30 дней учетные записи",1)
$Body1 = Get-QADUser -inactive -disabled:$false
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body1 = $Body1 | Select name,userPrincipalName, sAMAccountName, ";"
$Body1 = $Body1 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$PopUp = $WshShell.popup("$Body1",0,"Неактивные учетные записи",1)
$Body1 = Get-QADUser -deleted
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body1 = $Body1 | Select name,userPrincipalName, sAMAccountName, ";"
$Body1 = $Body1 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$PopUp = $WshShell.popup("$Body1",0,"Удаленные учетные записи",1)
Этот скрипт отобразит последовательно пять окон, в которых будут отображены:
-
Заблокированные учетные записи
-
Отключенные учетные записи
-
Неактивные в течение 30 дней, но НЕ отключенные учетные записи
-
Учетные записи, которые никогда не были активными и при этом НЕ отключены
-
Удаленные учетные записи
Вариант скрипта, который посылает те же данные на электронную почту:
Код: Выделить всё
$Subject = “Информация об аккаунтах:"
$Server = “smtp.domain.ua”
$From = “noreplay@domain.ua”
$To = “it@domain.ua”
$encoding = [System.Text.Encoding]::UTF8
add-pssnapin "Quest.ActiveRoles.ADManagement"
$Body1 = Get-QADUser -locked
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”`n”
$Body1 = $Body1 | Select name,DN, canonicalName,userPrincipalName, title, displayName,sAMAccountName,givenName,sn, ";"
$Body1 = $Body1 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"****************************`n" -replace “;”,”`n”
$Theme1 = "Заблокированные учетные записи:`n"
$Body2 = Get-QADUser -disabled
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body2 = $Body2 | Select name,userPrincipalName, sAMAccountName, ";"
$Body2 = $Body2 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$Theme2 = "Отключенные учетные записи:`n"
$Body3 = Get-QADUser -inactivefor 30 -disabled:$false
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body3 = $Body3 | Select name,userPrincipalName, sAMAccountName, ";"
$Body3 = $Body3 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$Theme3 = "Неактивные в течение 30 дней учетные записи:`n"
$Body4 = Get-QADUser -inactive -disabled:$false
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body4 = $Body4 | Select name,userPrincipalName, sAMAccountName, ";"
$Body4 = $Body4 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$Theme4 = "Неактивные учетные записи:`n"
$Body5 = Get-QADUser -deleted
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body5 = $Body5 | Select name,userPrincipalName, sAMAccountName, ";"
$Body5 = $Body5 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$Theme5 = "Удаленные учетные записи:`n"
Send-MailMessage -From $From -To $To -SmtpServer $server -Body “$Theme1 $Body1 `n $Theme2 $Body2 `n $Theme3 $Body3 `n $Theme4 $Body4 `n $Theme5 $Body5” -Subject $Subject -Encoding $encoding
Скрипты можно скачать отсюда:
Для выполнения этих скриптов дополнительно необходимо установить на контроллере домена ActiveRoles Management Shell for Active Directory
Это дополнение для 32-х битных систем так же можно скачать здесь.
Решение 2:
Можно просмотреть в журналах MS Windows записи о блокировке учетной записи.
В журнале безопасности, для отслеживания подобных событий, существует запись с кодом 680, от источника Security, категории Account Logon.
- Запись с кодом 680
- Pic1.png (71.35 КБ) 7828 просмотров
В этой записи показана информация о том в какое время и с какого компьютера была предпринята попытка ввода неверного пароля. Конечно есть способ реагировать на событие немедленно. Если вы отслеживаете появления подобных записей и своевременно реагируете на них, то определить источник проблемы будет просто.
Но, может так случиться, что таких записей ОГРОМНОЕ множество. И никто не реагирует на них немедленно, а расследует инциденты потом. Пользователи часто ошибаются с вводом пароля. И не существует простого способа определить точное время того, когда аккаунт был заблокирован. Как правило мы узнаем об этом через некоторое время, от самого пользователя.
А иногда просто необходимо получить информацию о заблокированных учетных записях, не роясь долго в журналах безопасности все контроллеров доменов.
В решении проблемы нам может помочь утилита Microsoft Account Lockout Status
- ALaMT.rar
- Account Lockout and Management Tools
- (949.12 КБ) 788 скачиваний
которая входит в пакет утилит Account Lockout and Management Tools. Утилита была выпущена еще в 2003 году. Удивительно, что спустя много лет она все еще востребована.
Подробное описание пакета есть здесь.
Принцип работы утилиты заключается в том, что она анализирует журналы событий на всех контроллерах домена в сети и определяет на каком контроллере произошла блокировка, в какое время, а так же предоставляет дополнительную информацию, которая может помочь нам в расследовании. Так же утилита может помочь снять блокировку с учетной записи и многое другое.
Оригинал статьи
Пример работы с утилитой Account Lockout and Management Tools:
Чтобы получить список заблокированных пользователей, необходимо:
-
Получить список всех контроллеров домена (Gets All DCs)
-
Выделить все КД для поиска(Selects all DCs for searching)
-
Отметить "Журнал безопасности" (Selects the Security Log)
-
Отметить "Аудит успехов" и "Аудит отказов" (Selects Success and Failure Audits)
-
Указать специфические коды событий "529", "539" и "644" (Sets the Specific IDs to 529 539 644)
В результате выполнения откроется папка с обработанными журналами. Каждому серверу соответствует свой журнал: SRV02-Security_LOG.txt - для сервера "SRV02".
Открываем обработанный журнал, и видим:
В этой выборке просматривать информацию о необходимом нам событии блокировки учетной записи.
[b][size=150]Задача:[/size][/b]
Необходимо найти все заблокированные учетные записи в Microsoft Windows.
Проблема актуальна для доменов с большим количеством пользователей, где нереально просмотреть все учетные записи вручную.
[b][size=150]Решение 1:[/size][/b]
Можно воспользоваться готовым скриптом PowerShell, запустив его на контроллере домена:
[spoiler][code]add-pssnapin "Quest.ActiveRoles.ADManagement"
$WshShell = New-Object -ComObject wscript.shell
$Body1 = Get-QADUser -locked
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”`n”
$Body1 = $Body1 | Select name,DN, canonicalName,userPrincipalName, title, displayName,sAMAccountName,givenName,sn, ";"
$Body1 = $Body1 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"****************************`n" -replace “;”,”`n”
$PopUp = $WshShell.popup("$Body1",0,"Заблокированные учетные записи",1)
$Body1 = Get-QADUser -disabled
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body1 = $Body1 | Select name,userPrincipalName, sAMAccountName, ";"
$Body1 = $Body1 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$PopUp = $WshShell.popup("$Body1",0,"Отключенные учетные записи",1)
$Body1 = Get-QADUser -inactivefor 30 -disabled:$false
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body1 = $Body1 | Select name,userPrincipalName, sAMAccountName, ";"
$Body1 = $Body1 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$PopUp = $WshShell.popup("$Body1",0,"Неактивные в течение 30 дней учетные записи",1)
$Body1 = Get-QADUser -inactive -disabled:$false
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body1 = $Body1 | Select name,userPrincipalName, sAMAccountName, ";"
$Body1 = $Body1 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$PopUp = $WshShell.popup("$Body1",0,"Неактивные учетные записи",1)
$Body1 = Get-QADUser -deleted
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body1 = $Body1 | Select name,userPrincipalName, sAMAccountName, ";"
$Body1 = $Body1 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$PopUp = $WshShell.popup("$Body1",0,"Удаленные учетные записи",1)
[/code][/spoiler]
Этот скрипт отобразит последовательно пять окон, в которых будут отображены:
[list=1][*] Заблокированные учетные записи
[*] Отключенные учетные записи
[*] Неактивные в течение 30 дней, но НЕ отключенные учетные записи
[*] Учетные записи, которые никогда не были активными и при этом НЕ отключены
[*] Удаленные учетные записи[/list]
Вариант скрипта, который посылает те же данные на электронную почту:
[spoiler][code]$Subject = “Информация об аккаунтах:"
$Server = “smtp.domain.ua”
$From = “noreplay@domain.ua”
$To = “it@domain.ua”
$encoding = [System.Text.Encoding]::UTF8
add-pssnapin "Quest.ActiveRoles.ADManagement"
$Body1 = Get-QADUser -locked
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”`n”
$Body1 = $Body1 | Select name,DN, canonicalName,userPrincipalName, title, displayName,sAMAccountName,givenName,sn, ";"
$Body1 = $Body1 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"****************************`n" -replace “;”,”`n”
$Theme1 = "Заблокированные учетные записи:`n"
$Body2 = Get-QADUser -disabled
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body2 = $Body2 | Select name,userPrincipalName, sAMAccountName, ";"
$Body2 = $Body2 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$Theme2 = "Отключенные учетные записи:`n"
$Body3 = Get-QADUser -inactivefor 30 -disabled:$false
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body3 = $Body3 | Select name,userPrincipalName, sAMAccountName, ";"
$Body3 = $Body3 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$Theme3 = "Неактивные в течение 30 дней учетные записи:`n"
$Body4 = Get-QADUser -inactive -disabled:$false
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body4 = $Body4 | Select name,userPrincipalName, sAMAccountName, ";"
$Body4 = $Body4 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$Theme4 = "Неактивные учетные записи:`n"
$Body5 = Get-QADUser -deleted
#$Body1 = $Body1 -replace “;”,”`n” -replace “^”,”,”
$Body5 = $Body5 | Select name,userPrincipalName, sAMAccountName, ";"
$Body5 = $Body5 -replace “@{” -replace “}” -replace “=”, “: ” -replace “;:”,"`n"
$Theme5 = "Удаленные учетные записи:`n"
Send-MailMessage -From $From -To $To -SmtpServer $server -Body “$Theme1 $Body1 `n $Theme2 $Body2 `n $Theme3 $Body3 `n $Theme4 $Body4 `n $Theme5 $Body5” -Subject $Subject -Encoding $encoding
[/code][/spoiler]
Скрипты можно скачать отсюда: [attachment=0]LockedAccounts.rar[/attachment]
Для выполнения этих скриптов дополнительно необходимо установить на контроллере домена [url=http://www.quest.com/powershell/activeroles-server.aspx]ActiveRoles Management Shell for Active Directory[/url]
Это дополнение для 32-х битных систем так же можно скачать [url=http://manaeff.ru/forum/download/file.php?id=975]здесь[/url].
[b][size=150]Решение 2:[/size][/b]
Можно просмотреть в журналах MS Windows записи о блокировке учетной записи.
В журнале безопасности, для отслеживания подобных событий, существует запись с кодом 680, от источника Security, категории Account Logon.
[attachment=4]Pic1.png[/attachment]
В этой записи показана информация о том в какое время и с какого компьютера была предпринята попытка ввода неверного пароля. Конечно есть [url=http://manaeff.ru/forum/viewtopic.php?f=4&t=928]способ реагировать на событие немедленно[/url]. Если вы отслеживаете появления подобных записей и своевременно реагируете на них, то определить источник проблемы будет просто.
Но, может так случиться, что таких записей ОГРОМНОЕ множество. И никто не реагирует на них немедленно, а расследует инциденты потом. Пользователи часто ошибаются с вводом пароля. И не существует простого способа определить точное время того, когда аккаунт был заблокирован. Как правило мы узнаем об этом через некоторое время, от самого пользователя.
А иногда просто необходимо получить информацию о заблокированных учетных записях, не роясь долго в журналах безопасности все контроллеров доменов.
В решении проблемы нам может помочь утилита [b]Microsoft Account Lockout Status[/b]
[attachment=3]ALaMT.rar[/attachment]
которая входит в пакет утилит [url=http://www.microsoft.com/download/en/details.aspx?id=18465]Account Lockout and Management Tools[/url]. Утилита была выпущена еще в 2003 году. Удивительно, что спустя много лет она все еще востребована.
Подробное описание пакета есть [url=http://technet.microsoft.com/en-us/library/cc738772(v=ws.10).aspx]здесь[/url].
Принцип работы утилиты заключается в том, что она анализирует журналы событий на всех контроллерах домена в сети и определяет на каком контроллере произошла блокировка, в какое время, а так же предоставляет дополнительную информацию, которая может помочь нам в расследовании. Так же утилита может помочь снять блокировку с учетной записи и многое другое.
[url=http://it2web.ru/index.php/adds/371-vnezapnaya-blokirovka-uchetnoj-zapisi?start=4]Оригинал статьи[/url]
[b]Пример работы с утилитой Account Lockout and Management Tools:[/b]
Чтобы получить список заблокированных пользователей, необходимо:
[list=1]
[*] Получить список всех контроллеров домена (Gets All DCs)
[*] Выделить все КД для поиска(Selects all DCs for searching)
[*] Отметить "Журнал безопасности" (Selects the Security Log)
[*] Отметить "Аудит успехов" и "Аудит отказов" (Selects Success and Failure Audits)
[*] Указать специфические коды событий "529", "539" и "644" (Sets the Specific IDs to 529 539 644)[/list]
[attachment=2]Accs1.JPG[/attachment]
В результате выполнения откроется папка с обработанными журналами. Каждому серверу соответствует свой журнал: SRV02-Security_LOG.txt - для сервера "SRV02".
Открываем обработанный журнал, и видим:
[attachment=1]Accs.JPG[/attachment]
В этой выборке просматривать информацию о необходимом нам событии блокировки учетной записи.