From bd83dc84dc6014ef5ac457a82b8a68ab89531076 Mon Sep 17 00:00:00 2001 From: PTah Date: Thu, 4 Jun 2026 10:20:17 +1000 Subject: [PATCH] fix: StrictMode-safe File Share audit init (UseGuid key) Enable-SecurityAudit crashed on init when checking RU/EN File Share attempts because accessing UseGuid on a hashtable without that key throws under Set-StrictMode -Version Latest. Co-authored-by: Cursor --- Login_Monitor.ps1 | 8 ++++---- README.md | 2 +- version.txt | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Login_Monitor.ps1 b/Login_Monitor.ps1 index 71595af..6865901 100644 --- a/Login_Monitor.ps1 +++ b/Login_Monitor.ps1 @@ -89,7 +89,7 @@ $script:SkipLogDetailLimit = 15 # строки ниже, если правки «мелкие» и вы не хотите менять отображаемую версию в логах). # Рекомендация: при значимых релизах меняйте и $ScriptVersion, и version.txt одинаково; при только # исправлениях на шаре — достаточно поднять patch в version.txt (например 1.3.0.1). -$ScriptVersion = "2.0.19-SAC" +$ScriptVersion = "2.0.20-SAC" # Логи (все под InstallRoot) $LogFile = Join-Path $script:InstallRoot "Logs\login_monitor.log" @@ -1311,12 +1311,12 @@ function Enable-SecurityAudit { $ruCategory = Uc @(0x0414,0x043E,0x0441,0x0442,0x0443,0x043F,0x0020,0x043A,0x0020,0x043E,0x0431,0x044A,0x0435,0x043A,0x0442,0x0430,0x043C) $ruSub = Uc @(0x041E,0x0431,0x0449,0x0438,0x0439,0x0020,0x0434,0x043E,0x0441,0x0442,0x0443,0x043F,0x0020,0x043A,0x0020,0x0444,0x0430,0x0439,0x043B,0x0430,0x043C) $attempts = @( - @{ Category = $ruCategory; Sub = $ruSub; Label = 'RU File Share' }, - @{ Category = 'Object Access'; Sub = 'File Share'; Label = 'EN File Share' }, + @{ Category = $ruCategory; Sub = $ruSub; Label = 'RU File Share'; UseGuid = $false }, + @{ Category = 'Object Access'; Sub = 'File Share'; Label = 'EN File Share'; UseGuid = $false }, @{ Category = $null; Sub = $guid; Label = 'GUID File Share'; UseGuid = $true } ) foreach ($a in $attempts) { - if ($a.UseGuid) { + if ($a['UseGuid']) { $setArgs = ('/set /subcategory:{{{0}}} /success:enable /failure:enable' -f $a.Sub) $set = Invoke-AuditPol -Arguments $setArgs if ($set.ExitCode -eq 0) { diff --git a/README.md b/README.md index 9e30d7c..3a87748 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ Get-Content "C:\ProgramData\RDP-login-monitor\Logs\login_monitor.log" -Tail 60 - Документация по развёртыванию: **[Docs/README.md](Docs/README.md)** (RDP-монитор, Exchange, NETLOGON). - **`Encrypt-DpapiForRdpMonitor.ps1`** — опционально для подготовки DPAPI-строк токена/chat id и пароля SMTP (`$MailSmtpPasswordProtectedB64` в файле настроек). - **Локальные настройки RDP-монитора:** **`login_monitor.settings.ps1`** в каталоге установки (образец **`login_monitor.settings.example.ps1`**). При автообновлении **`Login_Monitor.ps1`** с шары файл настроек **не перезаписывается** (как **`exchange_monitor.settings.ps1`** для Exchange). -- **Security Alert Center (SAC):** модуль **`Sac-Client.ps1`** (копируется вместе с `Login_Monitor.ps1`). Режимы **`$UseSAC`**: `off` | `exclusive` | `dual` | `fallback` — контракт в репозитории **security-alert-center** (`docs/agent-integration.md`). Версия релиза: **`$ScriptVersion`** и **`version.txt`** (сейчас **2.0.19-SAC**); **`Sac-Client.ps1`** передаёт ту же версию в SAC (`product_version`). +- **Security Alert Center (SAC):** модуль **`Sac-Client.ps1`** (копируется вместе с `Login_Monitor.ps1`). Режимы **`$UseSAC`**: `off` | `exclusive` | `dual` | `fallback` — контракт в репозитории **security-alert-center** (`docs/agent-integration.md`). Версия релиза: **`$ScriptVersion`** и **`version.txt`** (сейчас **2.0.20-SAC**); **`Sac-Client.ps1`** передаёт ту же версию в SAC (`product_version`). ### Highlights (события в SAC / Telegram) diff --git a/version.txt b/version.txt index c471ebd..ec93ba8 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.0.19-SAC +2.0.20-SAC