С Новым годом! Форум программистов, компьютерный форум, киберфорум
Администрирование Windows
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/120: Рейтинг темы: голосов - 120, средняя оценка - 4.68
 Аватар для Джуниор
88 / 67 / 8
Регистрация: 29.09.2009
Сообщений: 427

История входа пользователей в ОС

07.10.2018, 20:56. Показов 24946. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, необходимо вывести журнал авторизации пользователей в системе Windows server ( Аудит включен)

Журнал нужен примерно следующий виде.

Дата, тип события( вход/выход) ,Имя пользователя.

Журнал необходим, чтоб отследить пользователей входивших (выходивших) в систему за определенный период.

Системный журнал в обычном режиме показывает лишь события успешного / не успешного входа в систему, но как вывести рядом пользователя сгенерировавшего данное событие не ясно.

Варианты решения:
  • Готовое ПО для анализа авторизации пользователей
  • Какой нибудь хитрый скприт
  • Тонкая настройка фильтров журнала событий
Кто что успешно практиковал и может поделиться решением?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.10.2018, 20:56
Ответы с готовыми решениями:

Время входа пользователей
Здравствуйте! Есть WS 2008 x32, помогите создать запрос. Требуется сделать выгрузку в excel Подобного формата Пользователь: Время...

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

Мониторинг входа/выхода пользователей
Нужно написать скрипт,который записывал бы время,дату и имя компьютера в txt файл,сразу же после выполнения входа в ОС.

6
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
11.10.2018, 19:18
Цитата Сообщение от Джуниор Посмотреть сообщение
необходимо вывести журнал авторизации пользователей в системе Windows server ( Аудит включен)
Цитата Сообщение от Джуниор Посмотреть сообщение
Какой нибудь хитрый скприт
PowerShell вам в помощь:

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Get-WinEvent -ComputerName 'localhost' -FilterHashtable @{
    logname = "Security";
    StartTime = (Date).AddDays(-1);
    ID = 4624,4634;
} | %{
    
    $event = $_
    
    $xmlEvent = [xml]$event.ToXml()
    $EventData = New-Object PSObject
    $xmlEvent.event.EventData.Data | % {$EventData | Add-Member NoteProperty $_.Name $_."#text"}
    
    if ($EventData.LogonType -eq 2)
    {
 
    New-Object PSObject -Property @{
        EventId =     $event.Id
        TimeCreated = $event.TimeCreated
        Task        = "$($event.TaskDisplayName)"
        Keywords    = "$($event.KeywordsDisplayNames)"
        User        = $EventData.TargetUserName
        }
 
    }
 
} | ft -a
0
 Аватар для Джуниор
88 / 67 / 8
Регистрация: 29.09.2009
Сообщений: 427
11.10.2018, 20:57  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
PowerShell вам в помощь:
Спасибо за ответ. Указанный Вами скрипт выводит в качестве результата сам свой текст. Возможно я что то делаю не так или в процессе копирования кода что то не так копируется.
Миниатюры
История входа пользователей в ОС  
0
 Аватар для Джуниор
88 / 67 / 8
Регистрация: 29.09.2009
Сообщений: 427
11.10.2018, 21:02  [ТС]
Я нашел решение, обратился к коллеге программисту. Мне помог следующий код:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$time = [int64](New-TimeSpan (get-date "01/01/2017") (get-date "08/10/2018")).TotalMilliseconds
$filter = "*[System[TimeCreated[timediff(@SystemTime) < $time] and EventID=4624] and EventData[Data[@Name='LogonType']=10]]"
$results = @(
Get-WinEvent -FilterXPath $filter -LogName Security | Foreach {
$evt = $_
$addr = $evt.Properties[18].Value
$textcolor = $host.ui.rawui.foregroundcolor
$host.ui.rawui.foregroundcolor = "red"
 
if ($addr -like "192.168.0*") {$host.ui.rawui.foregroundcolor = "DarkGreen"}
if ($addr -like "10.*") {$host.ui.rawui.foregroundcolor = "yellow"}
"" | Select-Object @{n="Time";e={$evt.TimeCreated}},@{n="UserName";e={$evt.Properties[5].Value}},@{n="Address";e={$addr}}
$host.ui.rawui.foregroundcolor = $textcolor
}
)
$results | export-csv -Encoding UTF8 -Path d:\so1.csv -NoTypeInformation -Delimiter ";"
Выводит результат в файл d:\so1.csv очень удобно анализировать.

предварительно нужно разрешить исполнение пользовательских сценариев в повершел. Иначе скрипт не выполняется.
Подробно есть статья на хабре "PowerShell и аудит безопасности"
Миниатюры
История входа пользователей в ОС  
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
12.10.2018, 00:13
Лучший ответ Сообщение было отмечено Джуниор как решение

Решение

Цитата Сообщение от Джуниор Посмотреть сообщение
Указанный Вами скрипт выводит в качестве результата сам свой текст.
Это значит, что за прошедшие сутки таких событий не найдено.

Скрипт который вы запустили:

1. Ищет события за последние сутки от момента запуска - (Date).AddDays(-1). Можете поменять -1 на больший интервал.
2. Ищет события, у которых LogonType = 2, т.е. интерактивный вход/выход в систему. Подробности здесь.

Цитата Сообщение от Джуниор Посмотреть сообщение
Я нашел решение, обратился к коллеге программисту. Мне помог следующий код:
Этот код использует тот же Get-WinEvent из PowerShell, вот только выбирает он события о терминальном входе в систему (RemoteInteractive), о чём вы забыли уточнить в изначальном запросе + диапазон в вашем примере почти два года.

А вот учитывая, что вам необходимо выбирать события за очень длительный срок, выбор xml-фильтра, действительно более оправдан, т.к. Get-WinEvent с хеш-фильтром обрабатывает Security-журнал намного дольше (где-то даже есть об этом статья).

Однако, ваш код не выбирает события выхода и не показывает неудачные попытки. Если это добавить, получится примерно так:

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<#
Logon Type Description
 
2   Interactive (logon at keyboard and screen of system)
3   Network (i.e. connection to shared folder on this computer from elsewhere on network)
4   Batch (i.e. scheduled task)
5   Service (Service startup)
7   Unlock (i.e. unnattended workstation with password protected screen saver)
8   NetworkCleartext (Logon with credentials sent in the clear text. Most often indicates a logon to IIS with "basic authentication") See this article for more information.
9   NewCredentials such as with RunAs or mapping a network drive with alternate credentials.  This logon type does not seem to show up in any events.  If you want to track users attempting to logon with alternate credentials see 4648.  MS says "A caller cloned its current token and specified new credentials for outbound connections. The new logon session has the same local identity, but uses different credentials for other network connections."
10  RemoteInteractive (Terminal Services, Remote Desktop or Remote Assistance)
11  CachedInteractive (logon with cached domain credentials such as when logging on to a laptop when away from the network)
 
#>
 
$EndDate = date
$StartDate = $EndDate.AddDays(-365)
 
$LogonType = 10
$csvFile = 'c:\temp\report.csv'
$ComputerName = 'localhost'
 
 
$time = [int64](New-TimeSpan $StartDate $EndDate).TotalMilliseconds
$xmlFilter = "*[System[TimeCreated[timediff(@SystemTime) < $time] and (EventID=4624 or EventID=4634)] and EventData[Data[@Name='LogonType']=$LogonType]]"
 
Get-WinEvent -ComputerName $ComputerName -FilterXPath $xmlFilter -LogName Security | %{
    
    $event = $_
    
    $xmlEvent = [xml]$event.ToXml()
    $EventData = New-Object PSObject
    $xmlEvent.event.EventData.Data | % {$EventData | Add-Member NoteProperty $_.Name $_."#text"}
    
    [pscustomobject][ordered]@{
        EventId =     $event.Id
        DateCreated = $event.TimeCreated.ToShortDateString()
        TimeCreated = $event.TimeCreated.ToLongTimeString()
        Task        = "$($event.TaskDisplayName)"
        Keywords    = "$($event.KeywordsDisplayNames)"
        User        = $EventData.TargetUserName
        IP          = $EventData.IpAddress
        LogonType   = switch ($EventData.LogonType)
                      {
                        2  {'Interactive'}
                        3  {'Network'}
                        4  {'Batch'}
                        5  {'Service'}
                        7  {'Unlock'}
                        8  {'NetworkCleartext'}
                        9  {'NewCredentials'}
                        10 {'RemoteInteractive'}
                        11 {'CachedInteractive'}
                        Default {$EventData.LogonType}
                      }
 
    }
 
} | Export-Csv -Encoding UTF8 -Path $csvFile -NoTypeInformation -Delimiter ";"
 
cls
Import-Csv $csvFile -Delimiter ';' | ft -a
2
 Аватар для Джуниор
88 / 67 / 8
Регистрация: 29.09.2009
Сообщений: 427
12.10.2018, 09:58  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
вот только выбирает он события о терминальном входе в систему (RemoteInteractive), о чём вы забыли уточнить в изначальном запросе + диапазон в вашем примере почти два года.
Да забыл уточнить.

Интервал 2 года вбит от балды.
Сервер активно используется. Объем записей ограничен предельным размером файла журнала аудита. В итоге событий больше чем за 2 месяца не сохраняются( оно и не нужно пока).

Отдельно благодарю за улучшенный скрипт!!!
0
0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 10
04.05.2020, 06:49
Добрый день! Спустя полтора года, апну тему...
Ребятушки, помогите разобраться. Эта тема мне очень помогла (5), но теперь вопрос в том, как в PowerShell настроить сценарий по EventID 4647 (4647: Пользователь инициировал выход из системы.). Если говорить про 4634 - то время с точностью до секунды совпадает с 4624, то есть как я понимаю, как только сценарий авторизации пройден, начинается другой сценарий.
Цитата с https://docs.microsoft.com/
Основное различие между событием "4647: Пользователь инициировал выход из системы." и событием 4634 состоит в том, что событие 4647 создается при инициировании процедуры выхода определенной учетной записью с помощью функции выхода из системы, а событие 4634 показывает, что сеанс был завершен и больше не существует.
Пробуя выводить по 4647 - сценарий не выполняется, либо выводит пустые строки.

Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.05.2020, 06:49
Помогаю со студенческими работами здесь

Запрет повторного входа пользователей
Всем , здравствуйте. Исходные данные: Проект на MVS 2015. Авторизация пользователей работает через SQL. Вопрос: ...

Скрипт входа пользователей на сайт
Всем привет! Народ надо какую-то инструкцию по созданию входа на страницу. Php не могу нормально настроить для входа на сайт. Как вообще...

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

Еще раз про форму входа пользователей
Здравствуйте, Уважаемые форумчане! Вопрос формы входа пользователей - стар как мир. Но гугление не дает конкретных ответов. Суть...

Аудит входа пользователей в Windows XP Home Edition
Добрый день, Помогите решить проблему: необходимо чтобы Windows XP home вел журнал учета успешного/неуспешного входа пользователей в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru