fix: add Exchange 4624 LT3 empty-IP filter switch
Add configurable `${Ignore4624-LT3-EmptyIP-Event}` for RDP monitor to suppress noisy 4624 network logons with empty IP (-) on mail/Exchange hosts.
Update settings example and README with usage instructions.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -157,6 +157,9 @@ $ExcludedComputerPatterns = @(
|
|||||||
# IP-список — в login_monitor.settings.ps1 ($IgnoreAdvapiNetworkLogonSourceIps).
|
# IP-список — в login_monitor.settings.ps1 ($IgnoreAdvapiNetworkLogonSourceIps).
|
||||||
$IgnoreAdvapiNetworkLogonSourceIps = @()
|
$IgnoreAdvapiNetworkLogonSourceIps = @()
|
||||||
$IgnoreAdvapiNetworkLogonProcessContains = "Advapi"
|
$IgnoreAdvapiNetworkLogonProcessContains = "Advapi"
|
||||||
|
# Для Exchange/почтовых хостов: игнорировать 4624 c LogonType=3 и пустым/скрытым IP ("-").
|
||||||
|
# Имя с дефисами оставлено намеренно для совместимости с локальным settings.
|
||||||
|
${Ignore4624-LT3-EmptyIP-Event} = $false
|
||||||
|
|
||||||
# Блокировка учётной записи AD (Security 4740) + IP клиента из логов IIS ActiveSync.
|
# Блокировка учётной записи AD (Security 4740) + IP клиента из логов IIS ActiveSync.
|
||||||
# Параметры КД/IIS — в login_monitor.settings.ps1.
|
# Параметры КД/IIS — в login_monitor.settings.ps1.
|
||||||
@@ -1760,6 +1763,13 @@ function Should-IgnoreEvent {
|
|||||||
if ($Username -match '(?i)(\\)?UMFD-\d+') { return $true }
|
if ($Username -match '(?i)(\\)?UMFD-\d+') { return $true }
|
||||||
if ($Username -like "*$") { 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 источника
|
# Узкий фильтр: сетевой логон (3) + Advapi + конкретный IP источника
|
||||||
if ($EventID -eq 4624 -and $LogonType -eq 3) {
|
if ($EventID -eq 4624 -and $LogonType -eq 3) {
|
||||||
foreach ($ip in $IgnoreAdvapiNetworkLogonSourceIps) {
|
foreach ($ip in $IgnoreAdvapiNetworkLogonSourceIps) {
|
||||||
@@ -2543,6 +2553,7 @@ function Start-LoginMonitor {
|
|||||||
}
|
}
|
||||||
Write-Log "========================================"
|
Write-Log "========================================"
|
||||||
Write-Log "Каналы уведомлений: $(Get-NotifyChainHuman)"
|
Write-Log "Каналы уведомлений: $(Get-NotifyChainHuman)"
|
||||||
|
Write-Log "Фильтр Exchange 4624 LT3 EmptyIP: ${Ignore4624-LT3-EmptyIP-Event}"
|
||||||
if ($FailedLogonRateLimitEnabled) {
|
if ($FailedLogonRateLimitEnabled) {
|
||||||
Write-Log "Агрегация 4625: tier1 $FailedLogonRateLimitUserIpThreshold/$FailedLogonRateLimitUserIpWindowSeconds с (IP+user), tier2 $FailedLogonRateLimitIpThreshold/$FailedLogonRateLimitIpWindowSeconds с (IP); suppressIndividual=$FailedLogonRateLimitSuppressIndividualWhileBurst"
|
Write-Log "Агрегация 4625: tier1 $FailedLogonRateLimitUserIpThreshold/$FailedLogonRateLimitUserIpWindowSeconds с (IP+user), tier2 $FailedLogonRateLimitIpThreshold/$FailedLogonRateLimitIpWindowSeconds с (IP); suppressIndividual=$FailedLogonRateLimitSuppressIndividualWhileBurst"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ PowerShell-набор для мониторинга входов в Windows с
|
|||||||
- Документация по развёртыванию: **[Docs/README.md](Docs/README.md)** (RDP-монитор, Exchange, NETLOGON).
|
- Документация по развёртыванию: **[Docs/README.md](Docs/README.md)** (RDP-монитор, Exchange, NETLOGON).
|
||||||
- **`Encrypt-DpapiForRdpMonitor.ps1`** — опционально для подготовки DPAPI-строк токена/chat id и пароля SMTP (`$MailSmtpPasswordProtectedB64` в файле настроек).
|
- **`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).
|
- **Локальные настройки 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`
|
- **Email (SMTP):** `$MailSmtpHost`, `$MailFrom`, `$MailTo`, `$MailSmtpPort` (по умолчанию 587), при необходимости `$MailSmtpUser` / `$MailSmtpPassword` (или `$MailSmtpPasswordProtectedB64` через DPAPI), `$MailSmtpStartTls` / `$MailSmtpSsl`
|
||||||
- **Порядок:** `$NotifyOrder` — пусто = авто (Telegram → Email, только настроенные); иначе `telegram,email` или `email` и т.п. (допускаются `tg`, `mail`)
|
- **Порядок:** `$NotifyOrder` — пусто = авто (Telegram → Email, только настроенные); иначе `telegram,email` или `email` и т.п. (допускаются `tg`, `mail`)
|
||||||
- **SAC (опционально):** `$UseSAC`, `$SacUrl`, `$SacApiKey` — см. блок в **`login_monitor.settings.example.ps1`**. Проверка: `Login_Monitor.ps1 -CheckSac`
|
- **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-машине»)
|
- Пошаговое обновление по домену: **[Docs/deploy-rdp-login-monitor.md](Docs/deploy-rdp-login-monitor.md)** (раздел «Обновление на любой Windows-машине»)
|
||||||
4. Запускайте с правами администратора (чтение `Security` журнала и регистрация задач).
|
4. Запускайте с правами администратора (чтение `Security` журнала и регистрация задач).
|
||||||
5. Логи и служебные файлы будут в:
|
5. Логи и служебные файлы будут в:
|
||||||
|
|||||||
@@ -45,6 +45,9 @@ $SacApiKey = 'sac_UkOsAT3UWiQS54KK5OJPBDCSucysQDrKFju28wmYiz8'
|
|||||||
$IgnoreAdvapiNetworkLogonSourceIps = @(
|
$IgnoreAdvapiNetworkLogonSourceIps = @(
|
||||||
'192.168.160.57'
|
'192.168.160.57'
|
||||||
)
|
)
|
||||||
|
# --- Exchange noise filter: 4624 + LogonType=3 + IP='-' (часто Outlook/почтовые клиенты) ---
|
||||||
|
# Включайте на почтовом сервере, если нужен только полезный интерактивный сигнал.
|
||||||
|
${Ignore4624-LT3-EmptyIP-Event} = $false
|
||||||
|
|
||||||
# --- Блокировка учётной записи AD (4740) + IP из IIS ActiveSync ---
|
# --- Блокировка учётной записи AD (4740) + IP из IIS ActiveSync ---
|
||||||
# Мониторинг включается только на КД с именем $LockoutMonitorDomainController.
|
# Мониторинг включается только на КД с именем $LockoutMonitorDomainController.
|
||||||
|
|||||||
Reference in New Issue
Block a user