Describe optional Security 4624/4625 suppression, UTF-8, and that deploy does not ship ignore.lst.
RDP Login Monitor
PowerShell-набор для мониторинга входов в Windows с отправкой уведомлений в Telegram.
Актуальная схема (рекомендуется)
- Базовый путь установки:
C:\ProgramData\RDP-login-monitor\. - Основной скрипт:
Login_Monitor.ps1— журнал Security4624/4625(логика зависит от типа ОС: рабочая станция или сервер/КД), при наличии журнала — Remote Connection Manager1149(часто актуально для РС с RDP), при роли RD Gateway —302/303, ежедневный отчёт в Telegram (активные сессии черезquser), heartbeat, ротация логов, уведомления в Telegram. - Установка задач: запуск
Login_Monitor.ps1 -InstallTasksсоздаёт:RDP-Login-Monitor(основной монитор),RDP-Login-Monitor-Watchdog(контроль процесса каждые 5 минут).
- Доменная доставка и обновления:
Deploy-LoginMonitor.ps1+version.txtс шарыNETLOGON. После успешного деплоя в приветственном сообщении Telegram может появиться отметка об обновлении (файлdeploy_last_update.txtрядом с логами). - Для полной инструкции по деплою/GPO используйте DEPLOY.md.
Encrypt-DpapiForRdpMonitor.ps1— опционально для подготовки DPAPI-строк токена/chat id.
Что изменилось (важное)
- Кодировка
.ps1: в репозитории добавлены.editorconfigи.gitattributes, чтобы*.ps1по умолчанию сохранялись как UTF-8 with BOM и с CRLF (это сильно снижает “кракозябры” и ошибки парсинга PowerShell). - Кодировка логов:
login_monitor.log/watchdog.logпишутся как UTF-8 с BOM (и при необходимости BOM добавляется к уже существующему файлу), чтобы в FAR/старых просмотрщиках не было ситуации “в консоли нормально, а в файле РЈРІРµ…” из‑за неверной авто-кодировки. auditpolна русской Windows: настройка/проверка аудита опирается на категориюВход/выходи подкатегорииВход в систему/Выход из системы(ожидается строкаУспех и сбой). Это устраняет ошибки вида0x00000057из‑за несуществующего на RU ОС имениLogon.- Стабильность:
auditpolзапускается черезcmd.exeс перехватомstdout+stderr, чтобы не ломать выполнение при$ErrorActionPreference = "Stop".
1) Подготовка
- Подготовьте папку установки:
C:\ProgramData\RDP-login-monitor\
- Скопируйте в неё как минимум:
Login_Monitor.ps1- (для доменного развёртывания отдельно на шаре)
Deploy-LoginMonitor.ps1иversion.txt.
- Откройте
Login_Monitor.ps1и задайте токен/чат:$TelegramBotTokenили...ProtectedB64$TelegramChatIDили...ProtectedB64
- Запускайте с правами администратора (чтение
Securityжурнала и регистрация задач). - Логи и служебные файлы будут в:
C:\ProgramData\RDP-login-monitor\Logs\
- (Опционально) Подавление части алертов по списку — см. раздел «7) ignore.lst» ниже.
2) Ручной запуск
Используйте этот вариант для быстрой проверки старта/логики без установки задач планировщика.
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\ProgramData\RDP-login-monitor\Login_Monitor.ps1"
Примечание: при ручном запуске монитор работает в текущей сессии до остановки (например, Ctrl+C).
3) Запуск через Планировщик заданий (Task Scheduler)
Текущая схема: вручную задачи в GUI создавать не нужно.
Достаточно запустить:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\ProgramData\RDP-login-monitor\Login_Monitor.ps1" -InstallTasks
Скрипт сам зарегистрирует RDP-Login-Monitor и RDP-Login-Monitor-Watchdog, а также запросит немедленный первый запуск задач.
Для доменной установки/обновления с шары вручную ничего в планировщике на клиенте настраивать не требуется: используйте Deploy-LoginMonitor.ps1 (подробно в DEPLOY.md).
4) Что проверять после запуска
- Логи:
C:\ProgramData\RDP-login-monitor\Logs\login_monitor.logC:\ProgramData\RDP-login-monitor\Logs\watchdog.log
- Heartbeat:
C:\ProgramData\RDP-login-monitor\Logs\last_heartbeat.txtобновляется по интервалу$HeartbeatInterval(по умолчанию раз в час).
- Ежедневный отчёт: после первого прохождения дневного слота (по умолчанию 09:00, задаётся
$DailyReportHour/$DailyReportMinuteвLogin_Monitor.ps1) в Telegram уходит сводка поquser; метка последнего отчёта —Logs\last_daily_report.txt. - Telegram при старте: при установленном RD Session Host (или аналогичных компонентах RDS, не только шлюз) — строка про входы по RDP/RDS на этом сервере; при доступном журнале RD Gateway — отдельная строка про подключения к внутренним целевым ПК через шлюз (302/303). Узел только с ролью RD Gateway не дублирует формулировку «хост сессий».
5) Автоматический перезапуск при падении
Режим -Watchdog внутри Login_Monitor.ps1 делает:
- проверяет, есть ли процесс
powershell.exe/pwsh.exeсLogin_Monitor.ps1в командной строке; - если процесса нет — запускает монитор;
- если монитор уже есть — не дублирует экземпляр.
6) Дополнительные параметры и прочие файлы
-SkipScheduledTaskMaintenance: при обычном запуске монитора не выполнять проверку/пересоздание задач планировщика (если регистрацию задач ведёте только через-InstallTasksили вручную).Install-DeployScheduledTask.ps1— helper для периодического запускаDeploy-LoginMonitor.ps1с шары (см. DEPLOY.md).Watchdog_RDP_Monitor.ps1иInstall-ScheduledTasks.ps1— альтернативная схема с отдельным watchdog-файлом и путями по умолчаниюD:\Soft. Для новых установок рекомендуется встроенный режим-WatchdogвLogin_Monitor.ps1и задачиRDP-Login-Monitor/RDP-Login-Monitor-Watchdog.ignore.lst.exampleв репозитории — образец файлаignore.lstдля подавления отдельных уведомлений Security (см. раздел 7).
7) Подавление уведомлений Security: ignore.lst
В каталоге установки можно положить файл C:\ProgramData\RDP-login-monitor\ignore.lst (рядом с Login_Monitor.ps1). Он влияет только на уведомления по событиям 4624/4625 (успех/неудача входа в журнале Security). События RD Gateway (302/303), RCM 1149, ежедневный отчёт и heartbeat не фильтруются этим файлом.
- Кодировка файла: UTF-8 (как и для остальных текстовых конфигов).
- Комментарии: строки, начинающиеся с
#или;, игнорируются. - Форматы строк и примеры — в
ignore.lst.exampleв корне репозитория (скопируйте на сервер какignore.lstи отредактируйте). Deploy-LoginMonitor.ps1этот файл не копирует: правила обычно разные на каждой машине; при необходимости создайтеignore.lstвручную или через вашу систему конфигурации.
Ключевые слова (для поиска репозитория)
rdp, rd-gateway, rdp-gateway, rds, remote-desktop, windows-security-log, eventlog, event-id-4624, event-id-4625, event-id-302, event-id-303, powershell, telegram-bot, watchdog, gpo, netlogon, domain-deployment, windows-server, monitoring