From d26784fb7f0903407b8dc5f5e16c352ba617ece5 Mon Sep 17 00:00:00 2001 From: PTah Date: Thu, 30 Apr 2026 16:43:14 +1000 Subject: [PATCH] Refresh README for current ProgramData + Deploy workflow --- README.md | 102 ++++++++++++++++++++---------------------------------- 1 file changed, 38 insertions(+), 64 deletions(-) diff --git a/README.md b/README.md index dbbea34..4152617 100644 --- a/README.md +++ b/README.md @@ -2,17 +2,16 @@ PowerShell-набор для мониторинга входов в Windows с отправкой уведомлений в Telegram. -## Ключевые слова (для поиска репозитория) - -`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` - ## Актуальная схема (рекомендуется) -- **`Login_Monitor.ps1`** — единый монитор: журнал Security (`4624`/`4625`), при необходимости RD Gateway (`302`/`303`), рабочие станции и серверы, ротация логов, heartbeat, отчёты. Устанавливается в **`C:\ProgramData\RDP-login-monitor\`**, задачи **`RDP-Login-Monitor`** и **`RDP-Login-Monitor-Watchdog`** создаются параметром **`-InstallTasks`** (watchdog через **`schtasks`**, см. **DEPLOY.md**). -- **`Deploy-LoginMonitor.ps1`** + **`version.txt`** — доставка с файловой шары по версии (домен, GPO «автозагрузка» компьютера). Подробности, структура шары и правила версий: **[DEPLOY.md](DEPLOY.md)**. -- **`Encrypt-DpapiForRdpMonitor.ps1`** — опционально, для DPAPI-строк токена/chat id на конкретном ПК. - -Разделы ниже про **`D:\Soft\`**, **`Watchdog_RDP_Monitor.ps1`** и **`Install-ScheduledTasks.ps1`** относятся к **старой схеме** и оставлены для совместимости; новые установки ориентируйте на **`ProgramData`** и **DEPLOY.md**. +- Базовый путь установки: **`C:\ProgramData\RDP-login-monitor\`**. +- Основной скрипт: **`Login_Monitor.ps1`** (Security `4624/4625`, опционально RD Gateway `302/303`, heartbeat, ротация логов, уведомления). +- Установка задач: запуск **`Login_Monitor.ps1 -InstallTasks`** создаёт: + - `RDP-Login-Monitor` (основной монитор), + - `RDP-Login-Monitor-Watchdog` (контроль процесса каждые 5 минут). +- Доменная доставка и обновления: **`Deploy-LoginMonitor.ps1`** + **`version.txt`** с шары `NETLOGON`. +- Для полной инструкции по деплою/GPO используйте **[DEPLOY.md](DEPLOY.md)**. +- **`Encrypt-DpapiForRdpMonitor.ps1`** — опционально для подготовки DPAPI-строк токена/chat id. ## Что изменилось (важное) @@ -23,86 +22,61 @@ PowerShell-набор для мониторинга входов в Windows с ## 1) Подготовка -1. Скопируйте в `D:\Soft\` как минимум `Login_Monitor.ps1` и `Watchdog_RDP_Monitor.ps1` (для установки из скрипта — ещё `Install-ScheduledTasks.ps1`), либо измените пути в параметрах установщика / в watchdog. -2. Откройте `Login_Monitor.ps1` и задайте: - - `$TelegramBotToken` - - `$TelegramChatID` -3. Убедитесь, что существует `D:\Soft\Logs\` (скрипт сам создаст при запуске). -4. Запускайте от имени администратора (нужен доступ к журналу `Security`). +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 -powershell.exe -NoProfile -ExecutionPolicy Bypass -File "D:\Soft\Login_Monitor.ps1" +powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\ProgramData\RDP-login-monitor\Login_Monitor.ps1" ``` +Примечание: при ручном запуске монитор работает в текущей сессии до остановки (например, `Ctrl+C`). + ## 3) Запуск через Планировщик заданий (Task Scheduler) -Задания можно завести **вручную в GUI** (ниже) или **одной командой из PowerShell** — см. `Install-ScheduledTasks.ps1` (в начале файла стоит `#Requires -RunAsAdministrator`). Скрипт регистрирует **`RDP Login Monitor`** (старт ОС, запуск `Login_Monitor.ps1`) и **`RDP Login Monitor Watchdog`** (старт ОС + повтор каждые 5 минут, запуск `Watchdog_RDP_Monitor.ps1` из того же каталога). Пути по умолчанию: `D:\Soft\`. Параметры: `-InstallRoot`, `-MainTaskName`, `-WatchdogTaskName`, `-WatchdogRepeatMinutes`, задержки случайного старта и т.д. +Текущая схема: вручную задачи в GUI создавать не нужно. -Пример после копирования файлов в `D:\Soft\`: +Достаточно запустить: ```powershell -powershell.exe -NoProfile -ExecutionPolicy Bypass -File "D:\Soft\Install-ScheduledTasks.ps1" +powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\ProgramData\RDP-login-monitor\Login_Monitor.ps1" -InstallTasks ``` -Это не заменяет настройку токена Telegram в `Login_Monitor.ps1`, а только регистрирует задания. +Скрипт сам зарегистрирует `RDP-Login-Monitor` и `RDP-Login-Monitor-Watchdog`, а также запросит немедленный первый запуск задач. -### Задание №1: основной монитор (вручную) - -Создайте задачу `RDP Login Monitor`: - -- **General** - - `Run whether user is logged on or not` - - `Run with highest privileges` - - `Configure for`: ваша версия Windows Server/Windows -- **Triggers** - - `At startup` (при запуске системы) -- **Actions** - - Program/script: `powershell.exe` - - Add arguments: - ```text - -NoProfile -ExecutionPolicy Bypass -File "D:\Soft\Login_Monitor.ps1" - ``` -- **Settings** - - `If the task is already running`: `Do not start a new instance` - -### Задание №2: watchdog (вручную) - -Создайте задачу `RDP Login Monitor Watchdog`: - -- **General** - - `Run whether user is logged on or not` - - `Run with highest privileges` -- **Triggers** - - `At startup` - - Дополнительно: `Repeat task every 5 minutes` (или отдельный триггер по расписанию каждые 5 минут) -- **Actions** - - Program/script: `powershell.exe` - - Add arguments: - ```text - -NoProfile -ExecutionPolicy Bypass -File "D:\Soft\Watchdog_RDP_Monitor.ps1" - ``` -- **Settings** - - `If the task is already running`: `Do not start a new instance` - -> Если watchdog лежит не в `D:\Soft\`, поправьте путь в аргументах или параметр `-MainScriptPath`. +Для доменной установки/обновления с шары вручную ничего в планировщике на клиенте настраивать не требуется: используйте `Deploy-LoginMonitor.ps1` (подробно в `DEPLOY.md`). ## 4) Что проверять после запуска - Логи: - - `D:\Soft\Logs\login_monitor.log` - - `D:\Soft\Logs\watchdog.log` + - `C:\ProgramData\RDP-login-monitor\Logs\login_monitor.log` + - `C:\ProgramData\RDP-login-monitor\Logs\watchdog.log` - Heartbeat: - - `D:\Soft\Logs\last_heartbeat.txt` обновляется примерно раз в час (по `$HeartbeatInterval`). + - `C:\ProgramData\RDP-login-monitor\Logs\last_heartbeat.txt` обновляется примерно раз в час (по `$HeartbeatInterval`). - Telegram при старте: при установленном **RD Session Host** (или аналогичных компонентах RDS, не только шлюз) — строка про входы по RDP/RDS на этом сервере; при доступном журнале **RD Gateway** — отдельная строка про подключения к **внутренним целевым ПК** через шлюз (302/303). Узел только с ролью RD Gateway не дублирует формулировку «хост сессий». ## 5) Автоматический перезапуск при падении -`Watchdog_RDP_Monitor.ps1` делает: +Режим `-Watchdog` внутри `Login_Monitor.ps1` делает: - проверяет, есть ли процесс `powershell.exe/pwsh.exe` с `Login_Monitor.ps1` в командной строке; - если процесса нет — запускает монитор; -- если heartbeat старше `$HeartbeatStaleMinutes` (по умолчанию 90 минут) — перезапускает монитор. +- если монитор уже есть — не дублирует экземпляр. + +## Ключевые слова (для поиска репозитория) + +`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`