При построении инфраструктуры с использованием AD периодически возникает ситуация, когда необходимо отследить время входа\выхода конкретного пользователя - для учета времеи работы, или же для отслеживания конкретных событий. Мы не будем здесь рассматривать использование известного атрибута lastLogon(или же lastLogonTimpestamp, использование которых имеет свои особенности - например, lastLogonTimpestamp реплицируется между домен-контроллерами только через 14 дней, по умолчанию).
Вместо этого посмотрим, как можно настроить систему для получения истории аутентификации/выхода пользователя.
Необходимо настроить аудит logon/logoff
Настройка не представляет собой ничего сложного:
1. Запустите редактор GPO( GPMC.msc)
2. Default Domain Policy -> Computer Configuration -> Policies -> Windows Settings -> Security Settings –> Advanced Audit Policy Configuration -> Audit Policies -> Logon/Logoff;
3.Включаем( ставим галочки) политики аудита (Audit Logon и Audit Other Logon/Logoff Events).
4. Сохраняем изменения, выполняем
gpupdate /force
на всех контроллерах домена.
Теперь будут логироваться события Event ID 4624 (An account was successfully logged on) , отражающие успешный вход в систему на любом комьютере домена, в свойствах которых присутствуют интересующие нас поля - Account name, Workstation name или IP адрес (Source Network Address) системы, с которой была выполнена аутентификация.
Особо следует обратить внимание на поле Logon Type - там отображаются такие подключения, как Logon Type 10 ( Remote Interactive logon - сюда входят все подключения по RDP, включая теневые) и Logon Type 3 ( Network logon - аутентификация при использовании принтера, сетевого каталога или служб IIS ). Простой логин пользователя(ввод пароля с клавиатуры) определяется как Logon Type 2, а событие разблокировки компьютера - как Logon Type 7
С точки зрения мониторинга логинов пользователей нас может также заинтересовать событие Event ID 4768 - A Kerberos authentication ticket (TGT) was requested . В этом событии также указываются подробности о подключающемся пользователе, Account Name или User ID, а также IP или имя машины.
Настройка мониторинга будет аналогичной, ставим галочки в Account Logon –> Audit Kerberos Authentication Service -> Success и Failure.
С помощью командлета PowerShell Get-Eventlog можно получить все события из журнала контроллера домена, отфильтровать их по нужному коду (EventID) и вывести все дополнительные данные - имя пользователя, время логина, имя машины пользователя и тп.
В случае, если в домене несклоько домен-контроллеров, необходимо также исопользовать командлет Get-ADDomainController, чтобы сначала получить список всех контроллеров в домене(т.е. искомые EventID будут в логах только того DC, через который происходила аутентификация)
Для каждого типа отслеживания можно написать соответствующий скрипт, используя командлеты, указанные выше и сортировку по типу EventID.