Files
RDP-login-monitor/README.md
T
PapaTramp e96131d722 docs: refresh README, add English README_eng.md
Document daily report, deploy marker, SkipScheduledTaskMaintenance, and legacy watchdog scripts. Add full English translation.
2026-05-03 18:52:18 +10:00

8.4 KiB
Raw Blame History

RDP Login Monitor

PowerShell-набор для мониторинга входов в Windows с отправкой уведомлений в Telegram.

Актуальная схема (рекомендуется)

  • Базовый путь установки: C:\ProgramData\RDP-login-monitor\.
  • Основной скрипт: Login_Monitor.ps1 — журнал Security 4624/4625 (логика зависит от типа ОС: рабочая станция или сервер/КД), при наличии журнала — Remote Connection Manager 1149 (часто актуально для РС с RDP), при роли RD Gateway302/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) Подготовка

  1. Подготовьте папку установки:
    • C:\ProgramData\RDP-login-monitor\
  2. Скопируйте в неё как минимум:
    • Login_Monitor.ps1
    • (для доменного развёртывания отдельно на шаре) Deploy-LoginMonitor.ps1 и version.txt.
  3. Откройте Login_Monitor.ps1 и задайте токен/чат:
    • $TelegramBotToken или ...ProtectedB64
    • $TelegramChatID или ...ProtectedB64
  4. Запускайте с правами администратора (чтение Security журнала и регистрация задач).
  5. Логи и служебные файлы будут в:
    • C:\ProgramData\RDP-login-monitor\Logs\

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.log
    • C:\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.

Ключевые слова (для поиска репозитория)

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