Відділ інформаційної безпеки поставив завдання розробки найпростішої системи аудиту, яка повинна щодня вивантажувати статистику про облікові записи Active Directory, створених за останні 24 години, а також інформацію про те, хто створив ці облікові записи в домені.
зміст:
- Powershell скрипт отримання списку недавно створених користувачів в Active Directory
- Як дізнатися, хто створив обліковий запис в Active Directory
Powershell скрипт отримання списку недавно створених користувачів в Active Directory
Для отримання списку користувачів створених в Active Directory за останні 24 години, найпростіше скористатися Командлети PowerShell Get-ADUser. Висновок командлет будемо фільтрувати по атрибуту користувача whencreated, в якому зберігається дата і час створення облікового запису. У мене вийде такий простенький PowerShell скрипт:
$ Lastday = ((Get-Date) .AddDays (-1))
$ Filename = Get-Date -Format yyyy.MM.dd
$ Exportcsv = "c: \ ps \ new_ad_users_" + $ filename + ".csv"
Get-ADUser -filter (whencreated -ge $ lastday) | Export-csv -path $ exportcsv
У цьому прикладі список облікових записів AD зберігається в файл з поточною датою в якості імені. За допомогою планувальника можна налаштувати щоденний запуску даного скрипта, в результаті чого в зазначеному каталозі будуть накопичуватися файли містять інформацію про дату створення тієї чи іншої облікового запису. У звіт можна додати будь-які інші атрибути користувача з Active Directory (див. Статтю про використання Get-ADUser).
Як дізнатися, хто створив обліковий запис в Active Directory
Крім факту створення облікового запису безпечники може бути цікава інформація про ім'я конкретного користувача, який завів у Active Directory певний аккаунт. Цю інформацію можна отримати з журналів безпеки контролерів домену Active Directory.
При закладі нового користувача в журналі безпеки контролера домену (тільки того DC, на якому створювалася обліковий запис) З'являється подія з кодом EvenId 4720 (На DC повинна бути включена політика аудиту Audit account management в політиці Default Domain Controller Policy).
В описі цієї події міститься рядок A user account was created, а потім вказано аккаунт, з-під якого була створена нова учетка користувача AD (виділено на скріншоті нижче).
Скрипт для вивантаження всіх подій створення акаунтів з журналу контролера домену за останні 24 години може виглядати наступним чином:
$ Time = (get-date) - (new-timespan -hour 24)
$ Filename = Get-Date -Format yyyy.MM.dd
$ Exportcsv = "c: \ ps \ ad_users_creators" + $ filename + ".csv"
Get-WinEvent -FilterHashtable @ LogName = "Security"; ID = 4720; StartTime = $ Time | Foreach
$ Event = [xml] $ _. ToXml ()
if ($ event)
$ Time = Get-Date $ _. TimeCreated -UFormat "% Y-% m-% d% H:% M:% S"
$ CreatorUser = $ event.Event.EventData.Data [4]. "# Text"
$ NewUser = $ event.Event.EventData.Data [0]. "# Text"
$ Dc = $ event.Event.System.computer
$ Dc + "|" + $ Time + "|" + $ NewUser + "|" + $ CreatorUser | out-file $ exportcsv -append
За аналогією зі статтею "Проста система аудиту видалення файлів і папок для Windows Server" можна налаштувати збереження інформації про знайдених події не в текстовий файл на кожному DC, а через MySQL .NET Connector для PowerShell єдину базу MySQL.