1000+ инструкций в блоге SoftComputers
0 0 голоса
Рейтинг

Отслеживание входов пользователей в домен Active Directory позволяет администраторам контролировать активность, выявлять подозрительные действия и анализировать использование ресурсов. Встроенные атрибуты, такие как lastLogon и lastLogonTimestamp, предоставляют базовую информацию о последней аутентификации, но для получения полной истории входов требуется настройка аудита и использование PowerShell для анализа событий.

Приобрести оригинальные ключи активации Windows Server можно у нас в каталоге от 1190 ₽

Зачем отслеживать входы пользователей

В Active Directory информация о последнем входе пользователя хранится в атрибутах:

lastLogon: Обновляется только на контроллере домена (DC), который обработал аутентификацию.

lastLogonTimestamp: Реплицируется между всеми DC, но обновляется с задержкой до 14 дней.

Эти атрибуты можно получить через редактор атрибутов Active Directory или командлет Get-ADUser. Однако для анализа истории входов за длительный период необходим аудит событий аутентификации и сбор данных из журналов безопасности контроллеров домена.

Настройка аудита входов в Active Directory

Для фиксации событий входа пользователей в домене настройте политику аудита на уровне домена. Это позволит регистрировать успешные и неуспешные попытки аутентификации в журналах безопасности.

Шаги настройки политики аудита

1. Откройте консоль Редактор управления групповыми политиками (gpmc.msc).

2. Создайте новый объект групповой политики (GPO) и свяжите его с корнем домена. Не редактируйте политику Default Domain Policy.

3. Перейдите в раздел:

Конфигурация компьютера → Политики → Параметры Windows → Параметры безопасности → Расширенная конфигурация политики аудита → Политики аудита → Вход/Выход

(Computer Configuration → Policies → Windows Settings → Security Settings → Advanced Audit Policy Configuration → Audit Policies → Logon/Logoff).

4. Включите две политики:

Аудит входа (Audit Logon): Установите Успех (Success) и, при необходимости, Неудача (Failure).

Аудит других событий входа/выхода (Audit Other Logon/Logoff Events): Установите Успех (Success).

5. Включите аудит Kerberos:

Перейдите в Политики аудита → Вход в учетную запись → Служба аутентификации Kerberos

(Audit Policies → Account Logon → Audit Kerberos Authentication Service).

Установите Успех (Success).

6. Сохраните изменения в GPO.

7. Дождитесь репликации политики между DC (обычно 5–15 минут) или выполните команду:

gpupdate /force

Что регистрируется после включения аудита

После настройки в журнале Безопасность (Security) на контроллере домена, обработавшем аутентификацию (LogonServer), появляются события:

Event ID 4624: Успешный вход пользователя (An account was successfully logged on). Содержит:

– Имя учетной записи (Account Name).

– Имя или IP-адрес компьютера (Workstation Name или Source Network Address).

– Тип входа (Logon Type):

Logon Type 2: Интерактивный (локальный) вход.

Logon Type 3: Сетевой вход (например, доступ к папке, принтеру или службе IIS).

Logon Type 10: Удаленный вход через RDP, теневое подключение или Remote Assistance.

Logon Type 7: Разблокировка сессии после блокировки экрана.

Event ID 4768: Выдача билета Kerberos TGT (A Kerberos authentication ticket was requested). Содержит имя пользователя, IP-адрес клиента и имя DC.

Увеличение размера журналов событий

Для хранения длительной истории входов увеличьте максимальный размер журнала Безопасность на контроллерах домена:

1. Откройте Просмотр событий (Event Viewer) → Журналы Windows → Безопасность (Windows Logs → Security).

2. Щелкните правой кнопкой мыши → Свойства (Properties).

3. Установите максимальный размер журнала, например, 1 ГБ, и выберите Перезаписывать события при необходимости (Overwrite events as needed).

4. Примените изменения.

Альтернативно, настройте размер через PowerShell:


Limit-EventLog -LogName Security -MaximumSize 1GB

Сбор истории входов с помощью PowerShell

Для анализа истории входов используйте PowerShell для извлечения событий Event ID 4624 или 4768 из журналов безопасности всех контроллеров домена.

Скрипт с использованием Get-WinEvent

Командлет Get-WinEvent быстрее, чем Get-EventLog, и рекомендуется для работы с большими журналами. Пример скрипта для получения входов пользователя за последние 24 часа:


$TargetUsername = 'abelov'
$StartTime = (Get-Date).AddHours(-24)
$LogonTypeDescriptions = @{
'2' = 'Interactive'
'3' = 'Network'
'7' = 'Unlock'
'10' = 'RemoteInteractive'
'11' = 'CachedInteractive'
}
$DomainControllers = Get-ADDomainController -Filter *
$LogonEvents = @()
foreach ($DC in $DomainControllers) {
$FilterHashtable = @{
LogName = 'Security'
ID = 4624
StartTime = $StartTime
}
$Events = Get-WinEvent -ComputerName $DC.HostName -FilterHashtable $FilterHashtable -ErrorAction SilentlyContinue
foreach ($Event in $Events) {
$EventData = [xml]$Event.ToXml()
$EventUser = $EventData.Event.EventData.Data[5].'#text'
$LogonTypeCode = $EventData.Event.EventData.Data[8].'#text'
if ($EventUser -eq $TargetUsername) {
$LogonEvent = [PSCustomObject]@{
TimeCreated = $Event.TimeCreated
ComputerName = $EventData.Event.EventData.Data[11].'#text'
IPAddress = $EventData.Event.EventData.Data[18].'#text'
Username = $EventUser
LogonType = $LogonTypeDescriptions[$LogonTypeCode] DCName = $DC.HostName
}
$LogonEvents += $LogonEvent
}
}
}
$LogonEvents | Format-Table -AutoSize

Этот скрипт выводит таблицу с информацией:

– Время входа (TimeCreated).

– Имя компьютера (ComputerName).

– IP-адрес клиента (IPAddress).

– Имя пользователя (Username).

– Тип входа (LogonType).

– Имя контроллера домена (DCName).

Экспорт логов в CSV

Для сохранения результатов в файл используйте:


$FileName = "C:\Logs\LogonEvents_$(Get-Date -Format 'yy_MM_dd').csv"
$LogonEvents | Export-Csv -Path $FileName -NoTypeInformation -Encoding UTF8

Анализ событий Kerberos (Event ID 4768)

Для получения истории аутентификации по билетам Kerberos используйте следующий скрипт. Он исключает сетевые входы (например, доступ к общим папкам), что уменьшает объем данных:


$alluserhistory = @()
$startDate = (Get-Date).AddDays(-2)
$DCs = Get-ADDomainController -Filter *
foreach ($DC in $DCs) {
$logonevents = Get-WinEvent -LogName Security -FilterHashtable @{LogName='Security';ID=4768;StartTime=$startDate} -ComputerName $DC.HostName -ErrorAction SilentlyContinue
foreach ($event in $logonevents) {
if ($event.Properties[0].Value -notlike '*$') {
$userhistory = [PSCustomObject]@{
UserName = $event.Properties[0].Value
IPAddress = $event.Properties[9].Value
Date = $event.TimeCreated
DC = $DC.Name
}
$alluserhistory += $userhistory
}
}
}
$alluserhistory | Format-Table -AutoSize

Отслеживание выхода пользователей

Для анализа длительности сессий ищите события выхода (Logoff) с Event ID 4634:


$FilterHashtable = @{
LogName = 'Security'
ID = 4634
StartTime = (Get-Date).AddHours(-24)
}
Get-WinEvent -FilterHashtable $FilterHashtable -ComputerName $DC.HostName

Ограничения и рекомендации

– Аудит Kerberos (Event ID 4768) не включает входы через NTLM, что может пропустить некоторые события.

– Увеличение размера журналов увеличивает нагрузку на диск. Регулярно архивируйте старые логи.

– Используйте Get-WinEvent вместо Get-EventLog для повышения производительности.

– Для точечного анализа указывайте конкретного пользователя и временной диапазон в скриптах.

– Храните журналы в централизованной системе, например, SIEM, для долгосрочного анализа.

Эта настройка обеспечит полный контроль над активностью пользователей в Active Directory, упрощая аудит и устранение неполадок.

author avatar
copywriter
banner for Windows Server
Лицензионный ключ активации Windows Server от
1190 ₽ Купить
0 0 голоса
Рейтинг
Подписаться
Уведомить о
guest
     
0 отзывов
52
Межтекстовые Отзывы
Посмотреть все комментарии