Монитор внешнего входа и выхода пользователей Windows

Вход Выход пользователей из системы Windows Linux
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Монитор внешнего входа и выхода пользователей Windows

Сообщение Артём Мамзиков »

Мониторинг внешнего входа и выхода пользователей Windows



Данные будем брать из Журнал событий (англ. Event Log)
Панель управления\Все элементы панели управления\Администрирование\Просмотр событий
или (Win+R) команду eventvwr.msc
eventlog-Microsoft-Windows-TerminalServices-LocalSessionManager-Operational
LSM - Local Session Manager
RCM - Remote Connection Manager
Запрос для Ключа eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25)$,,skip]
eventlog-Microsoft-Windows-TerminalServices-LocalSessionManager-Operational
eventlog-Microsoft-Windows-TerminalServices-LocalSessionManager-Operational
Пример Просмотр и анализ логов RDP подключений в Windows

Ключ в zabbix будет использоваться eventlog

eventlog[имя,<регулярное выражение>,<важность>,<источник>,<eventid>,<макс. кол-во строк>,<режим>]
eventlog[имя"Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",<регулярное выражение>пропускаем пусто,<важность>пропускаем пусто,<источник>пропускаем пусто,<eventid>^(21|23|24|25)$,<макс. кол-во строк>пропускаем пусто,<режим>skip]
skip - пропустить обработку старых данных
eventlog zabbix
Показать
eventlog[имя,<регулярное выражение>,<важность>,<источник>,<eventid>,<макс. кол-во строк>,<режим>]

Мониторинг журналов событий.
Журнал (лог)

имя - имя журнала событий
регулярное выражение - регулярное выражение описывающее требуемый шаблон содержимого
важность - регулярное выражение описывающее важность
Параметр может принимать следующие значения:
“Information”, “Warning”, “Error”, “Critical”, “Verbose” (начиная с Zabbix 2.2, работающих на Windows Vista или на более новых версиях)
источник - регулярное выражение, описывающее идентификатор источника (регулярное выражение поддерживается начиная с версии Zabbix 2.2.0)
eventid - регулярное выражение описывающее идентификатор(ы) событий
макс. кол-во строк - максимальное количество новых строк в секунду, которое агент будет отправлять Zabbix серверу или прокси. Этот параметр заменяет значение 'MaxLinesPerSecond' в zabbix_agentd.win.conf
режим - возможные значения:
all (по умолчанию), skip - пропустить обработку старых данных (влияет только на недавно созданные элементы данных).

Элемент данных должен быть настроен активной проверкой.

Примеры:
⇒ eventlog[Application]
⇒ eventlog[Security,,"Failure Audit",,529|680]
⇒ eventlog[System,,"Warning|Error"]
⇒ eventlog[System,,,,^1$]
⇒ eventlog[System,,,,@TWOSHORT] - здесь используется ссылка на пользовательское регулярное выражение с именем TWOSHORT (заданное с типом Результат ИСТИНА, само выражение равно ^1$|^70$).

Обратите внимание, агент не может отправлять события из "Пересланные события" журнала.

Параметр режим поддерживается начиная с версии 2.0.0.
“Windows Eventing 6.0” поддерживается начиная с Zabbix 2.2.0.

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

Смотрите дополнительную информацию о мониторинге файлов журналов.
СПЕЦИФИЧНЫЕ КЛЮЧИ ЭЛЕМЕНТОВ ДАННЫХ

Триггер
logeventid
Проверка, совпадает ли ID события последней записи из журнала указанному регулярному выражению.
шаблон - регулярное выражение описывающее требуемый шаблон, в формате расширенных регулярных выражений POSIX.
Поддерживаемые типы значений: log
Возвращает:
0 - не совпадает
1 - совпадает

Изначально шаблон был взят с Windows Server Login monitor далее путь на гитхаб Server-Login-monitor-Zabbix

Для начала оригинальный шаблон автора который был скачен с гитхаба
Server Login-original.xml
Показать
# Server-Login-monitor-Zabbix
uses Microsoft-Windows-TerminalServices-LocalSessionManager windows log to find logins and logouts to server.
and fires alarm when a user logs in to a server
Simply import to zabbix and add the template to desired hosts.

#Сервер-Логин-монитор-Zabbix
использует журнал Windows Microsoft-Windows-TerminalServices-LocalSessionManager для поиска логинов и выходов на сервер.
и подает сигнал тревоги, когда пользователь входит на сервер
Просто импортируйте в zabbix и добавьте шаблон на желаемые хосты.

Имя шаблона Windows external login monitor
Группы Windows
Описание Monitor non administrator logins on server

Макросы
{$HIDELOGINS} => Administrator
(не проверять, не выводить триггер когда заходит пользователь Administrator)
Windows external login monitor
Windows external login monitor
Группы элементов данных
Log
RDP

Элементы данных
Имя Login to Remote desktop
Тип Zabbix агент (активный)
Ключ eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23)$,,skip]
Тип информации Журнал (Лог)
Интервал обновления 15s
Период хранения истории 90d
Формат времени в журнале (логе) ddMMyyyy:hhmmss
Группы элементов данных
Log
RDP
Описание Monitor RDP login and logout
Активировано V

Предобработка
Шаги предобработки Имя Регулярное выражение Параметры User: (.*)\n Вывод \1
Для Русскоязычных систем Windows в Логе вместо User по Русскому пишется Пользователь получаем
Шаги предобработки Имя Регулярное выражение Параметры Пользователь: (.*)\n Вывод \1
Элемент данных Windows external login monitor
Элемент данных Windows external login monitor
Триггер
Имя {ITEM.LASTVALUE1} RDP login
Важность Высокая
Выражение проблемы
{Windows external login monitor:eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23)$,,skip].logeventid(21)}=1
Генерация ОК событий Выражение восстановления
{Windows external login monitor:eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23)$,,skip].logeventid(21)}=0
Режим генерации событий ПРОБЛЕМА Множественный
ОК событие закрывает Все проблемы
Разрешить закрывать вручную V
Описание Fires alarm unless RDP login is administrator
Активировано V
Триггер Windows external login monitor.jpg
Триггер Windows external login monitor.jpg
Скачать шаблон
Server-Login-original.zip
Server-Login-original.zip
(1.64 КБ) 78 скачиваний
Далее первые изменения в шаблоне
Переведён полностью на Русский язык
Добавлены описания
Добавлен триггер на повторный вход 25
Монитор внешнего входа Windows первый вариант
Показать

Имя шаблона Windows external login monitor
Видимое имя Монитор внешнего входа Windows
Описание Monitor non administrator logins on server
Мониторинг Логинов без прав администратора на сервере


Макросы
{$HIDELOGINS} => No я решил показывать все входы, не скрывая
Windows external login monitor rus.jpg
Windows external login monitor rus.jpg
Группы элементов данных
LOG-RDP&Local

Элементы данных
Имя Вход на удаленный рабочий стол
Тип Zabbix агент (активный)
Ключ eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25)$,,skip]
Тип информации Журнал (Лог)
Интервал обновления 15s
Период хранения истории 90d
Формат времени в журнале (логе) ddMMyyyy:hhmmss
Группы элементов данных
LOG-RDP&Local
Описание
Login to Remote desktop
Monitor RDP login and logout

Вход на удаленный рабочий стол
Монитор РДП вход и выход

17 - ошибка Не удалось запустить службу удаленного рабочего стола
21 - успешный Вход
22 - получено уведомление о запуске оболочки
23 - выход из сеанса
24 - отключен
25 - успешное пере подключение

Скрыть вход добавить макрос {$HIDELOGINS} Administrator

Активировано V

Предобработка
Для Русскоязычных систем Windows в Логе вместо User по Русскому пишется Пользователь получаем
Шаги предобработки Имя Регулярное выражение Параметры Пользователь: (.*)\n Вывод \1
Элемент данных Windows external login monitor rus.jpg
Элемент данных Windows external login monitor rus.jpg

Триггеры 2
Имя {ITEM.LASTVALUE1} RDP login
Важность Информация
Выражение проблемы {Windows external login monitor:eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25)$,,skip].logeventid(21)}=1
Генерация ОК событий Выражение восстановления
Выражение восстановления {Windows external login monitor:eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25)$,,skip].logeventid(21)}=0

Режим генерации событий ПРОБЛЕМА Множественный
ОК событие закрывает Все проблемы
Разрешить закрывать вручную V
Описание
Fires alarm unless RDP login is administrator
21 - успешный Вход
Пожары сигнализации, если RDP логин администратора


Активировано V
Триггер Windows external login monitor rus.jpg
Триггер Windows external login monitor rus.jpg
Имя {ITEM.LASTVALUE1} RDP login povtor
Важность Информация
Выражение проблемы {Windows external login monitor:eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25)$,,skip].logeventid(25)}=1
Генерация ОК событий Выражение восстановления
Выражение восстановления {Windows external login monitor:eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25)$,,skip].logeventid(25)}=0
Режим генерации событий ПРОБЛЕМА Множественный
ОК событие закрывает Все проблемы
Разрешить закрывать вручную V
Описание
Fires alarm unless RDP login is administrator
25 - успешное переподключение
Пожары сигнализации, если RDP логин администратора

Активировано V
Триггер 2 Windows external login monitor rus.jpg
Триггер 2 Windows external login monitor rus.jpg
Скачать Шаблон
Server Login-русский-дополен.zip
Server Login-русский-дополен.zip
(1.67 КБ) 71 скачивание
Дальнейшие доработки
Мало инфы в триггере 1.Пользователь который подключился 2.IP-адресс откуда подключился 3.Код Сеанса 4.Имя ПК с которого выполнено подключение
Отключенные пользователи которые не завершили сеанс, а просто его закрыли! Корректно нужно завершать сеанс, так же нужно проверять.


Сперва текущий актуальный шаблон на 12.01.2021, ниже как это делалось какие проблемы возникали и тд.

Скачать
Монитор внешнего входа Windows.zip
Монитор внешнего входа Windows.zip
(3.78 КБ) 251 скачивание
Скачать
19.08.2022-Монитор внешнего входа Windows.zip
19.08.2022-Монитор внешнего входа Windows.zip
(3.83 КБ) 198 скачиваний
Изменения
Показать
19.08.2022
Для элемента данных "Получаем предыдущее значение для Windows LSM"
если Windows включен но никто не заходил данные пустые строки нет и элемент уходит в ошибку что тип не числовой, в предобработке при пустом значении делаем 0.
Если пустое значение а тип числовой делаем 0
Если пустое значение а тип числовой делаем 0
Монитор внешнего входа Windows
Показать
Имя шаблона Windows external login monitor
Видимое имя Монитор внешнего входа Windows
Группы Windows и Windows Server
Описание
Monitor non administrator logins on server
Мониторинг Логинов без прав администратора на сервере


Макрос
{$HIDELOGINS} => No
Шаблон Монитор внешнего входа Windows.jpg
Шаблон Монитор внешнего входа Windows.jpg
Группы элементов данных LOG-RDP&Local

Элементы данных 5
Элементы данных Монитор внешнего входа Windows
Элементы данных Монитор внешнего входа Windows
Элемент данных
Имя Вход в Windows LSM
Тип Zabbix агент (активный)
Ключ eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25|39|40)$,,skip]
Тип информации Журнал (лог)
Интервал обновления 15s
Период хранения истории Storage period 31d
Формат времени в журнале (логе) ddMMyyyy:hhmmss
Группы элементов данных LOG-RDP&Local
Описание
Login to Remote desktop
Monitor RDP login and logout

Вход на удаленный рабочий стол
Монитор РДП вход и выход

17 - ошибка Не удалось запустить службу удаленного рабочего стола
21 - успешный Вход
22 - получено уведомление о запуске оболочки
23 - выход из сеанса
24 - отключен
25 - успешное переподключение
39 - (Session <A> has been disconnected by session <B>) – пользователь сам отключился от своей RDP сессии, выбрав соответствующий пункт меню (а не просто закрыл окно RDP клиента).
Если идентификаторы сессий разные, значит пользователя отключил другой пользователь (или администратор).
40 - Здесь нужно смотреть на код причины отключения в событии. Например:
Описание: «Сеанс <X> был отключен, код причины <Z>»
Сенас * был отключен, код причины 0
reason code 0 (No additional information is available)– обычно говорит о том, что пользователь просто закрыл окно RDP клиента, обычно в паре с идентификатором события 24
reason code 1 Отключение было инициировано административным инструментом на сервере в другом сеансе.
reason code 2 Отключение произошло из-за принудительного выхода из системы, инициированного административным инструментом на сервере в другом сеансе.
reason code 3 Таймер ограничения сеанса простоя на сервере истек.
reason code 4 Таймер ограничения активных сеансов на сервере истек.
reason code 5 (The client’s connection was replaced by another connection) – пользователь переподключился к своей старой сессии.
Сенас * был отключен, код причины 5 - Другой пользователь подключился к серверу, принудительно отключив текущее соединение. «Соединение клиента было заменено другим соединением». (Происходит, когда пользователь повторно подключается к сеансу RDP, обычно в паре с идентификатором события 25)
reason code 6 На сервере закончились доступные ресурсы памяти.
reason code 7 Сервер отказал в соединении.
reason code 8 Сервер отказал в соединении из соображений безопасности.
reason code 9 Пользователь не может подключиться к серверу из-за недостаточных прав доступа.
reason code 10 Сервер не принимает сохраненные учетные данные пользователя и требует, чтобы пользователь вводил свои учетные данные для каждого подключения.
reason code 11 (User activity has initiated the disconnect) – пользователь сам нажал на кнопку Disconnect в меню (Пуск отключение).
Отключение было инициировано пользователем, отключившим свой сеанс на сервере, или инструментом администрирования на сервере.
reason code 12 Отключение было инициировано пользователем, завершившим сеанс на сервере.
Сенас * был отключен, код причины 12 - Отключение было инициировано пользователем, завершившим сеанс на сервере
Еще о 40
Показать
Определяет расширенную информацию о причине отключения элемента управления
Windows Vista - Server 2008 билиотека MsTscAx.dll
typedef enum _ExtendedDisconnectReasonCode {
exDiscReasonNoInfo = 0, Никакой дополнительной информации нет.
exDiscReasonAPIInitiatedDisconnect = 1, Приложение инициировало отключение.
exDiscReasonAPIInitiatedLogoff = 2, Приложение вышло из системы клиента.
exDiscReasonServerIdleTimeout = 3, Сервер отключил клиента, потому что клиент бездействовал в течение периода времени, превышающего назначенный период ожидания.
exDiscReasonServerLogonTimeout = 4, Сервер отключил клиента, поскольку клиент превысил период, отведенный для подключения.
exDiscReasonReplacedByOtherConnection = 5, Подключение клиента было заменено другим подключением.
exDiscReasonOutOfMemory = 6, Нет свободной памяти.
exDiscReasonServerDeniedConnection = 7, Сервер отказал в соединении.
exDiscReasonServerDeniedConnectionFips = 8, Сервер отказал в соединении из соображений безопасности.
exDiscReasonServerInsufficientPrivileges = 9, Сервер отказал в соединении из соображений безопасности.
exDiscReasonServerFreshCredsRequired = 10, Требуются новые учетные данные.
exDiscReasonRpcInitiatedDisconnectByUser = 11, Действия пользователя привели к отключению
exDiscReasonLogoffByUser = 2, Пользователь вышел из системы, отключив сеанс.
exDiscReasonLicenseInternal = 256, Ошибка внутреннего лицензирования.
exDiscReasonLicenseNoLicenseServer = 257, Сервер лицензий недоступен.
exDiscReasonLicenseNoLicense = 258, Действующей лицензии на программное обеспечение не было.
exDiscReasonLicenseErrClientMsg = 259, Удаленный компьютер получил недействительное лицензионное сообщение.
exDiscReasonLicenseHwidDoesntMatchLicense = 260, Идентификатор оборудования не соответствует идентификатору, указанному в лицензии на программное обеспечение.
exDiscReasonLicenseErrClientLicense = 261, Ошибка клиентской лицензии.
exDiscReasonLicenseCantFinishProtocol = 262, Проблемы с сетью возникли во время протокола лицензирования.
exDiscReasonLicenseClientEndedProtocol = 263, Клиент преждевременно прервал лицензионный протокол.
exDiscReasonLicenseErrClientEncryption = 264, Сообщение о лицензировании было зашифровано неправильно.
exDiscReasonLicenseCantUpgradeLicense = 265, Не удалось обновить или продлить лицензию на клиентский доступ локального компьютера.
exDiscReasonLicenseNoRemoteConnections = 266, Удаленный компьютер не имеет лицензии на прием удаленных подключений.
exDiscReasonLicenseCreatingLicStoreAccDenied = 267, При создании раздела реестра для хранилища лицензий была получена ошибка отказа в доступе.
exDiscReasonRdpEncInvalidCredentials = 768, Обнаружены неверные учетные данные.
exDiscReasonProtocolRangeStart = 4096, Начало диапазона внутренних ошибок протокола. Дополнительные сведения см. В журнале событий сервера.
exDiscReasonProtocolRangeEnd = 32767 Конец диапазона внутренних ошибок протокола.
} ExtendedDisconnectReasonCode;


Скрыть вход добавить макрос {$HIDELOGINS} Administrator
(Win+R) команду eventvwr.msc

Элемент данных Вход в Windows LSM
Элемент данных Вход в Windows LSM

Элемент данных
Имя Получаем предыдущее значение для Windows LSM
Тип Zabbix агент
Ключ system.run["wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text|FIND /I \"Event ID\"|find /n \"2\"|find /v \"1\""]
Тип информации Числовой (целое положительное)
Интервал обновления 1m
Пользовательские интервалы Переменный
Период хранения истории Storage period 31d
Период хранения динамики изменений Storage period 31d
Отображение значения Как есть
Группы элементов данных LOG-RDP&Local
Описание
Получаем значение, для закрытия триггера на пользователь отключен

Если RDP закрыт, а не завершен то в журнале
24 - отключен
после триггер действие завершение и
23 - выход из сеанса (закрывает триггер)

А если завершен, в логе
23-выход из сеанса
24 - отключен
И по этому триггер на отключение не закрывается

Поэтому смотрим предпоследнюю запись если она 23 триггер не срабатывает.


Активировано V

Предобработка
Шаги предобработки
1 Имя Обрезать Параметры [2] Event ID
2 Имя Обрезать Параметры :
Вход в Windows RCM
Вход в Windows RCM
Элемент данных
Имя Вход в Windows Security
Тип Zabbix агент (активный)
Ключ eventlog["Security",,,,^(1100|1102|4624|4634|4647)$,,skip]
Тип информации Журнал (лог)
Интервал обновления 15s
Период хранения истории Storage period 31d
Формат времени в журнале (логе) ddMMyyyy:hhmmss
Группы элементов данных LOG-RDP&Local
Описание
1100 - Завершение работы
1102 - Очистка журнала
4624 - Вход в систему для обычной windows Новый вход: - Имя учетной записи: Сведения о сети: - Имя рабочей станции
Тип входа" указан тип выполненного входа. Самыми распространенными являются типы 2 (интерактивный) и 3 (сетевой).
4648 - Вход Windows (серверов) Были использованы учетные данные следующей учетной записи: Имя учетной записи: Целевой сервер: - Имя целевого сервера: (Попытка входа)
(Имя целевого сервера: FS Имя учетной записи: User) Были использованы учетные данные следующей учетной записи:
Имя учетной записи:Admin
4634 - выход (23 в 2 журнале)
4647 - выход
4778 - Пользователь переподключился к RDP сессии (пользователю выдается новый LogonID)
4799 - Отключение от RDP сеанса
9009 - Пользователь инициировал завершение RDP сессии, и окно и графический shell пользователя был завершен

(Win+R) команду eventvwr.msc


Активировано
Элемент данных Вход в Windows Security
Элемент данных Вход в Windows Security
Элемент данных
Имя Вход в Windows RCM
Тип Zabbix агент (активный)
Ключ eventlog["Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational",,,,^(1149|4624|4625)$,,skip]
Тип информации Журнал (лог)
Интервал обновления 15s
Период хранения истории Storage period 31d
Формат времени в журнале (логе) ddMMyyyy:hhmmss
Группы элементов данных LOG-RDP&Local
Описание
1149 - установление сетевого подключение к серверу от RDP клиента пользователя (не аунтификация)
4624 - успешная аутентификация
4625 - ошибка аутентификации
При входе через терминальную службу RDP — LogonType = 10 или 3.
Если LogonType = 7, значит выполнено переподключение к уже имеющейся RDP сессии.
Account Name - имя пользователя
Workstation Name - имя компьютера
Source Network Address - имя пользователя
TargetLogonID – уникальный идентификатор сессии пользователя

(Win+R) команду eventvwr.msc


Активировано
Элемент данных Вход в Windows RCM
Элемент данных Вход в Windows RCM
Элемент данных
Имя ClientName
Тип Zabbix агент (активный)
Ключ 1
Тип информации Текст
Интервал обновления 60s
Период хранения истории Storage period 90d
Группы элементов данных LOG-RDP&Local
Описание
через power shell запрашиваем Get-TSSession -State Active | Format-List ClientName

Активировано
Элемент данных ClientName
Элемент данных ClientName
Проверка со стороны сервера
zabbix_get -s 192.168.ххх.ххх -k 1

На стороне заббикс агента в конфигурации прописываем следующее
Конфигурация агента ссылается на скрипт повершела
UserParameter=1, powershell C:\zabbix\Scripts\1.ps1

Содержание скрипта 1.ps1
Get-TSSession -ComputerName Program
или
Get-TSSession
или
Get-TSSession | Format-List ClientName
или
Get-TSSession -State Active | Format-List ClientName

Триггеры 4
Триггеры Монитор внешнего входа Windows
Триггеры Монитор внешнего входа Windows
Триггер
Имя RDP auth {{ITEM.VALUE}.iregsub("(Пользователь: .*)", "\1")} {{ITEM.VALUE}.iregsub("(источника: .*)", "\1")} {{ITEM.VALUE}.iregsub("(Код сеанса: .*)", "\1")}
Важность Информация
Выражение проблемы {Windows external login monitor:eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25|39|40)$,,skip].logeventid(21)}=1
Генерация ОК событий Выражение восстановления
Выражение восстановления {Windows external login monitor:eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25|39|40)$,,skip].logeventid(21)}=0
Режим генерации событий ПРОБЛЕМА Множественный
ОК событие закрывает Все проблемы
Разрешить закрывать вручную V
Описание
Fires alarm unless RDP login is administrator
21 - успешный Вход
Пожары сигнализации, если RDP логин администратора

Активировано V

Теги
Trigger tags
Имя {{ITEM.VALUE}.iregsub("Код сеанса: (.*)", "\1")} Значение
Триггер Входа Аунтификации Монитор внешнего входа Windows
Триггер Входа Аунтификации Монитор внешнего входа Windows

Триггер
Имя RDP auth povtor {{ITEM.VALUE}.iregsub("(Пользователь: .*)", "\1")} {{ITEM.VALUE}.iregsub("(источника: .*)", "\1")} {{ITEM.VALUE}.iregsub("(Код сеанса: .*)", "\1")}
Важность Информация
Выражение проблемы {Windows external login monitor:eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25|39|40)$,,skip].logeventid(25)}=1
Генерация ОК событий Выражение восстановления
Выражение восстановления {Windows external login monitor:eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25|39|40)$,,skip].logeventid(25)}=0
Режим генерации событий ПРОБЛЕМА Множественный
ОК событие закрывает Все проблемы
Разрешить закрывать вручную V
Описание
Fires alarm unless RDP login is administrator
25 - успешное переподключение
Пожары сигнализации, если RDP логин администратора
Активировано V

Теги
Trigger tags
Имя {{ITEM.VALUE}.iregsub("Код сеанса: (.*)", "\1")}
Триггер Повтора Входа Аунтификации Монитор внешнего входа Windows
Триггер Повтора Входа Аунтификации Монитор внешнего входа Windows

Триггер
Имя RDP auth otkl {{ITEM.VALUE}.iregsub("(Пользователь: .*)", "\1")} {{ITEM.VALUE}.iregsub("(источника: .*)", "\1")} {{ITEM.VALUE}.iregsub("(Код сеанса: .*)", "\1")}
Важность Информация
Выражение проблемы
{Windows external login monitor:eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25|39|40)$,,skip].logeventid(24)}=1 and
{Windows external login monitor:system.run["wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text|FIND /I \"Event ID\"|find /n \"2\"|find /v \"1\""].last()}<>23 and
{Windows external login monitor:system.run["wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text|FIND /I \"Event ID\"|find /n \"2\"|find /v \"1\""].diff(0)}=1

Генерация ОК событий Выражение восстановления
Выражение восстановления {Windows external login monitor:eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25|39|40)$,,skip].logeventid(24)}=0 or
{Windows external login monitor:eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25|39|40)$,,skip].logeventid(24)}=1 and
{Windows external login monitor:system.run["wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text|FIND /I \"Event ID\"|find /n \"2\"|find /v \"1\""].last()}=23

Режим генерации событий ПРОБЛЕМА Множественный
ОК событие закрывает Все проблемы
Разрешить закрывать вручную V
Описание
23 - выход из сеанса (закрывает триггер)
24 - отключен

Срабатывает если последняя запись 24 и предпоследняя не равна 23
не создавалось множество указано diff


Активировано V

Теги
Trigger tags
Имя {{ITEM.VALUE}.iregsub("Код сеанса: (.*)", "\1")} Значение
Триггер Отключен Входа Аунтификации Монитор внешнего входа Windows
Триггер Отключен Входа Аунтификации Монитор внешнего входа Windows
Триггер
Имя RDP auth {{ITEM.VALUE}.iregsub("(Тип входа: .*)", "\1")} {{ITEM.VALUE}.iregsub("(Имя рабочей станции: .*)", "\1")}
Важность Информация
Выражение проблемы {Windows external login monitor:eventlog["Security",,,,^(1100|1102|4624|4634|4647)$,,skip].logeventid(4624)}=1
Генерация ОК событий Выражение восстановления
Выражение восстановления {Windows external login monitor:eventlog["Security",,,,^(1100|1102|4624|4634|4647)$,,skip].logeventid(4624)}=0
Режим генерации событий ПРОБЛЕМА Множественный
ОК событие закрывает Все проблемы
Разрешить закрывать вручную V
Описание
Вход с Имя компьютера подключенного по RDP Лог 4624
Активировано
Триггер Входа Имя ПК Аунтификации Монитор внешнего входа Windows
Триггер Входа Имя ПК Аунтификации Монитор внешнего входа Windows

Про Инфу в триггер 1.Пользователь который подключился 2.Код Сеанса 3.IP-адресс откуда подключился или локальный вход 4.Имя ПК с которого выполнено подключение
На примере диспетчера задач вкладка пользователи
Windows 10
RDP-подключение.jpg
RDP-подключение.jpg
Windows 7
Имя клиента.jpg
Имя клиента.jpg
Из журнала Microsoft-Windows-TerminalServices-LocalSessionManager/Operational можем получить
Пользователь: источника: Код сеанса:
Пример Лога
Показать
Локально: 21
Службы удаленных рабочих столов: Успешный вход в систему:

/Пользователь: COMPTV\Медиа
Код сеанса: 1
Адрес сети источника: ЛОКАЛЬНЫЕ

Посети: 21
Службы удаленных рабочих столов: Успешный вход в систему:

/Пользователь: COMPTV\Медиа
Код сеанса: 2
Адрес сети источника: 192.168.175.8

Посети: 25
Службы удаленных рабочих столов: Успешное переподключение сеанса:

Пользователь: COMPTV\Медиа
Код сеанса: 1
Адрес сети источника: 192.168.175.8

По сети: 24
Службы удаленных рабочих столов: Сеанс был отключен:

Пользователь: COMPTV\Медиа
Код сеанса: 1
Адрес сети источника: 192.168.175.8

Локально 23
Службы удаленных рабочих столов: Успешный выход из сеанса:

Пользователь: COMPTV\Медиа
Код сеанса: 1


Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25)

Триггер RDP auth Пользователь: Домен\MamzikovAA источника: 192.168.175.8 Код сеанса: 4

21
Службы удаленных рабочих столов: Успешный вход в систему:
/Пользователь: Домен\MamzikovAA
Код сеанса: 4
Адрес сети источника: 192.168.175.8

23
Службы удаленных рабочих столов: Успешный выход из сеанса:
Пользователь: Домен\MamzikovAA
Код сеанса: 4

24
Службы удаленных рабочих столов: Сеанс был отключен:
Пользователь: Домен\MamzikovAA
Код сеанса: 4
Адрес сети источника: 192.168.175.8

25
Службы удаленных рабочих столов: Успешное переподключение сеанса:
Пользователь: Домен\Администратор
Код сеанса: 1
Адрес сети источника: 192.168.175.10
Но Имя ПК с которого выполнено подключение в данном логе нет
оно есть в eventlog["Security",,,,^(1100|1102|4624|4634|4647)$,,skip]
Журналы Windows - Безопасность
Вход с Имя компьютера подключенного по RDP Лог 4624
Тип входа: Имя рабочей станции:
Описание Кодов:
1100 - Завершение работы
1102 - Очистка журнала
4624 - Вход в систему для обычной windows Новый вход: - Имя учетной записи: Сведения о сети: - Имя рабочей станции
4648 - Вход Windows (серверов) Были использованы учетные данные следующей учетной записи: Имя учетной записи: Целевой сервер: - Имя целевого сервера: (Попытка входа)
4634 - выход (23 в 2 журнале)
4647 - выход
4778 - Пользователь переподключился к RDP сессии (пользователю выдается новый LogonID)
4799 - Отключение от RDP сеанса
9009 - Пользователь инициировал завершение RDP сессии, и окно и графический shell пользователя был завершен

(Win+R) команду eventvwr.msc
Пример Лога Безопасность
Показать
4624 - Вход в систему для обычной windows Новый вход: - Имя учетной записи: Сведения о сети: - Имя рабочей станции
Вход с учетной записью выполнен успешно.
Субъект:
ИД безопасности: S-1-5-18
Имя учетной записи: FSServer$
Домен учетной записи: WORKGROUP
Код входа: 0x3e7
Тип входа: 10 не совпадает с кодом сеанса
Новый вход:
ИД безопасности: S-1-5-21-52705171-3967056117-1643963046-500
Имя учетной записи: Администратор
Домен учетной записи: FSServer
Код входа: 0x163d7532
GUID входа: {00000000-0000-0000-0000-000000000000}
Сведения о процессе:
Идентификатор процесса: 0xdf0
Имя процесса: C:\Windows\System32\winlogon.exe
Сведения о сети:
Имя рабочей станции: FSServer
Сетевой адрес источника: 192.168.175.8
Порт источника: 41509
Сведения о проверке подлинности:
Процесс входа: User32
Пакет проверки подлинности: Negotiate
Промежуточные службы: -
Имя пакета (только NTLM): -
Длина ключа: 0
Данное событие возникает при создании сеанса входа. Оно создается в системе, вход в которую выполнен.
Поля "Субъект" указывают на учетную запись локальной системы, запросившую вход. Обычно это служба, например, служба "Сервер", или локальный процесс, такой как Winlogon.exe или Services.exe.
В поле "Тип входа" указан тип выполненного входа. Самыми распространенными являются типы 2 (интерактивный) и 3 (сетевой).
Поля "Новый вход" указывают на учетную запись, для которой создан новый сеанс входа, то есть на учетную запись, с которой выполнен вход.
В полях, которые относятся к сети, указан источник запроса на удаленный вход. Имя рабочей станции доступно не всегда, и в некоторых случаях это поле может оставаться незаполненным.
Поля сведений о проверке подлинности содержат подробные данные о конкретном запросе на вход.
- GUID входа - это уникальный идентификатор, который позволяет сопоставить данное событие с событием KDC.
- В поле "Промежуточные службы" указано, какие промежуточные службы участвовали в данном запросе на вход.
- Поле "Имя пакета" указывает на подпротокол, использованный с протоколами NTLM.
- Поле "Длина ключа" содержит длину созданного ключа сеанса. Это поле может иметь значение "0", если ключ сеанса не запрашивался.


4648 - Вход Windows (серверов) Были использованы учетные данные следующей учетной записи: Имя учетной записи: Целевой сервер: - Имя целевого сервера:
Выполнена попытка входа в систему с явным указанием учетных данных.
Субъект:
ИД безопасности: Домен\Администратор
Имя учетной записи: Администратор
Домен учетной записи: Домен
Код входа: 0x27854ae
GUID входа: {a5064763-d331-b7a3-1f58-df1c9bbdb9e9}
Были использованы учетные данные следующей учетной записи:
Имя учетной записи: back
Домен учетной записи: Домен
GUID входа: {00000000-0000-0000-0000-000000000000}
Целевой сервер:
Имя целевого сервера: nas2
Дополнительные сведения: nas2
Сведения о процессе:
Идентификатор процесса: 0x4
Имя процесса:
Сведения о сети:
Сетевой адрес: -
Порт: -
Данное событие возникает, когда процесс пытается выполнить вход с учетной записью, явно указав ее учетные данные. Это обычно происходит при использовании конфигураций пакетного типа, например, назначенных задач, или выполнении команды RUNAS


4647 - выход
Выход, запрошенный пользователем:
Субъект:
ИД безопасности: S-1-5-21-59707171-3867655147-1643063056-500
Имя учетной записи: Администратор
Домен учетной записи: FSServer
Код входа: 0x163d7532
Данное событие возникает, когда выход начат. Дальнейшие действия, запрошенные пользователем, не выполняются. Данное событие можно рассматривать как событие выхода.


4634 - выход (23 в 2 журнале)
Выполнен выход учетной записи из системы.
Субъект:
ИД безопасности: Домен\MamzikovAA
Имя учетной записи: MamzikovAA
Домен учетной записи: Домен
Код входа: 0x28a9692
Тип входа: 3
Данное событие возникает при уничтожении сеанса входа. Его можно однозначно связать с событием входа с помощью значения "Код входа". Коды входа остаются уникальными после перезагрузки, но они уникальны только на одном компьютере.
Пример eventlog Security 4624.jpg
Пример eventlog Security 4624.jpg
Сделать 2 элемента в 1 триггер {ITEM.VALUE} получаем только значение с одного элемента которое первее отработает, второй элемент уже не попадает вариант отпадает. Сделать 2 триггера для того чтобы видеть имя подключившегося ПК как то не целесообразно.
В общем Элемент Вход в Windows Security - Отключен и Триггер так же отключен RDP auth {{ITEM.VALUE}.iregsub("(Тип входа: .*)", "\1")} {{ITEM.VALUE}.iregsub("(Имя рабочей станции: .*)", "\1")}


Вход в Windows RCM-Remote Connection Manager
Windows RCM-Remote Connection Manager
Windows RCM-Remote Connection Manager
1149 - установление сетевого подключение к серверу от RDP клиента пользователя (не аунтификация)
4624 - успешная аутентификация
4625 - ошибка аутентификации
При входе через терминальную службу RDP — LogonType = 10 или 3.
Если LogonType = 7, значит выполнено переподключение к уже имеющейся RDP сессии.
Account Name - имя пользователя
Workstation Name - имя компьютера
Source Network Address - имя пользователя
TargetLogonID – уникальный идентификатор сессии пользователя

(Win+R) команду eventvwr.msc
Пример лога 1149
Показать
Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operationa

1149 - установление сетевого подключение к серверу от RDP клиента пользователя (не аунтификация)

Службы удаленных рабочих столов: Успешная проверка подлинности пользователя:
Пользователь: Администратор
Домен: FSServer
Адрес источника сети: 192.168.175.8
Следующая проблемка
Отключенные пользователи которые не завершили сеанс, а просто его закрыли! Корректно нужно завершать сеанс, так же нужно проверять.
Копятся не закрываются триггеры
Откл копятся.jpg
Откл копятся.jpg
Разница Завершения Сеанса пользователя и отключения
Вход и Завершение сеанса RDP.jpg
Вход и Завершение сеанса RDP.jpg
Вход и Закрытие RDP на крестик.jpg
Вход и Закрытие RDP на крестик.jpg
Так как
По завершению и закрытию сеанса RDP
По завершению и закрытию сеанса RDP
Завершение сеанса
23 - выход из сеанса (закрываем триггер все хорошо или не даем триггеру открыться)
24 - отключен


При закрытии сессии RDP на крестик
24 - отключен сработал триггер (выполним действие на завершение пользователя) и дальше его ничто уже не закроет так как 23 уже было в логе
23 - выход из сеанса, сработало действие на завершение сеанса пользователя по триггеру отключен

Открытие Срабатывание триггера отключённых пользователей происходить по 24 значению лога
а закрытие триггера по 23 значению лога

23 - выход из сеанса (закрывает триггер)
24 - отключен
Срабатывает если последняя запись 24 и предпоследняя не равна 23
не создавалось множество указано diff

По этому пришлось сделать еще один элемент который берет предыдущее значение из лога , уже не раз 15 секунд, а раз в 1 минуту.
Хотелось бы получать все с одного элемента но что делать.
system.run["wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text|FIND /I \"Event ID\"|find /n \"2\"|find /v \"1\""]

По отключенным триггер срабатывает если 24 и предыдущая строка не 23

Триггер на отключение срабатывает
С журнала последний код 24 - отключен .logeventid(24)}=1
И
Предыдущее значение не равно 23 выход из сеанса .last()}<>23
И
не создавалось множество указано .diff(0)}=1
Закрытие триггера на отключение
С журнала последнее значение не 24 - отключен .logeventid(24)}=0
Или
С журнала последний код 24 - отключен .logeventid(24)}=1
И
Предпоследнее значение 23 - выход из сеанса .last()}=23

Так же была попытка сделать через теги , корреляцию.
Вопрос был такой на форуме по тегам
Показать
Идея была в чем до функции diff создавалось множество триггеров на отключение с обычного элемента, их надо было закрывать старые или не открывать новые , чтоб они не дублировались. у нас есть значение тега код сеанса например 2 зная имя триггера и код сеанса даем параметр не открывать больше 1 если уже открыт, но тег 2 как только триггер сработал он у нас есть в значении переменной {EVENT.TAGS} но спустя 15 секунд повторного запроса элемента или раз в 1 минуту предыдущего значения элемента , переменная тега {EVENT.TAGS} обнуляется пустая и корреляция не работает, хотя тег сбоку триггера при открытии запоминается и держится пока триггер не закроется.

Теги и регулярное выражение {{ITEM.VALUE}.iregsub(".......)", "\1")}

Добрый день! Поясните правильно ли я понимаю работу тегов или нет.

Есть элемент данных для мониторинга пользователей windows на основе лога
eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25)$,,skip]

Запрашиваю каждую 1 минуту

Описание
17 - ошибка Не удалось запустить службу удаленного рабочего стола
21 - успешный Вход
22 - получено уведомление о запуске оболочки
23 - выход из сеанса
24 - отключен
25 - успешное переподключение

Триггер на отключившихся пользователей которые просто закрыли на крестик сессию RDP , а не завершили сеанс.
Проблема
{Windows external login monitor:eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25)$,,skip].logeventid(24)}=1
Восстановление
{Windows external login monitor:eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25)$,,skip].logeventid(24)}=0


В имени тега есть регулярка которая показывает код сеанса данного пользователя {{ITEM.VALUE}.iregsub("Код сеанса: (.*)", "\1")}

Суть вопроса в чем
Кто то отключился Сработал триггер, регулярка отработала присвоила триггеру тег например 2

Дальше у меня действие спустя 5 минут завершить сессию данного пользователя (мало ли просто обрыв инет пропал даю 5 минут ожидания)
Элемент за это время у нас еще отпроситься 4 раза, естественно там регулярки не будет, так как изменений в логе нет по этой сессии

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

И когда срабатывает действие выполнить команду logoff "{EVENT.TAGS}" /server:{HOST.CONN}
то макрос {EVENT.TAGS} выходит пустой

Сам отвечу не будет пустым, выше ответ почему.

но сбоку сработавшего триггера значение тега есть никуда не пропало выходит что он это значение никак не берет? и его никак не взять?
Т.е. действие нужно выполнять сразу пока элемент повторно не получил пустое значение ?
tags-vopros0
tags-vopros0
tags-vopros1
tags-vopros1
В некоторых попытках в триггер можно получить предыдущее значение журнала (лога) но уже нельзя сравнить id
Инфа по созданию
Показать
Открываем Журнал событий Run (Win+R) команду eventvwr.msc

Откуда можем взять данные:
1. Журналы Windows - Безопасность eventlog["Security",,,,^(1100|1102|4624|4648|4634|4647)$,,skip]

1100 - Завершение работы
1102 - Очистка журнала
4624 - Вход в систему для обычной windows Новый вход: - Имя учетной записи: Сведения о сети: - Имя рабочей станции
4648 - Вход Windows (серверов) Были использованы учетные данные следующей учетной записи: Имя учетной записи:
Целевой сервер: - Имя целевого сервера:
4634 - выход (23 в 2 журнале)
4647 - выход
4778 - Пользователь переподключился к RDP сессии (пользователю выдается новый LogonID)
4799 - Отключение от RDP сеанса
9009 - Пользователь инициировал завершение RDP сессии, и окно и графический shell пользователя был завершен

2. Microsoft-Windows-TerminalServices-LocalSessionManager/Operational eventlog["Microsoft-Windows-TerminalServices-LocalSessionManager/Operational",,,,^(21|23|24|25)$,,skip]

17 - ошибка Не удалось запустить службу удаленного рабочего стола
21 - успешный Вход
22 - полученно уведомление о запуске оболочки
23 - выход из сеанса (закрывает триггер) (4634 в 1 журнале)
24 - отключен
25 - успешное переподключение
39 - (Session <A> has been disconnected by session <B>) – пользователь сам отключился от своей RDP сессии, выбрав соответствующий пункт меню (а не просто закрыл окно RDP клиента).
Если идентификаторы сессий разные, значит пользователя отключил другой пользователь (или администратор).
40 - Здесь нужно смотреть на код причины отключения в событии. Например:
reason code 0 (No additional information is available)– обычно говорит о том, что пользователь просто закрыл окно RDP клиента.
reason code 5 (The client’s connection was replaced by another connection) – пользователь переподключился к своей старой сессии.
reason code 11 (User activity has initiated the disconnect) – пользователь сам нажал на кнопку Disconnect в меню.


3. Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operationa eventlog["Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational",,,,^(1149|4624|4625)$,,skip]

1149 - установление сетевого подключение к серверу от RDP клиента пользователя (не аунтификация)
4624 - успешная аутентификация
4625 - ошибка аутентификации
При входе через терминальную службу RDP — LogonType = 10 или 3.
Если LogonType = 7, значит выполнено переподключение к уже имеющейся RDP сессии.
Account Name - имя пользователя
Workstation Name - имя компьютера
Source Network Address - имя пользователя
TargetLogonID – уникальный идентификатор сессии пользователя


Об значениях в триггерах как формируются
Регулярное выражение Совпадение значения с регулярным выражением <шаблона> и замена значения в соответствии с <выводом>.
Регулярное выражение поддерживает извлечение до 10 захваченных групп в \N последовательности.
Элемент данных станет неподдерживаемым в случае ошибки при поиске соответствия во входящем значении.
Параметры:
шаблон - регулярное выражение
вывод - шаблон форматирования вывода. \N (где N=1..9) - управляющая последовательность заменяется N-нной совпадающей группой.
Управляющая последовательность \0 заменяется совпадающим текстом
Поддерживается начиная с 3.4.0.
Пожалуйста, обратитесь в разделу регулярных выражений для ознакомления с некоторыми существующими примерами.

{ITEM.LASTVALUE<1-9>}
Последнее значение элемента данных N-го элемента данных в выражении триггера вызвавшего это оповещение.
Поддерживается начиная с 1.4.3. Это алиас для {{HOSTNAME}:{TRIGGER.KEY}.last(0)}
> Оповещения, основанные на триггерах
> Имена триггеров и описания Последнее значение N-го элемента данных из выражения триггера, который вызвал оповещение.
В веб-интерфейсе раскрывается в *НЕИЗВЕСТНО*, если последнее значение истории собрано более чем ZBX_HISTORY_PERIOD секунд назад (задается в defines.inc.php).
Поддерживается начиная с 1.4.3. Является алиасом к {{HOST.HOST}:{ITEM.KEY}.last()}

{ITEM.VALUE<1-9>}
Последнее значение N-го элемента данных в выражении триггера, если используется для отображения триггеров.
Историческое значение (точно когда произошло событие) N-го элемента данных из выражения триггера, если используется для отображения событий и оповещений.
Поддерживается начиная с Zabbix 1.4.3.

{HOSTNAME<1-9>}
Имя узла сети N-го элемента данных из триггера вызвавшего это оповещение.
Поддерживается в оповещениях авторегистрации начиная с версии 1.8.4.

{$MACRO}
Пользовательские макросы. Поддерживается в именах триггеров и в описаниях элементов данных начиная с версии 1.8.4.


Имя клиента из реестра
Есть query session, query user, quser /server 192.168.128.50, query user /server 192.168.128.50, query session /server 192.168.128.50,
query session /server 192.168.128.50 /counter, Qwinsta, tasklist , но они показывают только имя пользователя.
переменная %CLIENTNAME%
echo %CLIENTNAME%
echo %SESSIONNAME%

HKCU\Environment\Clientname
HKEY_CURRENT_USER\Volatile Environment\1 - CLIENTNAME (SESSIONNAME)
HKEY_USERS\S-1-5-21-3002483080-1650114603-3144430796-1000\Volatile Environment\1 - CLIENTNAME
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer, параметр "LOGON USER NAME"

Поставьте, PSTerminalServices (http://psterminalservices.codeplex.com/ ... view/65937) и с помощью
Имена пользователей я вырезал. Модуль можно ставить на любой машине с powershell
PS C:\Windows\system32> Get-TSSession -ComputerName TSFarm501


WshShell = Новый COMОбъект("WScript.Shell");
WshSysEnv = WshShell.Environment("Process");
Сообщить("Имя компьютера "+WshSysEnv.Item("CLIENTNAME"));
Работает только в терминальной сессии

%USERPROFILE%\AppData\Local\Temp
%USERPROFILE%\AppData\Local\Temp

для команды для текущего пользователя
reg query "HKCU\Volatile Environment"
Для конкретного пользователя
HKEY_USERS\S-1-5-21-3002483080-1650114603-3144430796-1000\Volatile Environment

реестр всех пользователей
C:\mkdir c:\Temp
Regedit.exe /e c:\temp\yourname.reg


Вычисляемый элемент
last("eventlog[\"Microsoft-Windows-TerminalServices-LocalSessionManager/Operational\",,,,^(21|23|24|25|39|40)$,,skip]") не катит поле не числовое
logeventid("eventlog[\"Microsoft-Windows-TerminalServices-LocalSessionManager/Operational\",,,,^(21|23|24|25|39|40)$,,skip]",23) получаем 0 или 1

date
Текущая дата в формате ГГГГММДД. Поддерживаемые типы значений: любые Пример результата: 20150731

time
Текущее время в формате ЧЧММСС. Поддерживаемые типы значений: любые Пример возвращаемого значения: 123055

fuzzytime (сек)
Проверка, на сколько отличается значение элемента данных (как штамп времени) от времени Zabbix сервера. сек - секунды Поддерживаемые типы значений: float, int
Возвращает:
1 - если разница между штампом времени значения элемента данных и штампом времени Zabbix сервера меньше или равна сек секунд
0 - в противном случае.
Обычно используется с system.localtime для проверки, что локальное время синхронизировано с локальным временем Zabbix сервера. Обратите внимание, что элемент данных 'system.localtime' должен быть настроен пассивной проверкой.
Также можно использовать с ключом vfs.file.time[/путь/к/файлу,modify] для проверки, что файл не обновлялся длительное время.
Пример: fuzzytime(60)=0 > обнаружение проблемы, если разница во времени больше 60 секунд

Имя Time diff
Тип Вычисляемое
Ключ system.localtime.fuzzytime
Формула fuzzytime(system.localtime,60)
Тип инфы Числовой (целое положительное)
Интервал 1m

Если 3 последних 0 т.е. 0+0+0 = 0 значит триггер срабатывает у нас есть расхождение более чем на 1 минуту
Триггер
system.localtime.fuzzytime.sum(#3)}=0


system.localtime -формат ДД.ММ.ГГГГ ЧЧ:ММ:СС


wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /f:text|FIND /I "Event ID" - от самых старых к новым 2строки
wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text|FIND /I "Event ID" - от новых к старым строкам пример 2строки
wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text|FIND /I "Event ID"|find /n "2"|find /v "1"


/c:<Count> Задает максимальное число событий для чтения.
/rd:<Direction> Указывает направление чтения событий. <Direction>может иметь значение true или false. Если значение равно true, то первыми возвращаются самые последние события.
/f:<Format> Указывает, что выходные данные должны быть в формате XML или текстовый формат. Если <Format> параметр имеет значение XML, выходные данные отображаются в формате XML. Если <Format> является текстом, выходные данные отображаются без XML-тегов. Значение по умолчанию - Text.

FIND /I - Поиск без учета регистра символов "строка" - Искомая строка
FIND /N - Вывод номеров отображаемых строк.
FIND /V - Вывод всех строк, НЕ содержащих заданную строку.

Проверка через заббикс
zabbix_get -s 192.168.ХХХ.ХХХ -p 10050 -k system.run["wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text|FIND /I \"Event ID\"|find /n \"2\"|find /v \"1\""]
Кото для теста хочет подключатся к учетной записи по RDP без пароля не обходимо выполнить следующее
RDP без пароля
Показать
При попытке подключиться к компьютеру под управлением Windows с помощью средства дистанционного управления рабочим столом появляется следующее сообщение об ошибке: Вход в систему невозможен из-за ограничений для учетной записи.
Подобное поведение наблюдается, если используемая для подключения учетная запись имеет пустой пароль. Невозможно установить подключение к удаленному рабочему столу, используя учетную запись с пустым паролем.
Чтобы устранить эту проблему и подключиться к удаленному рабочему столу, войдите в систему с консоли компьютера и установите пароль для используемой учетной записи.
Такое поведение является особенностью данного продукта
Ограничения, накладываемые пустым паролем, можно отключить, используя политику. Найдите и измените соответствующую политику, выполнив следующие действия:
Нажмите кнопку Пуск, выберите пункт Выполнить (win + R), введите команду gpedit.msc и нажмите кнопку OK, чтобы запустить редактор объектов групповой политики.
Откройте раздел Конфигурация компьютера\Конфигурация Windows\Параметры безопасности\Локальные политики\Параметры безопасности\Учетные записи: Limit local account use of blank passwords to console logon only.
Дважды щелкните элемент Limit local account use of blank passwords to consol logon only.(:ограничить использования пустых паролей только для консолей входа)
Выберите отключен и нажмите кнопку OK.
Закройте редактор групповой политики.
Примечание. По умолчанию данная политика включена.
количество слов: 2359
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Монитор внешнего входа и выхода пользователей Windows

Сообщение Артём Мамзиков »

Действия Zabbix Действие на завершение сеансов пользователей более 8 часов и на завершение отключённых пользователей.
Смотри тут в 3 сообщении
количество слов: 3
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Монитор внешнего входа и выхода пользователей Windows

Сообщение Артём Мамзиков »

PSTerminalServices - Модуль PowerShell служб терминалов Модуль
Качаем «модуль» PSTerminalServices или
PSTerminalServices

В двух словах о модуле:
Основан он на «open source» проекте под названием Кассия (версия 2.0.0.60), библиотека .NET для доступа к «нативной» службе терминалов Windows API.


Поддерживаемые платформы
-------------------
Кассия была протестирована на Windows Server 2008 R2 беты, Windows Server 2008, Windows Server 2003,
Windows XP и Windows Server 2000. Он должен работать на Windows Vista , а также

Модуль PSTerminalServices содержит функции для управления службами терминалов ( в том числе RemoteDesktop) сессий и процессов.
Является ли это на основе исходного открытого проекта под названием Кассия (версия 2.0.0.60), библиотека .NET для доступа к родной служб терминалов Windows API.

Следующие операции поддерживаются на локальном и удаленном сервере терминала:
1. Перечислив терминальные сессии и представления информации сеанса , включая состояние соединения, имя пользователя, имя клиента, детали дисплея клиента, клиент сообщил IP - адрес и номер клиента сборки.
2. Выход из сеанса.
3. Отключение сеанса.
3. Отображение окна сообщения в сеансе.
4. Перечисляя все процессы или процессы для указанной сессии.
5. Уничтожение процесса.

И так установка простая несколько кликов «Далее» и модуль установлен
Установка с сайта PSTerminalServices.msi
или
Cassia - Исходные файлы (сжатый файл) из архива. установлен вручную, загрузив ZIP-файл.
Файл ZIP содержит модуль только файлы, и вы должны извлечь его содержимое в одном из двух мест:
Будет работать только для конкретного пользователя!
%USERPROFILE%\Documents\WindowsPowerShell\Modules (RemoteRegistry)
d:\Документы\Documents\WindowsPowerShell\modules\
или
При работе через Zabbix агент лучше модуля поставить в данную директорию для всех пользователей
%WINDIR%\System32\WindowsPowerShell\v1.0\Modules (необходимы права администратора)
C:\Windows\System32\WindowsPowerShell\v1.0\Modules копируем сюда папку PSTerminalServices
*Если каталогов не существует, то вы должны создать вручную.

разрешим выполнение скриптов запускаем PowerShell
И выполним несколько команд, чтоб у нас все работало:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Далее следует проверить установлен ли новый «командлет»
Get-Module -Name PSTerminalServices -ListAvailable

Следующие функции добавляются к текущей сессии, при импорте модуля:
Разъедините-TSSession - разъединение любой прикрепленную пользователя из сеанса.
Get-TSCurrentSession - Предоставляет информацию о сессии, в которой текущий процесс выполняется.
Get-TSServers - Перечисляет все терминальные сервера в данном домене.
Get-TSProcess - Получает список процессов, запущенных в конкретной сессии или во всех сеансах.
Get-TSSession - список сессий на данном сервере терминалов.
Отправить-TSMessage - Отображает окно сообщения в указанном идентификатором сеанса.
Стоп-TSProcess - Завершает процесс запущенный в конкретной сессии или во всех сеансах.
Стоп-TSSession - Журналы сеанса выключен, отсоединение любого пользователя, который может быть подключен.
выполним команду импорта
Import-Module PSTerminalServices

Как использовать модуль
Проверьте, если модуль установлен правильно, с вашей PowerShell типа сеанса:
PS > Get-Module -Name PSTerminalServices -ListAvailable

ModuleType Имя ExportedCommands
---------- ---- ----------------
Manifest PSTerminalServices {}

Если вы не видите выше результата , то модуль не был установлен правильно.
Если вы решили загрузить и установить модуль вручную (почтовый файл), убедитесь , что каталог модулей существует в «% USERPROFILE% \ Documents \ WindowsPowerShell \ Modules»

функции которые нам доступны
Get-Command -Module PSTerminalServices
CommandType Имя Определение
----------- ---- ----------
Функция Disconnect-TSSession ...
Функция Get-TSCurrentSession ...
Функция Get-TSProcess ...
Функция Get-TSServers ...
Функция Get-TSSession ...
Функция Send-TSMessage ...
Функция Stop-TSProcess ...
Функция Stop-TSSession ...

Существует также файл about_PSTerminalServices_Module помощь (в папке en_US), чтобы просмотреть его:
PS > Get-Help about_PSTerminalServices_Module

Так мы будем точно знать, что все прошло успешно и «командлет»
Get-TSSession у нас работает.
И так теперь чтоб посмотреть, кто у нас работает на сервере терминалов, достаточно запустить PowerShell и выполнить:
Get-TSSession
Удаленно
Get-TSSession -ComputerName 192.168.128.51

Get-TSSession | Format-List ClientName

Обратите внимание, что Get-TSSession использует псевдонимы свойств для отображения выходных данных на консоли (IPAddress и State), эти атрибуты
не совпадают с исходными атрибутами (ClientIPAddress и ConnectionState).
Это важно, если вы хотите использовать параметр-Filter, который требует последнего.
Чтобы увидеть все aliassed свойства и соответствующие им свойства (определение столбца), в результате получить:
Get-TSSession | Get-Member -MemberType AliasProperty

По умолчанию используется локальный компьютер. Значение по умолчанию-локальный компьютер (localhost).


Некоторые примеры кода

Дополнительные примеры кода используйте Get-Help <cmdletName> -examples.

# Записывает от всех активных сессий с удаленного компьютера «comp1», никаких подтверждений
PS > Get-TSSession -ComputerName comp1 -State Active | Stop-TSSession –Force

# Возвращает все активные сессии с удаленного компьютера «comp1», сделанный из IP-адресов, которые начинаются с «10».
PS > Get-TSSession -ComputerName comp1 -Filter {$_.ClientIPAddress -like '10*' -AND $_.ConnectionState -eq 'Active'}

# Отображает окно сообщения внутри всех активных сессий имя компьютера «COMP1». "}
PS > $Message = "Importnat`n, the server is going down for maintenance in 10 minutes. Please save your work and logoff."
PS > Get-TSSession -State Active -ComputerName comp1 | Send-TSMessage -Message $Message

# Возвращает все процессы, связанные с идентификатором сессии 0 с удаленного компьютера 'COMP1.
PS>Get-TSSession -ID 0 -ComputerName comp1 | Get-TSProcess

Источник https://archive.codeplex.com/?p=psterminalservices

Активные сессии
Get-TSSession -ComputerName Program -State Active
Get-TSSession
Get-TSSession -ComputerName Program Имя компа

7. Get-TSSession
Еще один просто отличный «командлет» который позволяет смотреть пользователей, что работают на сервере терминалов, причем вы сможете не только смотреть, но и отправлять им уведомления, завершать сессии и процессы пользователей ставить различные фильтры, делать выборки и многое другое.
Отличная вещь для тех, кто администрирует сервер терминалов при помощи PowerShell.

Еще пример команд
1. # Завершает все активные сеансы с удаленного компьютера 'comp1', никаких подтверждений
Get-TSSession -ComputerName comp1 -State Active | Stop-TSSession –Force

2. # Получает все активные сеансы с удаленного компьютера "comp1", сделанные с IP-адресов, начинающихся с "10".
Get-TSSession -ComputerName comp1 -Filter {$_.ClientIPAddress -like '10*' -AND $_.ConnectionState -eq 'Active'}

3. # Отображает окно сообщения во всех активных сеансах компьютера с именем 'comp1'. "}
$ Message = "Неважно, сервер будет отключен на обслуживание через 10 минут. Сохраните свою работу и выйдите из системы."
Get-TSSession -State Active -ComputerName comp1 | Send-TSMessage -Message $Message

4. # Получает все процессы, подключенные к сеансу с идентификатором 0 с удаленного компьютера 'comp1'.
Get-TSSession -ID 0 -ComputerName comp1 | Get-TSProcess

Если какие-то команды или «командлеты» у Вас не работают, возможно удаленно, тогда следует добавить права пользователю, от имени которого Вы запускаете PowerShell или CMD. (Должны быть права «Администратора домена»), также смотрите, возможно, брандмауэр блокирует подключение, или служба RPC не стартовала.


Обновление можно скачать PowerShell
Get-TerminalSession - Модуль качаем и устанавливаем
Этот метод работает только через PowerShell и требует установки небольшого «Пака».
Скачать его можно бесплатно вот здесь: Pscx
или
PowerShell Community Extensions Pscx
Минимальная версия PowerShell 3.0 и 5.0 в зависимости от версии
В некоторых случаях PowerShell может сам установить модуль например Install-Module -Name Pscx -RequiredVersion 3.2.1.0
Или загружаем вручную выбрав пункт Ручная загрузка
Загрузится pscx.3.2.1.nupkg это архив извлекаем его

Извлекаем из архива и копируем по 1 из пути
Будет работать только от конкретного пользователя!
%USERPROFILE%\Documents\WindowsPowerShell\Modules
Будет работать от имени всех пользователей
%WINDIR%\System32\WindowsPowerShell\v1.0\Modules (Нужны права администратора)

Заходим в
PowerShell

Установка
Import-Module Pscx - Импорт модуля

После чего мы сможем использовать «командлет» Get-TerminalSession и получить в удобной таблице всех пользователей, что работают у нас на сервере терминалов
Get-TerminalSession - Команда проверки работы

Также можно смотреть пользователей и с удаленного «ПК» или сервера.
Пример: Get-TerminalSession -ComputerName 192.168.128.51


Если Вы планируете удаленно выполнять этот «командлет» на Windows 7, 8 или 10.
Тогда сперва следует внести правку в политику безопасности:
Запускаем PowerShell
Напишем следующее: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
После чего Get-TerminalSession заработает у вас и с удаленной машины.

Так же есть еще команды для cmd
quser
quser Имя-пользователя
quser Имя-пользователя /server localhost
quser | findstr Имя-пользователя

qwinsta
qwinsta Имя-пользователя
qwinsta " findstr Имя-пользователя
qwinsta Имя-пользователя /server localhost

QUERY SESSION
Вводите в командной строке query session, вывод утилиты копия qwinsta. Вы так же будите видеть номер сеанса, логин учетной записи, ID, статус подключения.
количество слов: 421
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Монитор внешнего входа и выхода пользователей Windows

Сообщение Артём Мамзиков »

GeorgeJed, Добрый! Это что то с правами пользователей и группами , нужно смотреть настройки политики безопасности или кому какие права назначены.
количество слов: 1
dulunbaev_d
Гость
Сообщения: 1
Стаж: 2 года 11 месяцев

Монитор внешнего входа и выхода пользователей Windows

Сообщение dulunbaev_d »

wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text|FIND /I "Event ID"|find /n "2"|find /v "1" запрос не верный для Win10 , 2016 и тд ,есть ли альтернативный способ получать предыдущие значение event id?
количество слов: 27
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Монитор внешнего входа и выхода пользователей Windows

Сообщение Артём Мамзиков »

dulunbaev_d, Если запросить команду на Win 10 в cmd
wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text
получаем 2 ответа текущий и предыдущий

Получаем чисто ID
wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /f:text|FIND /I "Event ID" - от самых старых к новым 2строки
wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text|FIND /I "Event ID" - от новых к старым строкам пример 2строки
wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text|FIND /I "Event ID"|find /n "2"|find /v "1"
Не отрабатывает на Win10 ответ нумерации строк летит в скобках [ ]
[1] Event ID: 22
[2] Event ID: 21
Делаем так и все ок
wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text|FIND /I "Event ID"|find /n "2"|find /v "[1]"
или
wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text|FIND /I "Event ID"|find /n "2"|find /v "[1"

/c:<Count> Задает максимальное число событий для чтения.
/rd:<Direction> Указывает направление чтения событий. <Direction>может иметь значение true или false. Если значение равно true, то первыми возвращаются самые последние события.
/f:<Format> Указывает, что выходные данные должны быть в формате XML или текстовый формат. Если <Format> параметр имеет значение XML, выходные данные отображаются в формате XML. Если <Format> является текстом, выходные данные отображаются без XML-тегов. Значение по умолчанию - Text.

FIND /I - Поиск без учета регистра символов "строка" - Искомая строка
FIND /N - Вывод номеров отображаемых строк.
FIND /V - Вывод всех строк, НЕ содержащих заданную строку.

Проверка через заббикс
zabbix_get -s 192.168.ХХХ.ХХХ -p 10050 -k system.run["wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text|FIND /I \"Event ID\"|find /n \"2\"|find /v \"1\""]
или
zabbix_get -s 192.168.ХХХ.ХХХ -p 10050 -k system.run["wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:2 /rd:true /f:text|FIND /I \"Event ID\"|find /n \"2\"|find /v \"[1\""]
количество слов: 221
Аватара пользователя
Тимофей Ермолаев
Гость
Сообщения: 1
Стаж: 2 года 4 месяца

Монитор внешнего входа и выхода пользователей Windows

Сообщение Тимофей Ермолаев »

Добрый день, подскажи пожалуйста/
Импортировал шаблон, все работает кроме отображения имени пользователя и IP в названии триггера.
Отображается только: RDP auth
количество слов: 3
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Монитор внешнего входа и выхода пользователей Windows

Сообщение Артём Мамзиков »

Тимофей Ермолаев, привет, версия заббикс новая ?
Мне писали что изменился формат запроса для лога windows.
“От: rlz
Получатель: Артём Мамзиков

Разобрался.
Действительно, в 5.4 поменяли синтаксис. Теперь в триггере нужно писать что-то вроде того:
find(/srv/log[элемент данных],,"like","строка")=1
вместо .str(строка)”

Речь немного была про другие данные , но посмотри какой синтаксис для новой версии.
количество слов: 10
basej
Гость
Сообщения: 1
Стаж: 10 месяцев

Монитор внешнего входа и выхода пользователей Windows

Сообщение basej »

Подскажите как можно мониторить неудачные попытки входа на RDP? с уведомлениями ?
количество слов: 1
Ответить Вложения 35 Пред. темаСлед. тема

Вернуться в «Мониторинг Сессий Пользователей в OS»