10 критически важных event ID для мониторинга / Блог компании Netwrix / Хабр

Logoff, shutdown и reboot с помощью wmi и powershell

Для того, чтобы выключить, перезагрузить компьютер или завершить сеанс пользователя, в PowerShell можно воспользоваться методами WMI-класса Win32_OperatingSystem.

Для начала выведем список методов класса:

Get-WmiObject Win32_OperatingSystem | Get-Member -MemberType Method

методы класса Win32_OperatingSystem

Если вам надо просто перезагрузить или выключить компьютер, то подойдут методы Reboot и Shutdown соответственно. К примеру, для перезагрузки надо выполнить такую команду:

(Get-WmiObject Win32_OperatingSystem -EnableAllPrivileges).Shutdown()

Завершение работы с помощью метода Shutdown

Обратите внимание на ключ EnableAllPrivileges. Повышение привилегий необходимо для данной операции, без него команда завершится с ошибкой.

ошибка при отсутствии привилегий

Следующий метод Win32Shutdown в качестве аргумента принимает параметр (Flags), с помощью которого можно выбрать необходимое действие. Параметр представляет из себя битовую маску и может принимать следующие значения:

Log Off (0) — выход из системы. Останавливает все процессы, связанные с контекстом безопасности текущего пользователя, завершает его сеанс  и отображает диалоговое окно входа в систему.

Forced Log Off (4) — принудительный выход из системы. Выход производится незамедлительно, не дожидаясь завершения процессов пользователя. Это может привести к некорректному завершению работы программ и потере данных.

Shutdown (1) — завершение работы. Завершает работу системы и выключает питание компьютера. При этом все запущенные процессы останавливаются, а содержимое памяти сохраняется на диск. Во время завершения работы система обращается к каждому запущенному приложению и ждет от него подтверждения того, что его можно безопасно завершить.

Forced Shutdown (5) — принудительное завершение работы. Завершает работу системы и выключает питание компьютера. При принудительном завершении работы все запущенные программы и службы, включая WMI, отключаются незамедлительно. Из-за этого может произойти потеря данных, а при запуске на удаленном компьютере вы не сможете увидеть результат выполнения команды.

Reboot (2) — перезагрузка. Завершение работы и перезагрузка компьютера.

Forced Reboot (6) — принудительная перезагрузка. При использовании метода принудительной перезагрузки все запущенные программы и службы незамедлительно завершаются, из за чего может произойти потеря данных.

Power Off (8) — выключение. Завершение работы системы и выключение питания компьютера (если это поддерживается).

Forced Power Off (12) — принудительное выключение. Завершение работы системы и выключение питания компьютера. При принудительном выключении все запущенные программы и службы незамедлительно завершаются, из за чего может произойти потеря данных.

К примеру команда для завершения сеанса пользователя (logoff) будет выглядеть так:

(Get-WmiObject Win32_OperatingSystem -EnableAllPrivileges).Win32Shutdown(0)

logoff с помощью метода Win32Shutdown

Ну и самый продвинутый метод Win32ShutdownTracker, который имеет четыре параметра — задержку (Timeout), комментарий (Comment), код причины (ReasonCode) и действие (Flags). Действия указываются аналогично предыдущему методу. Коды причины можно посмотреть здесь, хотя если особой необходимости в них нет, можно просто поставить 0. Для примера принудительно завершим работу системы, укажем таймаут 60 секунд и добавим комментарий:

(Get-WmiObject Win32_OperatingSystem -EnableAllPrivileges).Win32ShutdownTracker(60,"Force shutdown",0,5)

Завершение работы с отсрочкой и вывод комментария

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

Logon/logoff audit

In Active Directory based domain system, Logon , Logoff, Logon Failures events are controlled by the two security policy settings.1. Audit logon events. (4624,4625,4648,4634,4647,4672,4778)2. Audit account logon events. (4776,4768,4769,4770,4771,4772,4773,4774)

Вход и выход из системы (logon/logoff)

Event Id — Описание

528 или 4624 — Успешный вход в систему529 или 4625 — Отказ входа в систему – Неизвестное имя пользователя или неверный пароль 530 или 4625 Отказ входа в систему – Вход в систему не был осуществлен в течение обозначенного периода времени531 или 4625 — Отказ входа в систему – Учетная запись временно деактивирована 532 или 4625 — Отказ входа в систему – Срок использования указанной учетной записи истек533 или 4625 — Отказ входа в систему – Пользователю не разрешается осуществлять вход в систему на данном компьютере 534 или 4625 или 5461 — Отказ входа в систему – Пользователь не был разрешен запрашиваемый тип входа на данном компьютере535 или 4625 — Отказ входа в систему – Срок действия пароля указанной учетной записи истек539 или 4625 — Отказ входа в систему – Учетная запись заблокирована540 или 4624 — Успешный сетевой вход в систему (Только Windows 2000, XP, 2003)

Выход пользователя через командлет stop-terminalsession

Данный командлет устанавливается отдельно, совместно с пакетом Pscx. Первым делом посмотрим локально или удаленно идентификаторы сессии пользователя, для которого мы хотим сделать log off. Выполняем команду:

Get-TerminalSession -ComputerName имя сервера

Нужный мне ID сеанса 427. Далее воспользуемся командлетом Stop-TerminalSession, чтобы выкинуть пользователя и завершить его сессию.

Stop-TerminalSession -ComputerName имя сервера -Id 427 -Force

Как видите сессия 427 больше не существует, и у нас с помощью командлета Stop-TerminalSession получилось выкинуть пользователя из RDS сеанса. На этом у меня все. Остались вопросы, то пишите их в комментариях. С вами был Иван Семин, автор и создатель IT портала msconfig.ru.

:/>  Как очистить кэш оперативной памяти Windows 10

Выход пользователя через командлет stop-tssession

Есть такой замечательный командлет Stop-TSSession. Посмотрим на сервере ID и имя сеанса, для этого в открытой оболочке PowerShell введите:

Get-TSSession | FT

В итоге я вижу, что у пользователя barboskin.g SessionID 3. Далее пишем

Stop-TSSession 3 или принудительно Stop-TSSession 3 -Force

Использование утилиты rwinsta

Если вы попали в ситуацию, когда графические методы не позволяют вам произвести выход пользователя из системы, а это необходимо, то вам на помощь придут утилиты из командной строки. RWINSTA – это встроенная в Windows утилита, которая позволяет сбрасывать сессии, по ID и имени сеанса.

В моем примере имя сеанса rdp-tcp#172 и ее ID 515. Пишем команду:

rwinsta rdp-tcp#172 /server:localhost или rwinsta 515 /server:localhost

Как отключить пользователя через reset session

Завершить сессию пользователя можно и с помощью утилиты командной строки Reset Session. В текущем примере у моего Барбоскина Геннадия Викторовича имя сеанса rdp-tcp#16 с его ID 11. Данную утилиту можно применять как локально на самом терминальном сервере, так и на своей рабочей станции, тут так же есть ключ /server.

reset session rdp-tcp#16 или reset session 11

Как сделать logoff забывчивых пользователей с терминального сервера в нужное время?

Долго думал каким таким простым образом можно сделать массовый logoff пользователей с терминального сервера после рабочего времени, при этом некоторых пользователей (к примеру себя) с терминала не выгонять?!

Первое, что взбрело в голову, сделать групповую политику которая все за тебя сделает, покапался в настройках – такая штуковина существует, но она умеет выгонять только по таймеру, т.е. через промежуток времени (1,2 и т.д. часа), а не в указанное время.

Это не всегда подходит т.к. персонал начинает работать не всегда в одно и тоже время, да и может кто то работать больше чем 8-9 часов в день.

Долго бился с этой задачей, пока снова не спасла (всесильная) командная строка и несколько строк кода скрипта.

Коды отказов kerberos

Код ошибки — Причина

6 — Имя пользователя не существует12 — Ограничение рабочей машины; ограничение времени входа в систему18 — Учетная запись деактивирована, заблокирована или истек срок ее действия23 — Истек срок действия пароля пользователя24 — Предварительная аутентификация не удалась; обычно причиной является неверный пароль32 — Истек срок действия заявки.

Коды ошибок ntlm

Код ошибки (десятичная система) — Код ошибки (16-ричная система) — Описание

3221225572 — C0000064 — Такого имени пользователя не существует3221225578 — C000006A — Верное имя пользователя, но неверный пароль3221226036 — C0000234 — Учетная запись пользователя заблокирована3221225586 — C0000072 — Учетная запись деактивирована3221225583 — C000006F — Пользователь пытается войти в систему вне обозначенного периода времени (рабочего времени)

3221225584 — C0000070 — Ограничение рабочей станции3221225875 — C0000193 — Истек срок действия учетной записи3221225585 — C0000071 — Истек срок действия пароля3221226020 — C0000224 — Пользователь должен поменять пароль при следующем входе в систему

Контроллеры доменов

Event ID — (Категория) — Описание

1) 675 или 4771 (Аудит событий входа в систему)Событие 675/4771 на контроллере домена указывает на неудачную попытку войти через Kerberos на рабочей станции с доменной учетной записью. Обычно причиной этого является несоответствующий пароль, но код ошибки указывает, почему именно аутентификация была неудачной. Таблица кодов ошибок Kerberos приведена ниже.

2) 676, или Failed 672 или 4768(Аудит событий входа в систему) Событие 676/4768 логгируется для других типов неудачной аутентификации. Таблица кодов Kerberos приведена ниже. ВНИМАНИЕ: В Windows 2003 Server событие отказа записывается как 672 вместо 676.

3) 681 или Failed 680 или 4776(Аудит событий входа в систему) Событие 681/4776 на контроллере домена указывает на неудачную попытку входа в систему через NTLM с доменной учетной записью. Код ошибки указывает, почему именно аутентификация была неудачной.Коды ошибок NTLM приведены ниже. ВНИМАНИЕ: В Windows 2003 Server событие отказа записывается как 680 вместо 681.

4) 642 или 4738 (Аудит управления учетными записями)Событие 642/4738 указывает на изменения в указанной учетной записи, такие как сброс пароля или активация деактивированной до этого учетной записи. Описание события уточняется в соответствие с типом изменения.

5) 632 или 4728; 636 или 4732; 660 или 4756(Аудит управления учетными записями)Все три события указывают на то, что указанный пользователь был добавлен в определенную группу. Обозначены Глобальная (Global), Локальная (Local) и Общая (Universal) соответственно для каждого ID.

6) 624 или 4720 (Аудит управления учетными записями)Была создана новая учетная запись пользователя

7) 644 или 4740(Аудит управления учетными записями)Учетная запись указанного пользователя была заблокирована после нескольких попыток входа

8) 517 или 1102(Аудит системных событий)Указанный пользователь очистил журнал безопасности

Методы завершения сессии пользователя не терминале

Существует несколько методов позволяющие выкинуть пользователя с сервера.

:/>  Как перезагрузить ноутбук с помощью клавиатуры

Особенности

  • Каждый юзер способен без проблем осуществить выход из своего сеанса. Это не относится к сеансам иных пользователей. Их можно завершить только в том случае, если иметь на это соответствующие права.
  • В том случае, когда осуществляется выход из сеанса без предварительной подготовки, то имеется риск потери информации.
  • Когда юзер оканчивает сеанс, происходит завершение всего списка его процессов, а также удаление с сервера.

Пишем bat скрипт

У меня BAT файл называется install_sbis.bat.

Программа для контроля рабочего времени за компьютером. logon-logoff

Приветствую, некоторое время назад, руководство захотело программу для учета рабочего времени за компьютером. Этакий СКУД для компьютера. То есть программа должна фиксировать входы/выходы в систему, а также простой компьютера.

Поиски в интернете не дали результатов, все программы на которые удалось нактнуться во первых платные, во вторых функционал у них гораздо больше нацелен на шпионаж (взять тот же Стахановец – зло вселенского масштаба =) ).

В общем и целом, т.к. я решил поучиться программировать, было решено попробовать самому написать подобную программку и вот что из этого вышло.

История изменений:

<![CDATA[]]>0.2.0.2<![CDATA[]]>
– Исправлена ошибка – превышен максимальный размер вложенности хранимой процедуры.
– Добавлена возможность задания времени работы по умолчанию.
– Мелкие испрвления и доработки

Системные требования и описание:

Открыл исходный код программы, на github находится <![CDATA[]]>тут<![CDATA[]]>.

Скачать программу можно <![CDATA[]]>здесь<![CDATA[]]>.

Для работы программы необходим установленный .net framework 4, версия ОС должна быть Windows 7 или выше, компьютер должен быть в домене. Уровень леса должен быть не ниже 2008. Так же должен быть установлен mssql сервер не ниже 2008, можно Express, на нем должна быть возможность авторизации средствами SQL сервера.

Программа состоит из нескольких частей:

– Так называемый бэкэнд, он же агент – работает на каждом компьютере, отправляет информацию на сервер баз данных, следит за простоем компьютера.

– База данных – тут думаю все понятно, хранит в себе информацию о логонах/логоффах.

– Агент сервера – сервис который периодически проверяет компьютер на доступность в сети (пингует компьютеры), если компьютер не доступен, то записывает выход пользователя с этого компьютера, если в фаерволле компьютеров стоит запрет на ICMP, то эту службу нужно выключить (служба называется logon_server_service).

– Так называемый фронтенд – клиентское приложение которое собирает информацию с базы данных и выводит ее в читаемом виде.

Установка:

Запускаем установщик (logon-logoff install.msi) устанавливаем программу.

10 критически важных event ID для мониторинга / Блог компании Netwrix / Хабр

Переходим в папку с установленной программой (по умолчанию C:Program Files (x86)logon-logoff), переходим в папку sql, копируем из этой папки скрипт logon-logoff.sql на sql сервер.

Запускаем SQL Server Management Studio и открываем скопированный скрипт, выполняем его. Будет создана база данных logon-logoff.

10 критически важных event ID для мониторинга / Блог компании Netwrix / Хабр

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

10 критически важных event ID для мониторинга / Блог компании Netwrix / Хабр

Запускаем оснастку службы (services.msc), находим службу logon_server_service и запускаем ее.

Запускаем powershell от имени администратора и переходим в папку GPO в папке с установленной программой, выполняем скрипт gpo-install.ps1. На контроллер домена будут скопированы файлы агента и добавлена групповая политика, которая будет распространять агента и запускать его. Если у вас сеть без домена, то запускать этот скрипт не нужно. Если вы ставите программу не на серверную ОС, чего я делать не рекомендую, тогда нужно перед запуском скрипта поставить RSAT.

10 критически важных event ID для мониторинга / Блог компании Netwrix / Хабр

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

Установка завершена.

Использование.

Если вы хотите запускать клиентскую часть программы на другом компьютере, то можно воспользоваться установщиком client_app_installer.msi. После установки для настройки параметров нужно запустить программу logon-logoff.exe от имени администратора. Внимание! Не устанавливайте на одном компьютере серверную и клиентские части!

Запускаем программу. В этом окне будет отображаться общая информация по всем пользователям. Зеленым подсвечены те, кто не опоздал и не ушел раньше, желтым – те, кто опоздал или раньше ушел, но пробыл на работе положенные 9 часов. RDP сессии не учитываются, что бы они учитывались нужно поставить галочку учитывать RDP сессии. Диапазон дат по умолчанию устанавливается таким, который указан в настройках, можно указать, что бы при запуске программы открывались данные за день, неделю или месяц.

10 критически важных event ID для мониторинга / Блог компании Netwrix / Хабр

Если поставить галочку показывать подробности, то по пользователям будет более подробная информация, будет показано время на работе и время за компьютером по каждому дню.

10 критически важных event ID для мониторинга / Блог компании Netwrix / Хабр

В выпадающем списке можно выбрать пользователя, будет отображаться информация по пользователю – сколько раз опоздал, сколько раз недоработал, сколько времени провел на работе и сколько времени провел за компьютером.

:/>  Как проверить оперативную память на ошибки на компьютере с Windows 10

10 критически важных event ID для мониторинга / Блог компании Netwrix / Хабр

Если поставить галку показывать все события, тогда будет графическое отображение о том, когда пользователь находился за компьютером, соответственно зеленым выделяется если пользователь находился за компьютером, красным если отсутствовал. Можно изменять масштаб кнопками и – или используя комбинацию CTRL колесо прокрутки.

10 критически важных event ID для мониторинга / Блог компании Netwrix / Хабр

Можно нажать кнопку «Показать в виде данных», тогда вместо графического отображения будет отображение в виде данных.

10 критически важных event ID для мониторинга / Блог компании Netwrix / Хабр

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

10 критически важных event ID для мониторинга / Блог компании Netwrix / Хабр

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

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

10 критически важных event ID для мониторинга / Блог компании Netwrix / Хабр

В случае если вы захотите изменить параметры подключения к базе данных агентов, то вам нужно будет изменить эти параметры в настройках клиентского приложение, и после этого из папки из PowerShell и выполнить скрипт gpo-install.ps1из папки с программой.

Удаление программы.

Перед тем как удалять программу из панели управления нужно запустить скрипт gpo-delete.ps1 из PowerShell запущенный с правами администратора, лежащий в папке gpo, в папке куда была установлена программа. Этот скрипт удалит файлы с контроллера домена, и создаст групповую политику, которая удалит папки, файлы и задание планировщика заданий с компьютеров

В программе возможны баги, просьба строго не судить, это первая программа, написанная мной (не считая программок которые писались во время учебы в университете).

Видео по теме:

Протоколирование входа/выхода в систему в active directory

На каждом контроллере домена — свой лог, поэтому проще и правильнее всего

написать PowerShell скрипт который будет писать в один общий лог файл где-то на сетевой шаре от системы события кто где вошел в консоли в сеть и кто где и когда дал команду выхода/перезагрузки/выключения.

Вторым скрипом написать простенький парсер с подсчётом разницы по времени.

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

А заодно єто не отменяет того, что например, на моей прошлой работе несмотря на все запреты половина машин в домене в главном офисе включалась в понедельник утром и выключалась(ли?) в пятницу вечером, а рабочие станции половины сотрудников ИТ департамента перезагружались только при применении очередных обновлений на сервере WSUS.

Выше уже сказали, что это не отменяет того, что толку от того, включил пользователь свой пк в 8-59 и выключил в 18-01 он не будет заниматься всякой фигней на любимом сайте/пасьянсе и прочее.

А системы учёта рабочего времени логичнее делать на проходной,

Расшифровка значений

код_сеанса


Позволяет получить значение кода сеанса, представленное в числовой форме.

название_сеанса

Выдает название конкретного сеанса.

/server:название_сервера


Задает сервер терминалов, включающий оканчиваемый сеанс пользователя. Можно ничего не прописывать, но тогда произойдет завершение сеанса действующего пользователя.

Будут выдаваться сведения о реализуемых мероприятиях.

Получается справочная информация.

Синтаксис

logoff [{код_сеанса|название_сеанса}] [/server:название_сервера] [/v]

Типы входов в систему (logon types)

Тип входа в систему — Описание

2 — Интерактивный (вход с клавиатуры или экрана системы)3 — Сетевой (например, подключение к общей папке на этом компьютере из любого места в сети или IIS вход — Никогда не заходил 528 на Windows Server 2000 и выше. См. событие 540)

4 — Пакет (batch) (например, запланированная задача)5 — Служба (Запуск службы)7 — Разблокировка (например, необслуживаемая рабочая станция с защищенным паролем скринсейвером) 8 — NetworkCleartext (Вход с полномочиями (credentials), отправленными в виде простого текст.

Часто обозначает вход в IIS с “базовой аутентификацией”) 9 — NewCredentials10 — RemoteInteractive (Терминальные службы, Удаленный рабочий стол или удаленный помощник) 11 — CachedInteractive (вход с кешированными доменными полномочиями, например, вход на рабочую станцию, которая находится не в сети)

Оставьте комментарий