Event ID 105 no Windows Event Forwarding (WEF) acompanhado de erro WinRM/Kerberos pode travar o envio de logs ao coletor. Este guia ensina o diagnóstico e a correção definitiva ajustando o SPN usado pelo WinRM para “HOST”, eliminando falhas de autenticação.
Resumo do problema
Em um ambiente Windows Server 2019 com assinatura WEF ativa, o servidor source deixou de encaminhar eventos ao coletor. O log Microsoft-Windows-Forwarding/Operational
registrava Event ID 105 com ErrorCode 2150858909 e mensagem de falha de autenticação Kerberos no WinRM (por exemplo, erros do tipo “unknown security error”). A causa mais comum é SPN incorreto/ausente para o serviço WinRM/WSMAN no objeto de computador do coletor.
Correção direta (definitiva)
Forçar o cliente WinRM no servidor‑origem a usar o SPN de tipo HOST em vez de WSMAN. Isso alinha a validação Kerberos com um SPN que sempre existe nas contas de computador, eliminando a lacuna de autenticação:
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Client ^
/v spnprefix /t REGSZ /d "HOST" /f
Após aplicar, reinicie o serviço WinRM (ou o servidor):
Restart-Service WinRM -Force
ou em CMD:
net stop winrm & net start winrm
Por que funciona? Por padrão, o WinRM monta o SPN como
WSMAN/<FQDN>
. Se esse SPN não estiver presente no objeto de computador do coletor (ou estiver duplicado em outra conta), o Kerberos falha. Ao definirspn_prefix="HOST"
, o cliente passa a solicitarHOST/<FQDN>
, SPN que já existe por padrão em todas as contas‑máquina.
Entendendo a causa
O WEF utiliza o WinRM (WS-Management) como transporte. Em cenários “push”, o servidor‑origem autentica contra o coletor usando Kerberos. O Kerberos valida o nome do serviço por meio do SPN (Service Principal Name). Quando o SPN solicitado não corresponde ao que o KDC/AD conhece para aquele computador de destino, a autenticação falha e o encaminhamento de eventos é interrompido.
- SPN esperado por padrão:
WSMAN/<FQDN-do-coletor>
(ou com porta, p.ex.:5985
). - SPN sempre existente:
HOST/<FQDN>
e variações (HOST/<NetBIOS>
), registrados automaticamente nas contas‑máquina. - Falhas típicas: SPN WSMAN ausente, duplicado ou vinculado ao objeto incorreto; DNS reverso inconsistentes; relógio fora de sincronia; fallback para NTLM bloqueado por política.
Sintomas usuais
- Eventos Event ID 105 no log
Microsoft-Windows-Forwarding/Operational
do servidor‑origem informando falha de autenticação com código de erro WinRM/Kerberos. - Assinaturas WEF ficam em estado Retrying / Backoff.
Test-WSMan -ComputerName <coletor> -Authentication Kerberos
falha.- Conectividade TCP (5985/5986) aparentemente OK, porém a sessão WinRM não se estabelece com Kerberos.
Guia de diagnóstico passo a passo
- Verificar nome e DNS
- O FQDN do coletor resolve para o IP correto?
nslookup <coletor>
- Existe consistência entre nome NetBIOS e FQDN?
- Conectividade às portas:
Test-NetConnection <coletor> -Port 5985
(e 5986, se HTTPS).
- O FQDN do coletor resolve para o IP correto?
- Checar hora e domínio (Kerberos exige sincronia < 5 min)
w32tm /query /status echo %USERDNSDOMAIN%
- Listar SPNs no objeto de computador do coletor
setspn -l <Coletor$>
Procure por entradasWSMAN/<FQDN>
eHOST/<FQDN>
. SeWSMAN
não existir, o Kerberos falhará quando o cliente solicitar esse SPN. - Detectar SPN duplicado (causa clássica de falhas Kerberos)
setspn -X -F
Se houver duplicidades, remova a entrada da conta incorreta (setspn -d <SPN> <Conta>
) e mantenha apenas no objeto correto. - Testar a sessão WinRM com Kerberos
# do servidor-origem klist purge Test-WSMan -ComputerName <ColetorFQDN> -Authentication Kerberos
Falha com erro de “principal incorreto” ou genérico indica problema de SPN. - Aplicar a correção recomendada (SPN HOST)
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Client ^ /v spnprefix /t REGSZ /d "HOST" /f net stop winrm & net start winrm
Alternativa PowerShell:New-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Client' -Force | Out-Null New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Client' -Name 'spn\_prefix' -PropertyType String -Value 'HOST' -Force | Out-Null Restart-Service WinRM -Force
- Validar o WEF
# No coletor: wecutil es No source: wecutil gs "NomedaAssinatura"
Monitore o logMicrosoft-Windows-Forwarding/Operational
(source) eMicrosoft-Windows-EventCollector/Operational
(collector).
Tabela de ações de diagnóstico e alternativas
Passo | Objetivo | Comando / Ação |
---|---|---|
Verificar SPNs existentes | Confirmar se o SPN WSMAN ou HOST está registrado | setspn -l <Computador> |
Registrar SPN WSMAN (se insistir em WSMAN) | Mapear o SPN esperado ao objeto de computador | setspn -s WSMAN/<Computador>:5985 <Computador> |
Forçar SPN HOST (recomendado) | Usar SPN sempre presente nas contas‑máquina | reg add ... spn_prefix "HOST" |
Testar autenticação | Diferenciar problema de Kerberos de outras falhas | Test-WSMan -Authentication Kerberos |
Habilitar Basic (temporário) | Diagnóstico; confirmar que a pilha WinRM está funcional | winrm set winrm/config/client/auth @{Basic="true"} |
TrustedHosts ou HTTPS | Contorno de confiança quando SPN não fecha | winrm set winrm/config/client @{TrustedHosts="Alvo"} ou configurar HTTPS |
Conferir domínio e tempo | Garantir condições mínimas do Kerberos | w32tm /query /status |
Validações pós‑correção
- Do servidor‑origem,
Test-WSMan -Authentication Kerberos -ComputerName <ColetorFQDN>
deve passar. - O status da assinatura WEF volta a Active e os eventos começam a fluir (verifique o incremento do contador de entregas).
- O log
Microsoft-Windows-Forwarding/Operational
deixa de registrar o Event ID 105.
Boas práticas de segurança e confiabilidade
- Sincronização de hora: NTP consistente entre domínio, DCs, coletor e sources.
- Rede: portas 5985 (HTTP) e, idealmente, 5986 (HTTPS) liberadas end‑to‑end. Em ambientes de produção, prefira HTTPS + Kerberos.
- DNS: mantenha A/PTR corretos; evite apelidos (CNAME) que causem “principal incorreto” sem o SPN correspondente.
- GPO: documente e aplique a criação do valor
spn_prefix
via Group Policy Preferences para padronizar máquinas novas. - Menor exposição: evite depender de
TrustedHosts
fora de lab; se precisar, combine com HTTPS, escopo restrito e auditoria.
Automatizando via GPO (Group Policy Preferences)
- Abra o Group Policy Management e edite uma GPO vinculada à OU de servidores‑origem.
- Navegue em Computer Configuration > Preferences > Windows Settings > Registry.
- Adicione um item Registry:
- Action: Update
- Hive:
HKEYLOCALMACHINE
- Key Path:
SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Client
- Value name:
spn_prefix
- Value type:
REG_SZ
- Value data:
HOST
- Forçar atualização:
gpupdate /force
(ou reiniciar).
FAQ — Perguntas frequentes
Preciso criar o SPN WSMAN manualmente?
Não, se você adotar a estratégia de forçar “HOST” no cliente WinRM. O SPN HOST/<FQDN>
já existe nas contas‑máquina e valida Kerberos corretamente. Se você optar por manter WSMAN/<FQDN>
, então precisa garantir que ele esteja presente no objeto de computador correto (setspn -s ...
) e sem duplicidades.
Usar HOST funciona com HTTPS?
Sim. O Kerberos valida o SPN independentemente do transporte ser HTTP ou HTTPS. Para HTTPS, garanta que o certificado do coletor contenha o FQDN (CN/SAN) e seja confiável pelos sources.
“unknown security error” sempre significa SPN?
Nem sempre. A mensagem genérica pode encapsular outras condições (tempo fora de sincronia, canal TLS, política de autenticação). Porém, no contexto de WEF com Event ID 105, SPN incorreto/ausente é o fator predominante. Siga o roteiro de diagnóstico deste artigo para isolar.
Posso conviver com NTLM?
Não é recomendado. Além de menos seguro, muitas organizações bloqueiam NTLM por política. O objetivo é manter Kerberos saudável com SPN correto.
Posso usar CNAME para o coletor?
É possível, mas exige que o SPN corresponda ao nome efetivamente usado na conexão. Se os clients conectam a wef.contoso.com
(CNAME apontando para server01
), o SPN deve refletir wef.contoso.com
. Forçar “HOST” ajuda, desde que o HOST inclua o FQDN acessado.
Interpretação de códigos e logs (prática)
- Event ID 105 (source): falha ao entregar eventos ao coletor. Inspecione
ErrorCode
(geralmente mostrado em decimal). - Para correlacionar, capture também no coletor o log
Microsoft-Windows-EventCollector/Operational
. - Dica: converta o valor decimal do
ErrorCode
para hexadecimal no PowerShell para facilitar a identificação do erro SSPI/Kerberos:# Exemplo de conversão genérica: $dec = <ErrorCodeDecimal> '0x{0:X}' -f $dec
Roteiro de correção “à prova de balas”
- Confirme DNS + conectividade (5985/5986): problemas de rede não devem mascarar a análise de Kerberos.
- Sane hora/domínio (NTP coerente; sem “clock skew”).
- Liste SPNs do coletor e remova duplicidades (
setspn -X -F
). - Aplique
spn_prefix=HOST
no servidor‑origem e reinicie o WinRM. - Valide com
Test-WSMan -Authentication Kerberos
e monitore os logs do WEF.
Alternativas temporárias (para diagnóstico)
- TrustedHosts (HTTP):
winrm set winrm/config/client @{TrustedHosts="Coletor"}
. Útil para confirmar que o transporte está ok. Use apenas em lab ou com escopos estritos. - Basic + HTTPS: habilite
Basic
momentaneamente no client para isolar se o problema é somente Kerberos, mantendo o tráfego cifrado via HTTPS. Desabilite após o teste.
Impactos e compatibilidade
A abordagem do SPN HOST é compatível com Windows Server 2012 R2, 2016, 2019, 2022 e estações Windows 10/11. Ela não altera a segurança efetiva do Kerberos; apenas instrui o WinRM a solicitar um SPN que já existe e é confiável para o computador de destino.
Exemplos de comandos prontos
Verificar e criar SPN WSMAN (se necessário)
setspn -l COLETOR$
setspn -s WSMAN/coletor.dominio.tld COLETOR$
setspn -s WSMAN/coletor.dominio.tld:5985 COLETOR$
Forçar SPN HOST (recomendado)
New-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Client' -Force | Out-Null
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Client' `
-Name 'spn_prefix' -PropertyType String -Value 'HOST' -Force | Out-Null
Restart-Service WinRM -Force
Testes e limpeza de credenciais Kerberos
klist
klist purge
Test-WSMan -ComputerName coletor.dominio.tld -Authentication Kerberos
Script de verificação rápida (PowerShell)
Use o snippet abaixo no servidor‑origem para conferir pré‑requisitos e aplicar o spn_prefix
quando ausente:
# Verificação e fix automatizada para WEF/WinRM/Kerberos (SPN HOST)
$Key = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Client'
if (-not (Test-Path $Key)) { New-Item -Path $Key -Force | Out-Null }
$val = (Get-ItemProperty -Path $Key -Name 'spnprefix' -ErrorAction SilentlyContinue).spnprefix
if ($val -ne 'HOST') {
Write-Host 'Aplicando spn_prefix=HOST...'
New-ItemProperty -Path $Key -Name 'spn_prefix' -PropertyType String -Value 'HOST' -Force | Out-Null
Restart-Service WinRM -Force
} else {
Write-Host 'spn_prefix já está definido como HOST.'
}
Teste opcional
$collector = '<ColetorFQDN>'
try {
Test-WSMan -ComputerName $collector -Authentication Kerberos -ErrorAction Stop | Out-Null
Write-Host "Conectividade WinRM/Kerberos OK com $collector"
} catch {
Write-Warning $_.Exception.Message
}
Erros relacionados e como interpretá-los
Código (hex) | Contexto | Interpretação prática | Rota de ação |
---|---|---|---|
0x80090322 | SSPI/Kerberos | Nome principal do serviço incorreto (SPN não casa com o destino). | Forçar HOST no cliente WinRM ou registrar WSMAN no objeto correto. |
Genérico | WinRM | Mensagens como “unknown security error” podem mascarar problemas de SPN, tempo ou política. | Seguir o roteiro de DNS/tempo/SPN; limpar tickets com klist purge . |
Checklist final
- DNS direto/reverso consistente para o coletor.
- Tempo sincronizado (NTP) e membros no mesmo domínio/realms confiáveis.
- Portas 5985/5986 liberadas e inspeções que não quebrem Kerberos.
- Sem SPN duplicado para o coletor (
setspn -X -F
limpo). spn_prefix=HOST
aplicado nos sources (via script ou GPO).Test-WSMan
com Kerberos bem-sucedido.- Assinaturas WEF ativas e eventos fluindo.
Conclusão
O Event ID 105 no WEF com falhas WinRM/Kerberos é, na maioria dos casos, um sintoma de mapeamento SPN inconsistente entre o que o cliente pede e o que o AD conhece. A definição de spn_prefix="HOST"
no cliente WinRM elimina essa discrepância sem sacrificar a segurança, pois utiliza um SPN nativo das contas de computador. Combine isso com boas práticas de DNS, tempo e rede, e seu pipeline de logs volta a fluir com estabilidade.
Nota de campo: embora seja possível “consertar” criando manualmente o SPN WSMAN/<FQDN>
no objeto de computador do coletor, padronizar o uso de HOST tende a reduzir incidentes futuros — especialmente em ambientes com múltiplos aliases, balanceamento ou mudanças frequentes de nomes.