(Service Principal Name) — это уникальное имя сервиса в , например MSSQLSvc/sql01.lab.local:1433. использует его, чтобы знать, для какого сервиса выдать билет.
# Отображение SPN учетной записи
setspn -L LAB\svc_sql
# Поиск учетных записей пользователей с SPN (цели Kerberoasting)
Get-ADUser -Filter {ServicePrincipalName -like "*"} -Properties ServicePrincipalName
# Проверка активности LDAPS (порт 636)
Test-NetConnection dc01.lab.local -Port 636powershellАрхитектура и теория — под капотом
связывает имя службы (HTTP/web01.corp.com) с учетной записью, которая ее запускает. Без SPN — нет , происходит откат к . LDAPS = поверх TLS на порту 636.
Практическая настройка (PowerShell / GUI)
# Регистрация SPN
setspn -S HTTP/portal.corp.com CORP\svc_web
# Проверка дубликатов (Дубликат SPN = Сломанный Kerberos)
setspn -X
# LDAPS — Нужен сертификат в Personal store компьютера с Server Authentication EKU
# Проверка
ldp.exe → Connection → Connect → Port 636 → SSLpowershellРеальные сценарии в организации
- Веб-приложение, работающее под учетной записью службы — обязателен для каждого hostname (short + FQDN).
- LDAPS обязателен перед включением Channel Binding (защищает от relay).
Диагностика и устранение неполадок
- klist purge и повторная попытка после исправления .
- Event 4771 с кодом 0x25 = Clock skew, 0x18 = неверный пароль.
- certutil -store MY — проверка сертификатов DC для LDAPS.
Глоссарий и быстрые команды
- — Service Principal Name.
- LDAPS — over TLS (636).
- setspn -L user — список учетной записи.