- Docs: RDP deploy, Exchange mail security, NETLOGON publish - Exchange-MailSecurity.ps1, Notify-Common, Deploy/Install-DomainMonitors - DEPLOY.md redirects to Docs/
6.6 KiB
Развёртывание 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.
Как это работает
-
Deploy-LoginMonitor.ps1определяет корень дистрибутива:- параметр
-SourceShareRoot\\server\share\RDP-login-monitor, или - если скрипт запущен по UNC, берётся родительская папка этого файла.
- параметр
-
Читается
version.txtна шаре и сравнивается с локальной меткойdeployed_version.txt. Если метки нет — подтягивается$ScriptVersionиз установленногоLogin_Monitor.ps1. -
Версия на шаре совпадает с локальной — выход без копирования.
-
Версия на шаре новее — остановка процессов монитора → копирование
Login_Monitor.ps1→Login_Monitor.ps1 -InstallTasks→deployed_version.txt→ запуск монитора (если не-SkipStartMonitorAfterUpdate). -
Версия на шаре старее — откат блокируется, пока не указан
-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 (автозагрузка): проверенная схема
- Файлы на
\\B26\NETLOGON\RDP-login-monitor\ - GPO на OU компьютеров → Сценарии PowerShell автозагрузки →
Deploy-LoginMonitor.ps1 - Security Filtering: группа компьютеров (например
B26\RDP-Login), права Read + Apply GPO - Доступ на шару для SYSTEM / Domain Computers
- После смены 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 "...".