Files
RDP-login-monitor/Docs/deploy-rdp-login-monitor.md
T
PapaTramp 9ab6cc64a1 docs: add Docs/ guides; Exchange Mail Security scripts (v1.6.0)
- Docs: RDP deploy, Exchange mail security, NETLOGON publish
- Exchange-MailSecurity.ps1, Notify-Common, Deploy/Install-DomainMonitors
- DEPLOY.md redirects to Docs/
2026-05-22 14:32:50 +10:00

6.6 KiB
Raw Blame History

Развёртывание RDP Login Monitor в домене

Монитор ставится в C:\ProgramData\RDP-login-monitor\, задачи планировщика создаёт сам Login_Monitor.ps1 (параметр -InstallTasks). Доставку по сети выполняет Deploy-LoginMonitor.ps1.

См. также: exchange-mail-security.md (отдельно, только сервер Exchange).

Файлы на файловой шаре

Создайте каталог, доступный конечным компьютерам на чтение (часто учётная запись компьютера домена), например:

\\dc.contoso.local\NETLOGON\RDP-login-monitor\

Минимум для RDP-монитора на всех ПК/серверах:

Файл Назначение
Login_Monitor.ps1 Основной скрипт (токен/chat id plain или DPAPI в параметрах).
version.txt Одна строка — номер версии пакета на шаре (см. раздел «Версии» ниже).
Deploy-LoginMonitor.ps1 Установщик: сравнивает версию, копирует монитор, вызывает -InstallTasks, при необходимости запускает процесс монитора.

Полный список файлов для публикации на шару — в deploy-netlogon-publish.md.

Как это работает

  1. Deploy-LoginMonitor.ps1 определяет корень дистрибутива:

    • параметр -SourceShareRoot \\server\share\RDP-login-monitor, или
    • если скрипт запущен по UNC, берётся родительская папка этого файла.
  2. Читается version.txt на шаре и сравнивается с локальной меткой deployed_version.txt. Если метки нет — подтягивается $ScriptVersion из установленного Login_Monitor.ps1.

  3. Версия на шаре совпадает с локальной — выход без копирования.

  4. Версия на шаре новее — остановка процессов монитора → копирование Login_Monitor.ps1Login_Monitor.ps1 -InstallTasksdeployed_version.txt → запуск монитора (если не -SkipStartMonitorAfterUpdate).

  5. Версия на шаре старее — откат блокируется, пока не указан -AllowDowngrade.

Лог: C:\ProgramData\RDP-login-monitor\Logs\deploy.log.

Опционально: ignore.lst

Файл C:\ProgramData\RDP-login-monitor\ignore.lst — подавление отдельных алертов 4624/4625/4740. Синтаксис — в README.md (раздел 7) и ignore.lst.example. Deploy с шары ignore.lst не копирует.

Опционально на КД: блокировки AD (4740)

Включается только если монитор запущен на КД с именем $LockoutMonitorDomainController. Параметры задаются локально на этом КД после деплоя ($NetBiosDomainName, $ExchangeIisLogPath, …).

Heartbeat и watchdog

  • Logs\last_heartbeat.txt — обновление по $HeartbeatInterval (по умолчанию 1 ч).
  • Нет обновления дольше $HeartbeatStaleAlertMultiplier × интервал — оповещение.
  • Задача RDP-Login-Monitor-Watchdog — каждые 5 мин проверяет процесс и поднимает при падении.

Задачи планировщика (-InstallTasks)

Имя Назначение
RDP-Login-Monitor Запуск при старте ОС
RDP-Login-Monitor-Watchdog Контроль процесса каждые 5 мин

Проверка:

Get-ScheduledTask -TaskName 'RDP-Login-Monitor','RDP-Login-Monitor-Watchdog' -ErrorAction SilentlyContinue

Логи: login_monitor.log, watchdog.log.

GPO (автозагрузка): проверенная схема

  1. Файлы на \\B26\NETLOGON\RDP-login-monitor\
  2. GPO на OU компьютеровСценарии PowerShell автозагрузки → Deploy-LoginMonitor.ps1
  3. Security Filtering: группа компьютеров (например B26\RDP-Login), права Read + Apply GPO
  4. Доступ на шару для SYSTEM / Domain Computers
  5. После смены membership — перезагрузка (не только gpupdate)

Нюансы: UNC в NETLOGON не копируется в SYSVOL GPO — это нормально. Deploy после -InstallTasks делает schtasks /Run для немедленного старта монитора.

Периодический Deploy на серверах без перезагрузок

powershell.exe -NoProfile -ExecutionPolicy Bypass -File ".\Install-DeployScheduledTask.ps1" `
  -TaskName "RDP-Login-Monitor-Deploy" `
  -DeployScriptPath "\\B26\NETLOGON\RDP-login-monitor\Deploy-LoginMonitor.ps1" `
  -RepeatMinutes 60 `
  -RunNow

Ручной deploy

powershell.exe -NoProfile -ExecutionPolicy Bypass -File "\\B26\NETLOGON\RDP-login-monitor\Deploy-LoginMonitor.ps1"

Параметры: -WhatIf, -SkipStartMonitorAfterUpdate, -AllowDowngrade.

Диагностика

  • Group Policy Operational log
  • Logs\deploy.log, login_monitor.log, watchdog.log

Версии: version.txt и $ScriptVersion

Что Роль
version.txt на шаре Триггер обновления для Deploy
$ScriptVersion в скрипте Версия в логах и Telegram

Поднимайте version.txt при каждой выкладке на NETLOGON.

Безопасность

  • Ограничьте ACL на шару (в скрипте могут быть секреты).
  • DPAPI: Encrypt-DpapiForRdpMonitor.ps1
  • Внутренний git: не пушить секреты в публичный GitHub

UNC и ExecutionPolicy

При ошибках подписи с FQDN-шары используйте короткое имя DC: \\DC01\NETLOGON\... и powershell.exe -ExecutionPolicy Bypass -File "...".