Продолжая тему SPN, сегодня расскажу, как отслеживать изменения SPN в AD. Был у меня кейс: один коллега удалил SPN у критического сервера (по ошибке, конечно 😅), и всё, WinRM лег, приложения не коннектятся. Алертов не было. Делать так - нельзя.
🔥 Вот скрипт, который можно повесить на задачу по расписанию. Он проверяет наличие SPN
WSMAN/имя_компьютера и шлёт алерт, если он исчез:
$computers = Get-ADComputer -Filter * -Properties ServicePrincipalName
$missingSpn = @()
foreach ($comp in $computers) {
$expectedSpn = "WSMAN/$($comp.Name)"
if (-not ($comp.ServicePrincipalName -contains $expectedSpn)) {
$missingSpn += $comp.Name
}
}
if ($missingSpn.Count -gt 0) {
$body = "На следующих машинах отсутствует SPN WSMAN:`n" + ($missingSpn -join "`n")
Send-MailMessage -To "admin@domain.local" -From "spn-monitor@domain.local" `
-Subject "❗ Отсутствует SPN WSMAN" -Body $body -SmtpServer "smtp.domain.local"
}
Можно доработать писать в лог, интегрировать с SIEM, триггерить webhook в Zabbix и т.д. Главное, не терять SPN из виду. Один сбой может стоить кучи нервов.
👉 @win_sysadmin