last logon timestamp что это
Last logon timestamp что это
Добрый день! Уважаемые читатели и гости одного из крупнейших IT порталов в рунете по компьютерным технологиям Pyatilistnik.oeg. В прошлый раз я вам подробно рассказал, что такое WDS сервер, как он может вам помочь вашей повседневной жизни и с какими сложностями вы можете столкнуться. Сегодня мы с вами научимся конвертировать значения из атрибутов lastLogon, lastLogonTimestamp, badPasswordTime в нормальный, привычный вид 13.02.2020 9:44:57.
Описание задачи
Когда у вас есть среда Active Directory, то вы со 100% вероятностью будите использовать различные сценарии PowerShell, по получению разных данных, например «Поиск компьютеров по операционной системе» или «Поиск неактивных компьютеров в AD». В ваших отчетах очень часто могут быть задействованы атрибуты Active Directory:
Атрибуты безусловно полезные, но есть одно но, они изначально выводятся в очень непривычном формате дат, например 132181188021882296. Приведу вам пример простого скрипта, где я получаю список пользователей по атрибутам:
Вы можете заметить, что lastLogon и lastLogonTimestamp имеют значения даты в виде простого набора цифр, по которому очень сложно понять, что за дата.
Как преобразовать системную дату в календарную через PowerShell
Такой формат даты 132181188021882296 называется системный и он измеряется в тиках по 100 наносекунд, отчет которых идет от 1 января 1601 00:00: 00 UT, в таком виде оно отображается и в атрибутах Active Directory.
Мы же привыкли к календарному виду, где есть четко выраженная дата и время 21.02.2020 12:17:31. Ниже я вас научу, как вы можете через PowerShell преобразовывать системное время в календарное.
Давайте я в качестве теста возьму значение из атрибута lastLogon (132259977349862572). Откройте оснастку PowerShell и введите;
В итоге я вижу в календарном виде, что пользователь Барбоскин Геннадий последний раз логинился 12 февраля 2020 г. 19:15:34.
Или есть еще старая утилита w32tm.exe. Введите команду:
Теперь, чтобы нам в скрипте PowerShell, налету преобразовывать системное время в календарное, вы можете воспользоваться конструкцией @
В итоге я вижу, что столбцы lastLogon, lastLogonTimestamp, badPasswordTime имеют читабельный вид.
Преобразование 18-ти значных меток времени LDAP в календарный формат online
Я могу вам порекомендовать удобный сервис, который поможет вам перевести системное время в нормальное, одной кнопкой. Зайдите по ссылке:
Узнать время последнего входа пользователя в домен AD
Администратор Active Directory должен периодически удалять неактивные объекты (пользователя, компьютеры) в базе Active Directory. В этой статье мы покажем, как узнать время последнего входа в домен пользователя AD и найти учетные записи, которые неактивны более 1 года.
Вы можете узнать время последнего входа пользователя в домен AD несколькими способами.
Как получить время входа пользователя в домен в консоли ADUC?
Вы можете узнать время последнего входа пользователя в систему из графической консоли ADUC (Active Directory Users and Computers).
Время последнего входа пользователя из командной строки
Вы можете узнать время последнего входа пользователя в домен из командной строки с помощью net user и dsquery.
Откройте командную строку (не обязательно с правами администратора домена) и выполните команду:
net user administrator /domain| findstr «Last»
Вы получили время последнего входа данного пользователя.
Также вы можете получить время последнего входа с помощью dsquery. Например для учетной записи slpetrov:
Главная проблема в том, что атрибуты lastLogon и lastLogonTimestamp в AD хранятся в формате timestamp и вам нужно дополнительно конвертировать его в нормальный формат времени.
Также вы можете использовать эту команду, чтобы найти всех пользователей, которые неактивны в течении, например, 10 недель:
Узнать время последнего входа пользователя с помощью PowerShell
Также вы можете использовать PowerShell для получения времени последнего входа пользователя в домен. Для этого вам понадобится модуль Active Directory для PowerShell. Установите данный модуль и импортируйте его в свою сессию PowerShell:
Чтобы получить время последнего входа пользователя administrator, выполните команду:
Командлет Get-ADUser вернул время в формате TimpStamp. Чтобы преобразовать его в нормальное время используйте такую команду:
С помощью PowerShell вы можете вывести значение Lastlogon для всех пользователей домена:
Или можно найти пользователей, которые неактивны более полугода (180 дней):
Last logon timestamp что это
Этот форум закрыт. Спасибо за участие!
Лучший отвечающий
Вопрос
2. На некоторых объектах значение данного атрибута пустое (как и значение lastlogon на всех контроллерах домена, т.е. проблема не в репликации lastLogontimeStamp). Из-за чего такое может быть (может ли быть в случае, если уровень домена поднимался с 2000 и аккаунты этих машин существовали еще тогда)? Означает ли это что такие компьютеры никогда не выполняли вход или выполняли очень давно?
3. режим работы домена 2008, в ADSI в атрибутах пользователей или компьютеров нет атрибута ms-DS-Logon-Time-Sync-Interval, даже для тех аккаунтов, у которых метка lastlogonTimeStamp не пустая. что это значит?
Ответы
Про учетную запись компьютера понятно, мне не ясно какие кроме включения процедуры могут спровоцировать обновление LastLogonTimeStamp.
ну вот тут сложнее.. нам нужно заставить компьютер вновь аутентифицироваться в AD. Ну можно попробовать отключить его от сети и дождаться истечения срока дейтсвия керберос тикета и затем включить в сеть, но не уверен. Можно попробовать поднимать впн от имени системы. вот так вот на вскидку не скажу.
У билета Kerberos помимо срока обновления есть ещё и время жизни, по истечении которого билет обновить нельзя, и компьютер вынужден заново пройти аутентификацию на КД, чтобы получить новый билет.
1) многа букв, но мне не совсем понятно чо конкретно спросить то хотели?
3) А вы еще в холодильнике поищите, может там найдется. Это атрибут ДОМЕНА, а никак не отдельного юзверя или компьютера.
Все ответы
1) многа букв, но мне не совсем понятно чо конкретно спросить то хотели?
3) А вы еще в холодильнике поищите, может там найдется. Это атрибут ДОМЕНА, а никак не отдельного юзверя или компьютера.
1) вы когда нить слышали страшное слово аутентификация? попробуйте погуглить определение этого понятия
>>a. локальный вход (interactive);
b. сетевой (например, если пользователь заходит на доменную шару (ведь неважно что она примаплена как сетевой диск, верно?));
например возможность указать логин пароль при примапливании шары сделана по ошибке и аутентификации\авторизации к ресурсу не может иметь никакого отношения по определению.
c. вход на почтовый сервер (полагаю, речь только об Exchange, или о другом, но интегрированном со службой каталогов);
e. LDAP запрос и др. может кто-нибудь привести пример такого запроса, который может быть нужен рядовому пользователю?
Стороннее приложение обращается к домену например для поиска пользователя или списка рассылки. А т.к. доменконтроллеры абы кому инфу не дают, нужно авторизироваться.
Также не ясно какие события инициируют обновление данного атрибута для учетной записи компьютера (кроме, очевидно, интерактивного входа).
У компьютера в AD, как и у пользователя есть свой логин и свой пароль(создается и меняется автоматически). При включении компа он авторизируется в домене представляя эти креденшелы.
Также интересно, что требуется для успешного обновления данного атрибута на компьютере, я имею в виду доступ к какой службе/протоколу.
вот тут поподробнее.. чо спросить то хотели? вы про сам компьютер или обьект компьютера в АД?
Доброго времени суток. Спасибо за ответ.
b. При чем тут возможность указать логин/пароль при переходе на шару, я такого вообще не писал. Вот цитата: » So if a user logs on interactively, browses a network share.... the lastLogontimeStamp attribute will updated if the right condition is met. «
d. Не поверю, вы можете ответить нормально?
У компьютера в AD, как и у пользователя есть свой логин и свой пароль(создается и меняется автоматически). При включении компа он авторизируется в домене представляя эти креденшелы.
Про учетную запись компьютера понятно, мне не ясно какие кроме включения процедуры могут спровоцировать обновление LastLogonTimeStamp.
вот тут поподробнее.. чо спросить то хотели ? вы про сам компьютер или обьект компьютера в АД?
Должны ли быть запущены какие-то службы (не знаю, rpc например) или включены правила брандмауэра на компьютере, чтобы при его «входе» обновился атрибут LastLogon соответствующей учетной записи компьютера на одном из КД, или это неважно и атрибут будет обновлен при определенных условиях (зависящих от ms-DS-Logon-Time-Sync-Interval )?
Я попытался заострить ваше внимание на аутентификации. Процесс обновления атрибута происходит НА ДОМЕНКОНТРОЛЛЕРЕ в момент аутентификации пользователя\компьютера(т.е. грубо говоря проверки валидности пары логин\пароль).
Про учетную запись компьютера понятно, мне не ясно какие кроме включения процедуры могут спровоцировать обновление LastLogonTimeStamp.
ну вот тут сложнее.. нам нужно заставить компьютер вновь аутентифицироваться в AD. Ну можно попробовать отключить его от сети и дождаться истечения срока дейтсвия керберос тикета и затем включить в сеть, но не уверен. Можно попробовать поднимать впн от имени системы. вот так вот на вскидку не скажу.
Должны ли быть запущены какие-то службы (не знаю, rpc например) или включены правила брандмауэра на компьютере, чтобы при его «входе» обновился атрибут LastLogon соответствующей учетной записи компьютера на одном из КД, или это неважно и атрибут будет обновлен при определенных условиях (зависящих от ms-DS-Logon-Time-Sync-Interval )?
Ну стандартно должны быть открыты порты и запушены службы для нормального логона. вот порты на вскидку(могут менятся в записимости от версии оси):
а все сервисы мне лень гуглить, рабочий день заканчивается. 🙂
если разница больше чем значение ms-DS-Logon-Time-Sync-Interval (точнее ms-DS-Logon-Time-Sync-Interval минус случайное количество времени в пределах 5 дней ) то тогда вместо старого значения LastLogonTimeStamp записывается текущее время.
По п.2 точно не скажу, не припомню чтоб сталкивался с такой проблемой. Но блин я с 2000го грейдился сто лет назад в последний раз. 🙂
Про учетную запись компьютера понятно, мне не ясно какие кроме включения процедуры могут спровоцировать обновление LastLogonTimeStamp.
ну вот тут сложнее.. нам нужно заставить компьютер вновь аутентифицироваться в AD. Ну можно попробовать отключить его от сети и дождаться истечения срока дейтсвия керберос тикета и затем включить в сеть, но не уверен. Можно попробовать поднимать впн от имени системы. вот так вот на вскидку не скажу.
У билета Kerberos помимо срока обновления есть ещё и время жизни, по истечении которого билет обновить нельзя, и компьютер вынужден заново пройти аутентификацию на КД, чтобы получить новый билет.
Спасибо всем за ответы.
Значит нет необходимости выключать/включать компьютер для обновления атрибута. Понятно, спасибо.
Вопрос всем: в указанной мной статье от Уоррена Уильямса указаны условия обновления атрибута lastLogonTimeStamp и они ясны, условия обновления атрибута lastLogon такие же (например, его значение для одного из компьютеров уже пару дней не меняется ни на одном КД и равно lastLogontimeStmap, так что похоже условия те же)? При этом возможна гипотетически такая ситуация:
1й КД обслужил вход 1 январая, изменил lastLogon и изменил lastLogonTimeStamp и реплицировал его.
2й КД обслужил вход 8 января, его «прежний» LastLogon очень старый и он обновляет его значение, но условия для обновления lastLogontimeStamp не выполнены и получаем ситуацию, когда на одном из КД lastLogon больше чем lastLogontimeStamp. Такое может быть, верно? Хм, однако это похоже на правило 14 дней это не повлияет (имею в виду, что если ведется поиск неактивных машин в последние 90 дней, то стоит добавить 13 дней и искать по сроку 103 дня, чтобы гарантировано не задеть живые машины).
Также интересно, может ли быть какая-то причина (кроме ситуации, когда компьютер никогда не выполнял вход) отсутствия значения lastLogon (именно этого атрибута) для машины на любом контроллере домена? В моем случае ситуация такова, что за неделю до моего прихода из эксплуатации вывели КД, который был поднят с 2000 и если учесть, что есть вероятность отсутствия нормального копирования (или вообще копирования) lastLogon в LastLogontimeStamp для учеток компьютеров, которые жили еще при 2000 режиме, то есть большой шанс, что этот КД забрал с собой некоторые lastLogon`ы старых машин, ведь в моей структуре всего у нескольких машин lastLogon из 2013 года, остальные, если есть, все из 14го (в основном из последних 3-4х месяцев), но я не верю что обслуживал вход тех давно добавленных машин только этот удаленный КД, ведь в пределах одного сайта выбор КД для аутентификации происходит рандомно. Может у значений атрибутов lastLogon есть время жизни?
LastLogon и LastLogonTimestamp: дата последнего входа в привычном виде
Используя Active Directory, системный администратор постоянно сталкивается с необходимостью получить и систематизировать информацию о пользователях. Сегодня поговорим о двух атрибутах учётных записей, которые показывают дату и время последнего входа. Это LastLogon и LastLogonTimestamp. Если вы используете модуль Active Directory для PowerShell, то, скорее всего, замечали необычные значения этих атрибутов. Сделаем так, чтобы значения этих атрибутов имели привычный нам вид даты и времени.
Напомню, для просмотра атрибутов учётных записей в Active Directory через PowerShell нужно, чтобы последний был не ниже второй версии, а в операционной системе должен присутствовать модуль Active Directory для PowerShell. В этом случае мы можем посмотреть время последнего входа в систему через LastLogon или LastLogonTimestamp. Лучше использовать последний. Дальше вы поймёте почему. А начнём с LastLogon.
Для просмотра даты и времени последнего входа можно использовать вот такую конструкцию:
Таким нехитрым способом мы посмотрели время последнего входа у пользователей, что располагаются в конкретном OU, и расположили их в виде таблицы. Не забудьте заменить значения OU и DC на ваши.
Обратите внимание на скриншот ниже. Дата и время на нём, мягко говоря, не совсем читабельные. А у некоторых пользователей их и вовсе нет.
Что такое 132440351838433686? Это дата и время, записанные в системном формате. Он измеряется в тиках по 100 наносекунд, отсчёт которых идёт с 1 января 1601 года 00:00:00 UT. Давайте преобразуем эту запись в более привычный для нас формат:
Теперь читать дату и время намного удобнее. Если раньше у некоторых пользователей дата и время последнего входа отсутствовали вовсе, то теперь у таких пользователей мы видим дату 01.01.1601. Дата, конечно, не имеет ничего общего с реальностью. Но мы помним, что именно от неё начинает свой отсчёт системное время. К этой дате мы ещё вернёмся. А пока выгрузим полученную информацию в файл. Например, в CSV-файл. Для этого добавим ещё один элемент в наш конвейер.
Путь сохранения файла, разделитель и кодировка — по вкусу.
Пытливый читатель, возможно, заметил, что здесь мы использовали Select-Object. FT тут работать не будет.
Ну а теперь о пустых значениях LastLogon у некоторых пользователей. И о том, почему лучше использовать LastLogonTimestamp. Дело в том, что LastLogon не реплицируется контроллерами домена, а LastLogonTimestamp реплицируется. Правда и тут может быть погрешность от 9 до 14 дней. Потому что именно в такие сроки контроллеры домена реплицируют атрибут LastLogonTimestamp. Сделано это для минимизации трафика. При каждой регистрации пользователя контроллер анализирует значение LastLogonTimestamp, затем контроллер выбирает случайное число между 9 и 14. Если число дней между событием последней регистрации и текущим моментом меньше выбранного числа, то контроллер не обновляет значение LastLogonTimestamp у этого пользователя.
В этот раз дата и время последнего входа есть у всех пользователей. Но помните, что это не самые точные дата и время входа.
Напоследок приведу пример экспорта LastLogonTimestamp в CSV.
Теперь вы знаете как посмотреть дату последнего входа пользователя в PowerShell в удобном формате.
Информации о последнем входе в Windows на экране приветствия
В Windows есть полезная функция, позволяющая отобразить информацию о последней интерактивной попытке входа в систему прямо на экране приветствия Windows. Выглядит это следующим образом: каждый раз, когда пользователь набирает свой пароль для входа в систему, перед ним появляется информация с датой и временем последней удачной и неудачной попытке входа в систему (а также общее количество неудачных попыток входа). Если при попытке регистрации на компьютере будет введен неверный пароль (например, в случае попытки несанкционированного доступа), то при следующей загрузке системы пользователь увидеть уведомление о неудавшейся попытке войти на его компьютер.
В этой статье разберемся, как включить отображение информации о последнем интерактивном входе в систему на экране приветствия. Данный функционал будет работать на всех ОС Windows, начиная с Windows Vista, а для работы на доменном уровне требует функционального уровня домена не менее Windows Server 2008. Именно в этой версии в схеме Active Directory появился ряд новых атрибутов пользователя, которые содержат информацию о попытках интерактивного входа в систему.
Указанные выше атрибуты, в отличии от уже знакомым нам атрибутов lastLogon, lastLogontimeStamp, badPasswordTime и badPwdCount (появившихся еще в Windows 2000), реплицируются между всеми контроллерами домена.
Чтобы активировать политику, поменяем ее значение на Enabled и сохраним изменения.
Политика будет работать на всех компьютерам с ОС, выше Windows Vista. Машины с Windows XP и Windows Server 2003 эту групповую политику игнорируют.
Осталось применить политику к целевому компьютеру:
При следующем входе в систему после ввода пароля учетной записи появится сообщение с текстом:
Successful sign-in. The last time you interactively signed in to this account was: …
Unsuccessful sign-in. There have been no unsuccessful interactive sign-in attempts with this account since your last interactive sign-in
В русской версии Windows текст будет таким:
Успешный вход в систему. Последний интерактивный вход в систему был выполнен: «дата и время»
Неудачный вход в систему. Со времени последнего интерактивного входа в систему не предпринималось попыток входа в систему
Чтобы продолжить загрузку системы пользователю нужно нажать OK (или Enter).
На локальных ПК, но которых отсутствует редактор групповых политик, включить эту функцию можно через редактор реестра, для чего:
Функционал отслеживания последнего интерактивного входа удобно использовать, когда нужно обнаружить попытку атаки на каталог AD путем подбора пароля, а также в целях выполнения нормативных требований и обеспечения аудита, отслеживая источник и время попытки доступа к учетной записи пользователя.