diff --git a/Login_Monitor.ps1 b/Login_Monitor.ps1 index 416b02a..1351485 100644 --- a/Login_Monitor.ps1 +++ b/Login_Monitor.ps1 @@ -157,6 +157,9 @@ $ExcludedComputerPatterns = @( # IP-список — в login_monitor.settings.ps1 ($IgnoreAdvapiNetworkLogonSourceIps). $IgnoreAdvapiNetworkLogonSourceIps = @() $IgnoreAdvapiNetworkLogonProcessContains = "Advapi" +# Для Exchange/почтовых хостов: игнорировать 4624 c LogonType=3 и пустым/скрытым IP ("-"). +# Имя с дефисами оставлено намеренно для совместимости с локальным settings. +${Ignore4624-LT3-EmptyIP-Event} = $false # Блокировка учётной записи AD (Security 4740) + IP клиента из логов IIS ActiveSync. # Параметры КД/IIS — в login_monitor.settings.ps1. @@ -1760,6 +1763,13 @@ function Should-IgnoreEvent { if ($Username -match '(?i)(\\)?UMFD-\d+') { return $true } if ($Username -like "*$") { return $true } + # Опциональный фильтр для Exchange-шума: 4624 + LT=3 + пустой/скрытый IP. + if (${Ignore4624-LT3-EmptyIP-Event} -and $EventID -eq 4624 -and $LogonType -eq 3) { + if ([string]::IsNullOrWhiteSpace($SourceIP) -or $SourceIP -eq '-') { + return $true + } + } + # Узкий фильтр: сетевой логон (3) + Advapi + конкретный IP источника if ($EventID -eq 4624 -and $LogonType -eq 3) { foreach ($ip in $IgnoreAdvapiNetworkLogonSourceIps) { @@ -2543,6 +2553,7 @@ function Start-LoginMonitor { } Write-Log "========================================" Write-Log "Каналы уведомлений: $(Get-NotifyChainHuman)" + Write-Log "Фильтр Exchange 4624 LT3 EmptyIP: ${Ignore4624-LT3-EmptyIP-Event}" if ($FailedLogonRateLimitEnabled) { Write-Log "Агрегация 4625: tier1 $FailedLogonRateLimitUserIpThreshold/$FailedLogonRateLimitUserIpWindowSeconds с (IP+user), tier2 $FailedLogonRateLimitIpThreshold/$FailedLogonRateLimitIpWindowSeconds с (IP); suppressIndividual=$FailedLogonRateLimitSuppressIndividualWhileBurst" } diff --git a/README.md b/README.md index c589b7e..c31a764 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ PowerShell-набор для мониторинга входов в Windows с - Документация по развёртыванию: **[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`). Версия релиза агента: **`1.2.5-SAC`** (`$ScriptVersion` и `version.txt`). +- **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`** (сейчас **1.2.15-SAC**); **`Sac-Client.ps1`** передаёт ту же версию в SAC (`product_version`). ## Что изменилось (важное) @@ -39,6 +39,7 @@ PowerShell-набор для мониторинга входов в Windows с - **Email (SMTP):** `$MailSmtpHost`, `$MailFrom`, `$MailTo`, `$MailSmtpPort` (по умолчанию 587), при необходимости `$MailSmtpUser` / `$MailSmtpPassword` (или `$MailSmtpPasswordProtectedB64` через DPAPI), `$MailSmtpStartTls` / `$MailSmtpSsl` - **Порядок:** `$NotifyOrder` — пусто = авто (Telegram → Email, только настроенные); иначе `telegram,email` или `email` и т.п. (допускаются `tg`, `mail`) - **SAC (опционально):** `$UseSAC`, `$SacUrl`, `$SacApiKey` — см. блок в **`login_monitor.settings.example.ps1`**. Проверка: `Login_Monitor.ps1 -CheckSac` + - **Exchange-шум 4624 (опционально):** `${Ignore4624-LT3-EmptyIP-Event} = $true` — подавляет `4624` c `LogonType=3` и `IP='-'` (часто Outlook/SMTP-клиенты на почтовом сервере) - Пошаговое обновление по домену: **[Docs/deploy-rdp-login-monitor.md](Docs/deploy-rdp-login-monitor.md)** (раздел «Обновление на любой Windows-машине») 4. Запускайте с правами администратора (чтение `Security` журнала и регистрация задач). 5. Логи и служебные файлы будут в: diff --git a/login_monitor.settings.example.ps1 b/login_monitor.settings.example.ps1 index 7819743..07b4200 100644 --- a/login_monitor.settings.example.ps1 +++ b/login_monitor.settings.example.ps1 @@ -45,6 +45,9 @@ $SacApiKey = 'sac_UkOsAT3UWiQS54KK5OJPBDCSucysQDrKFju28wmYiz8' $IgnoreAdvapiNetworkLogonSourceIps = @( '192.168.160.57' ) +# --- Exchange noise filter: 4624 + LogonType=3 + IP='-' (часто Outlook/почтовые клиенты) --- +# Включайте на почтовом сервере, если нужен только полезный интерактивный сигнал. +${Ignore4624-LT3-EmptyIP-Event} = $false # --- Блокировка учётной записи AD (4740) + IP из IIS ActiveSync --- # Мониторинг включается только на КД с именем $LockoutMonitorDomainController.