diff --git a/Docs/deploy-netlogon-publish.md b/Docs/deploy-netlogon-publish.md index 6b6d5a0..f3bde8f 100644 --- a/Docs/deploy-netlogon-publish.md +++ b/Docs/deploy-netlogon-publish.md @@ -33,7 +33,7 @@ Test-Path '\\K6A-DC3\NETLOGON' |----------|----------| | `$RepoPath` | `C:\Soft\Git\RDP-login-monitor` | | `$NetlogonDest` | `\\dc.contoso.local\NETLOGON\RDP-login-monitor` *(заглушка — замените на свой DC)* | -| `$GitUrl` | `https://github.com/PTah/RDP-login-monitor.git` | +| `$GitUrl` | `https://git.papatramp.ru/PapaTramp/RDP-login-monitor.git` | | `$GitBranch` | `main` | | `$LogFile` | `C:\soft\Logs\update-rdp-monitor.log` | @@ -65,7 +65,7 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\Soft\Git\RDP-login-mo ```powershell powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\Soft\Git\RDP-login-monitor\update-rdp-monitor.ps1 ` -NetlogonDest '\\K6A-DC3\NETLOGON\RDP-login-monitor' ` - -GitUrl 'https://git.kalinamall.ru/PapaTramp/RDP-login-monitor.git' + -GitUrl 'https://git.papatramp.ru/PapaTramp/RDP-login-monitor.git' ``` Пробный прогон без копирования: diff --git a/Docs/deploy-rdp-login-monitor.md b/Docs/deploy-rdp-login-monitor.md index a1562f1..940db8b 100644 --- a/Docs/deploy-rdp-login-monitor.md +++ b/Docs/deploy-rdp-login-monitor.md @@ -216,7 +216,7 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass ` **Требования:** domain admin в SAC; `SAC_PUBLIC_URL` доступен с ПК; `rdp_git_repo_url` в настройках обновлений. **`Deploy-LoginMonitor.ps1` на шаре NETLOGON для этого пути не обязателен** — скрипт приходит в zip. -Лог операции — в модалке SAC сразу при старте. См. [agent-control-plane.md](https://git.kalinamall.ru/PapaTramp/security-alert-center/src/branch/main/docs/agent-control-plane.md) §4.3. +Лог операции — в модалке SAC сразу при старте. См. [agent-control-plane.md](https://git.papatramp.ru/PapaTramp/security-alert-center/src/branch/main/docs/agent-control-plane.md) §4.3. ## Версии diff --git a/README.md b/README.md index a56881d..536960c 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ powershell -NoProfile -ExecutionPolicy Bypass -File "\\\NETLOGON\RDP-login-m 2. `Deploy-LoginMonitor.ps1 -SourceShareRoot` (тот же алгоритм, что при GPO) 3. Нужны: WinRM, domain admin в SAC, доступ ПК к `SAC_PUBLIC_URL`, `rdp_git_repo_url` в **Настройки → Обновления агентов** -Подробнее: [security-alert-center — agent-control-plane](https://git.kalinamall.ru/PapaTramp/security-alert-center/src/branch/main/docs/agent-control-plane.md) §4.3. +Подробнее: [security-alert-center — agent-control-plane](https://git.papatramp.ru/PapaTramp/security-alert-center/src/branch/main/docs/agent-control-plane.md) §4.3. ## События в SAC @@ -33,7 +33,7 @@ powershell -NoProfile -ExecutionPolicy Bypass -File "\\\NETLOGON\RDP-login-m | Security 4740 (КД) | `auth.account.locked` | | Агент | `agent.heartbeat`, `report.daily.rdp`, `agent.inventory` | -**SAC:** `Sac-Client.ps1`, `$UseSAC` — [agent-integration.md](https://git.kalinamall.ru/PapaTramp/security-alert-center/src/branch/main/docs/agent-integration.md). Poll команд `qwinsta`/`logoff` (≥ 2.1.0-SAC). +**SAC:** `Sac-Client.ps1`, `$UseSAC` — [agent-integration.md](https://git.papatramp.ru/PapaTramp/security-alert-center/src/branch/main/docs/agent-integration.md). Poll команд `qwinsta`/`logoff` (≥ 2.1.0-SAC). ## Ключевые файлы @@ -54,7 +54,7 @@ Login_Monitor.ps1 -CheckSac ## Документация - [Docs/README.md](Docs/README.md) — развёртывание, Exchange -- [security-alert-center](https://git.kalinamall.ru/PapaTramp/security-alert-center) — сервер, RDG flap, qwinsta через SAC UI/Seaca +- [security-alert-center](https://git.papatramp.ru/PapaTramp/security-alert-center) — сервер, RDG flap, qwinsta через SAC UI/Seaca ## English diff --git a/exchange_monitor.settings.example.ps1 b/exchange_monitor.settings.example.ps1 index f0fdcc3..f276584 100644 --- a/exchange_monitor.settings.example.ps1 +++ b/exchange_monitor.settings.example.ps1 @@ -29,11 +29,11 @@ $QueueMessageCountThreshold = 150 # --- Пилот VIP (рекомендуется для первого запуска) --- # $VipMailboxesOnly = $true # $VipMailboxes = @( -# 'director@kalinamall.ru', -# 'cfo@kalinamall.ru' +# 'director@example.com', +# 'cfo@example.com' # ) # $VipMailboxPatterns = @( -# '*@kalinamall.ru' # опционально: все ящики домена из Get-Mailbox +# '*@example.com' # опционально: все ящики домена из Get-Mailbox # ) # Первый ночной скан: не слать сотни алертов по уже существующим пересылкам @@ -46,9 +46,9 @@ $QueueMessageCountThreshold = 150 # $SendInboxScanSummary = $true # Удалённый EMS (если скрипт не на Exchange) -# $ExchangeServerFqdn = 'fifth.kalinamall.ru' +# $ExchangeServerFqdn = 'mail.example.com' # Не сканировать Inbox rules (битое хранилище правил / Watson на Get-InboxRule) # $SkipInboxScanMailboxes = @( -# 'k.selezneva@kalinamall.ru' +# 'k.selezneva@example.com' # ) diff --git a/login_monitor.settings.example.ps1 b/login_monitor.settings.example.ps1 index 2988296..2126acd 100644 --- a/login_monitor.settings.example.ps1 +++ b/login_monitor.settings.example.ps1 @@ -9,8 +9,8 @@ #> # --- Telegram (или DPAPI Base64 через Encrypt-DpapiForRdpMonitor.ps1) --- -$TelegramBotToken = '8239219522:AAEyOZX3cwNfgGOMDkf-mgjTIuoaOh5gF7I' -$TelegramChatID = '2843230' +$TelegramBotToken = 'YOUR_BOT_TOKEN' +$TelegramChatID = 'YOUR_CHAT_ID' # $TelegramBotTokenProtectedB64 = '' # $TelegramChatIDProtectedB64 = '' @@ -29,17 +29,15 @@ $NotifyOrder = 'tg' # --- Подпись сервера в Telegram и SAC (host.display_name); пусто = $env:COMPUTERNAME --- # $ServerDisplayName = 'UNMS Kalina' # --- Явный IPv4 хоста для SAC (опционально; иначе автоопределение) --- -# $ServerIPv4 = '192.168.160.57' +# $ServerIPv4 = '10.0.0.10' # --- Security Alert Center (SAC) --- # off | exclusive | dual | fallback — см. security-alert-center/docs/agent-integration.md $UseSAC = 'fallback' -$SacUrl = 'https://sac.kalinamall.ru' -$SacApiKey = 'sac_UkOsAT3UWiQS54KK5OJPBDCSucysQDrKFju28wmYiz8' -$SacSpoolDir = 'C:\ProgramData\RDP-login-monitor\sac-spool' -$SacTimeoutSec = 45 -$SacSpoolFlushMaxFiles = 50 -$SacSpoolMaxAgeHours = 72 +$SacUrl = 'https://sac.example.com' +$SacApiKey = 'sac_CHANGE_ME' +# $SacSpoolDir = 'C:\ProgramData\RDP-login-monitor\sac-spool' +# $SacTimeoutSec = 12 # $SacTlsSkipVerify = $false # $SacFallbackFailures = 5 # $false = не слать report.daily.rdp с агента (суточный отчёт только из SAC) @@ -60,7 +58,6 @@ $StartupRebootDetectMinutes = 5 $GetInventory = $true # --- RDS Shadow Control + WinRM inbound (Enter-PSSession), severity warning --- -# $EnableRcm1149Monitoring = 1 # RCM Operational 1149 (RDP auth; workstation + RDS server) # $EnableRcmShadowControlMonitoring = 1 # RCM Operational 20506/20507/20510 # $EnableWinRmInboundMonitoring = 1 # WinRM Operational 91 (+ correlate Security 4624) # $EnableAdminShareMonitoring = 1 # Security 5140 C$/ADMIN$ (audit File Share) @@ -72,7 +69,7 @@ $GetInventory = $true # --- Узкое исключение шумовых сетевых логонов (LogonType=3, Advapi) --- $IgnoreAdvapiNetworkLogonSourceIps = @( - '192.168.160.57' + '10.0.0.1' ) # --- Exchange noise filter: 4624 + LogonType=3 + IP='-' (часто Outlook/почтовые клиенты) --- # Включайте на почтовом сервере, если нужен только полезный интерактивный сигнал. @@ -85,9 +82,9 @@ $MaxBackupDays = 31 # --- Блокировка учётной записи AD (4740) + IP из IIS ActiveSync --- # Мониторинг включается только на КД с именем $LockoutMonitorDomainController. -$LockoutMonitorDomainController = 'K6A-DC3' -$NetBiosDomainName = 'B26' -$ExchangeIisLogPath = '\\fifth.kalinamall.ru\c$\inetpub\logs\LogFiles\W3SVC1' +$LockoutMonitorDomainController = 'DC01' +$NetBiosDomainName = 'CONTOSO' +$ExchangeIisLogPath = '\\mail.example.com\c$\inetpub\logs\LogFiles\W3SVC1' $ExchangeServerHostForIisExclude = '' $ExchangeIisLogTailLines = 5000 $ExchangeIisLogMinutesBeforeLockout = 30 diff --git a/scripts/Rewrite-GitHostUrls.ps1 b/scripts/Rewrite-GitHostUrls.ps1 index 44c3e20..8f558d5 100644 --- a/scripts/Rewrite-GitHostUrls.ps1 +++ b/scripts/Rewrite-GitHostUrls.ps1 @@ -28,20 +28,20 @@ switch ($Target) { $BaseHost = $Base -replace '^https://', '' $patterns = @( - @{ From = 'https://github.com/PTah/([^)/''"\s]+)/blob/main/'; To = "$Base/`$1$BlobSuffix/" } - @{ From = 'https://github.com/PTah/([^)/''"\s]+)/src/branch/main/'; To = "$Base/`$1$BlobSuffix/" } - @{ From = 'https://git.kalinamall.ru/PapaTramp/([^)/''"\s]+)/blob/main/'; To = "$Base/`$1$BlobSuffix/" } - @{ From = 'https://git.kalinamall.ru/PapaTramp/([^)/''"\s]+)/src/branch/main/'; To = "$Base/`$1$BlobSuffix/" } + @{ From = 'https://git.papatramp.ru/PapaTramp/([^)/''"\s]+)/blob/main/'; To = "$Base/`$1$BlobSuffix/" } + @{ From = 'https://git.papatramp.ru/PapaTramp/([^)/''"\s]+)/src/branch/main/'; To = "$Base/`$1$BlobSuffix/" } + @{ From = 'https://git.papatramp.ru/PapaTramp/([^)/''"\s]+)/blob/main/'; To = "$Base/`$1$BlobSuffix/" } + @{ From = 'https://git.papatramp.ru/PapaTramp/([^)/''"\s]+)/src/branch/main/'; To = "$Base/`$1$BlobSuffix/" } + @{ From = 'https://git.papatramp.ru/PapaTramp/([^)/''"\s]+)/src/branch/main/'; To = "$Base/`$1$BlobSuffix/" } @{ From = 'https://git.papatramp.ru/PapaTramp/([^)/''"\s]+)/src/branch/main/'; To = "$Base/`$1$BlobSuffix/" } - @{ From = 'https://git.papatramp.ru/PTah/([^)/''"\s]+)/src/branch/main/'; To = "$Base/`$1$BlobSuffix/" } - @{ From = 'https://github.com/PTah/'; To = "$Base/" } - @{ From = 'https://git.kalinamall.ru/PapaTramp/'; To = "$Base/" } @{ From = 'https://git.papatramp.ru/PapaTramp/'; To = "$Base/" } - @{ From = 'https://git.papatramp.ru/PTah/'; To = "$Base/" } - @{ From = 'github.com/PTah/'; To = "$BaseHost/" } - @{ From = 'git.kalinamall.ru/PapaTramp/'; To = "$BaseHost/" } + @{ From = 'https://git.papatramp.ru/PapaTramp/'; To = "$Base/" } + @{ From = 'https://git.papatramp.ru/PapaTramp/'; To = "$Base/" } + @{ From = 'https://git.papatramp.ru/PapaTramp/'; To = "$Base/" } + @{ From = 'git.papatramp.ru/PapaTramp/'; To = "$BaseHost/" } + @{ From = 'git.papatramp.ru/PapaTramp/'; To = "$BaseHost/" } + @{ From = 'git.papatramp.ru/PapaTramp/'; To = "$BaseHost/" } @{ From = 'git.papatramp.ru/PapaTramp/'; To = "$BaseHost/" } - @{ From = 'git.papatramp.ru/PTah/'; To = "$BaseHost/" } ) $extensions = @('*.md', '*.json', '*.service', '*.example', '*.sh', '*.ps1', '*.yml', '*.yaml') diff --git a/update-rdp-monitor.ps1 b/update-rdp-monitor.ps1 index 1284cb2..df20d3c 100644 --- a/update-rdp-monitor.ps1 +++ b/update-rdp-monitor.ps1 @@ -4,7 +4,7 @@ .DESCRIPTION Dlya servera publikatsii (napr. DC3). Po umolchaniyu GitHub (github.com/PTah). Na zakrytom zerkale ukazhite -GitUrl URL vashego Gitea. - Posle fetch: vsegda reset --hard na kalinamall/main (bez merge), zatem clean -fd. + Posle fetch: vsegda reset --hard na vetku upstream (bez merge), zatem clean -fd. Kopiruyutsya: polnyj spisok v Docs/deploy-netlogon-publish.md. .EXAMPLE powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\soft\update-rdp-monitor.ps1 @@ -14,8 +14,8 @@ [CmdletBinding(SupportsShouldProcess = $true)] param( [string]$RepoPath = 'C:\Soft\Git\RDP-login-monitor', - [string]$NetlogonDest = '\\b26\NETLOGON\RDP-login-monitor', - [string]$GitUrl = 'https://git.kalinamall.ru/PapaTramp/RDP-login-monitor.git', + [string]$NetlogonDest = '\\dc.contoso.local\NETLOGON\RDP-login-monitor', + [string]$GitUrl = 'https://git.papatramp.ru/PapaTramp/RDP-login-monitor.git', [string]$GitBranch = 'main', [string]$LogFile = 'C:\soft\Logs\update-rdp-monitor.log', [switch]$SkipGitClean @@ -34,7 +34,6 @@ $DistFiles = @( 'Install-DomainMonitors.ps1', 'Deploy-DomainMonitors.ps1', 'exchange_monitor.settings.example.ps1', - 'Diagnose-RdpLoginMonitor.ps1', 'login_monitor.settings.example.ps1' ) @@ -113,38 +112,25 @@ function Ensure-GitRepository { function Get-ConfiguredGitRemoteName { $names = @(Invoke-GitCommand -Arguments @('remote') | ForEach-Object { "$_".Trim() } | Where-Object { $_ }) if ($names.Count -eq 0) { return $null } - if ('kalinamall' -in $names) { return 'kalinamall' } - foreach ($n in $names) { - $url = (& git -C $RepoPath remote get-url $n 2>$null) - if ($url -match 'git\.kalinamall\.ru') { return $n } - } if ('origin' -in $names) { return 'origin' } return $names[0] } -function Ensure-GitKalinamallRemote { +function Ensure-GitUpstreamRemote { $name = Get-ConfiguredGitRemoteName if ($null -ne $name) { $url = (& git -C $RepoPath remote get-url $name 2>$null) - if ($url -match 'git\.kalinamall\.ru') { - Write-UpdateLog "Using remote: $name ($url)" - return $name - } - Write-UpdateLog "Remote $name is not kalinamall ($url); adding kalinamall -> $GitUrl" - } else { - Write-UpdateLog "No remotes; adding kalinamall -> $GitUrl" + Write-UpdateLog "Using remote: $name ($url)" + return $name } - if ('kalinamall' -in @(& git -C $RepoPath remote 2>$null)) { - Invoke-GitCommand -Arguments @('remote', 'set-url', 'kalinamall', $GitUrl) - return 'kalinamall' - } - Invoke-GitCommand -Arguments @('remote', 'add', 'kalinamall', $GitUrl) - return 'kalinamall' + Write-UpdateLog "No remotes; adding origin -> $GitUrl" + Invoke-GitCommand -Arguments @('remote', 'add', 'origin', $GitUrl) + return 'origin' } function Update-Repository { Ensure-GitRepository - $remote = Ensure-GitKalinamallRemote + $remote = Ensure-GitUpstreamRemote Invoke-GitCommand -Arguments @('fetch', '--prune', $remote, $GitBranch) $upstream = "${remote}/${GitBranch}"