Résoudre l’erreur WinRM/WEF Event ID 105 en mode Source‑Initiated (Windows Event Forwarding)

Vous déployez Windows Event Forwarding en mode source‑initiated et vos serveurs refusent d’envoyer les journaux vers un collecteur Windows 10. L’erreur WinRM Event ID 105 signale une URL non disponible. Voici un guide concret pour corriger rapidement et durablement ce blocage.

Sommaire

Erreur WinRM/WEF en mode Source‑Initiated

Vue d’ensemble du scénario

Objectif : acheminer des journaux (dont Security) d’un serveur Windows (forwarder) vers un poste Windows 10 (collector) au sein du même domaine, via Windows Event Forwarding (WEF) en mode source‑initiated. Malgré l’activation de WinRM, l’ouverture du port 5985/TCP et la création d’une souscription côté collecteur, le forwarder remonte l’Event ID 105 lors de la tentative de connexion à :

http://<collector>:5985/wsman/SubscriptionManager/WEC

Symptôme typique et message exact

Sur le forwarder, le journal Microsoft > Windows > WinRM > Operational affiche :

Event ID: 105
Level: Error
Message: The WinRM client sent a request to an HTTP server and got a response.
    The requested HTTP URL was not available.
    URL: http://<collector>:5985/wsman/SubscriptionManager/WEC

Important : WEF/WinRM n’utilise pas IIS. L’installation ou la configuration d’IIS (sites, bindings, certificats IIS) n’a aucun impact sur l’URL /wsman/SubscriptionManager/WEC et ne résout pas l’ID 105.

Diagnostic rapide

L’ID 105 signifie que le collecteur répond bien en HTTP (le port 5985 est joignable), mais que l’URL /wsman/SubscriptionManager/WEC n’est pas enregistrée côté WinRM/WEC. Les causes les plus fréquentes :

  • Le service Windows Event Collector (Wecsvc) n’a pas été initialisé (plugin non enregistré).
  • Absence de listener WinRM HTTP actif sur le collecteur.
  • GPO « Configure target Subscription Manager » mal formatée (ex. oubli de Server=, FQDN incorrect, retour à la ligne intempestif).
  • Proxy WinHTTP configuré (ou auto‑détecté) qui intercepte la requête.

Rappel d’architecture

En mode source‑initiated, chaque machine source (forwarder) contacte périodiquement un collector et « s’abonne » via l’URL WEC exposée par WinRM. La souscription WEF, créée sur le collecteur, définit les filtres d’événements et la cible (groupe AD) des machines autorisées à pousser les journaux. L’authentification par défaut en domaine est Kerberos ; elle nécessite un FQDN résolu et une horloge synchronisée.

Procédure de résolution

Sur le collecteur Windows 10

  1. Initialiser WEC et WinRM wecutil qc winrm quickconfig
    • Vérifiez que Wecsvc est en Automatique (démarrage différé) et En cours d’exécution.
    • Validez la présence d’un listener HTTP :
    winrm enumerate winrm/config/listener # ou Test-WSMan localhost
  2. Contrôler les journaux du collecteur
    • Event Viewer > Applications and Services Logs > Microsoft > Windows > EventCollector > Operational : vérifiez l’initialisation sans erreurs et l’enregistrement du plugin WEC.
    • Si nécessaire, redémarrez Wecsvc puis réexécutez wecutil qc pour réinitialiser la configuration minimale.

Sur le forwarder Windows Server

  1. Valider la GPO « Configure target Subscription Manager » La valeur doit être sur une seule ligne et précédée de Server= : Server=http://DESKTOP-0W48R8S.DC46.com:5985/wsman/SubscriptionManager/WEC,Refresh=10
    • Utilisez le FQDN du collecteur (résolution DNS OK).
    • Appliquez la GPO : gpupdate /force ou gpresult /h c:\temp\rsop.html pour vérifier l’application.
  2. Tester la connectivité WinRM Test-WSMan DESKTOP-0W48R8S.DC46.com -Port 5985 En cas d’échec, vérifiez DNS, pare‑feu (règle entrante Windows Remote Management (HTTP‑In) sur le collecteur), routage et présence du listener HTTP côté collecteur.
  3. Écarter tout proxy WinHTTP netsh winhttp show proxy netsh winhttp reset proxy Le forwarder utilise l’API WinHTTP, pas les paramètres proxy du navigateur ; un proxy système peut provoquer l’ID 105.
  4. Suivre les journaux WinRM du forwarder Event Viewer > Applications and Services Logs > Microsoft > Windows > WinRM > Operational : l’ID 105 doit disparaître dès que l’URL devient disponible.

Exemples de chaînes GPO valides et invalides

ExempleStatutCommentaire
Server=http://collector.domaine.local:5985/wsman/SubscriptionManager/WEC,Refresh=60ValideUne seule ligne, FQDN utilisé, port explicite.
http://collector.domaine.local:5985/wsman/SubscriptionManager/WECInvalideManque le préfixe Server=.
Server=http://collector/wsman/SubscriptionManager/WECÀ éviterNom court ; utilisez le FQDN pour Kerberos.
Server=http://collector:5985/wsman/SubscriptionManager/WEC, Refresh=60InvalideRetour à la ligne au milieu de la valeur ; la chaîne doit rester sur une seule ligne.
Server=http://col1:5985/wsman/SubscriptionManager/WEC,Refresh=60
Server=http://col2:5985/wsman/SubscriptionManager/WEC,Refresh=60
ValidePlusieurs collecteurs : une ligne par serveur, chacune commençant par Server=.

Vérifications détaillées

Vérifier et (ré)créer un listener WinRM

Si aucun listener n’apparaît :

# Vérifier
winrm enumerate winrm/config/listener

# Créer un listener HTTP si absent

winrm create winrm/config/Listener?Address=\*+Transport=HTTP </code></pre>

<p>Vous pouvez également «&nbsp;réparer&nbsp;» WinRM&nbsp;:</p>
<pre><code class="language-bat">winrm quickconfig -q
sc config Wecsvc start= delayed-auto
net start Wecsvc
</code></pre>

<h3>Redémarrer proprement le pipeline WEF</h3>
<pre><code class="language-bat">net stop Wecsvc
net start Wecsvc
wecutil qc
</code></pre>

<h3>Tester le chemin WSMan depuis le forwarder</h3>
<pre><code class="language-powershell"># Test basique
Test-WSMan -ComputerName DESKTOP-0W48R8S.DC46.com -Port 5985

# Diagnostic détaillé (renvoie l'identité WSMan)

winrm id -r\:DESKTOP-0W48R8S.DC46.com -url:[http://DESKTOP-0W48R8S.DC46.com:5985/wsman](http://DESKTOP-0W48R8S.DC46.com:5985/wsman) </code></pre>

<h3>État des services et règles pare‑feu</h3>
<table>
  <thead>
    <tr>
      <th>Composant</th>
      <th>Collecteur</th>
      <th>Forwarder</th>
      <th>Vérification</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Service WEC (<code>Wecsvc</code>)</td>
      <td>Actif, Auto différé</td>
      <td>N/A</td>
      <td><code>Get-Service Wecsvc</code></td>
    </tr>
    <tr>
      <td>Service WinRM</td>
      <td>Actif</td>
      <td>Actif</td>
      <td><code>Get-Service WinRM</code></td>
    </tr>
    <tr>
      <td>Pare‑feu 5985/TCP</td>
      <td>Entrant autorisé</td>
      <td>Sortant autorisé</td>
      <td>Règle «&nbsp;Windows Remote Management (HTTP‑In)&nbsp;»</td>
    </tr>
    <tr>
      <td>DNS / SPN Kerberos</td>
      <td>FQDN enregistré</td>
      <td>FQDN résolu</td>
      <td><code>ping -a &lt;ip-collector&gt;</code> / <code>nltest /dsgetdc:&lt;domaine&gt;</code></td>
    </tr>
  </tbody>
</table>

<h2>Pièges fréquents et corrections ciblées</h2>

<h3>Proxy WinHTTP</h3>
<p>Un proxy système (ou WPAD) peut détourner les requêtes WSMan. Sur les forwarders, neutralisez-le pour le trafic interne :</p>
<pre><code class="language-bat">netsh winhttp show proxy
netsh winhttp reset proxy
</code></pre>
<p>Si un proxy est imposé, déclarez des exceptions <em>Bypass</em> pour le FQDN du collecteur ou pour le domaine interne.</p>

<h3>Nom d’hôte et Kerberos</h3>
<p>Utilisez <strong>toujours</strong> le FQDN dans la GPO <em>Subscription Manager</em>. Un nom court peut échouer (SPN non concordant) et déclencher des erreurs d’authentification (401/HTTP) ou des comportements aléatoires.</p>

<h3>Confusion avec IIS</h3>
<p>Le chemin <code>/wsman/SubscriptionManager/WEC</code> est exposé par le service <em>WinRM</em> lorsque <em>Wecsvc</em> est initialisé. Installer ou configurer IIS n’apporte rien ici. Concentrez‑vous sur <code>wecutil qc</code> et le listener WinRM.</p>

<h3>Règles d’accès au journal Security</h3>
<p>Le forwarder lit <em>localement</em> son journal <strong>Security</strong> puis envoie les événements. <strong>Il n’est pas nécessaire</strong> d’ajouter <em>Network Service</em> au groupe <em>Event Log Readers</em> sur le collecteur pour l’acheminement. Le besoin d’ajuster les permissions du canal <em>Security</em> se traite <em>sur la machine source</em> si vos politiques d’audit l’exigent, mais ce point n’est pas en cause dans l’ID&nbsp;105.</p>

<h2>Alternative sécurisée avec WinRM HTTPS</h2>

<h3>Pourquoi passer en HTTPS</h3>
<p>HTTPS (<strong>5986/TCP</strong>) chiffre le transport et autorise un verrouillage Kerberos/PKI plus strict (exigence d’une CA spécifique via <code>IssuerCA=</code>).</p>

<h3>Étapes clés</h3>
<ol>
  <li>
    <p><strong>Préparer un certificat serveur</strong> sur le collecteur (clé privée exportable, EKU «&nbsp;Server Authentication&nbsp;», <em>Subject/SAN</em> = FQDN du collecteur). Assurez l’accès de <em>NETWORK SERVICE</em> à la clé privée.</p>
  </li>
  <li>
    <p><strong>Créer le listener HTTPS</strong></p>
    <pre><code class="language-powershell">$thumb = '&lt;Thumbprint-certificat&gt;'
winrm create winrm/config/Listener?Address=*+Transport=HTTPS "@{Hostname='DESKTOP-0W48R8S.DC46.com'; CertificateThumbprint='$thumb'}"
</code></pre>
  </li>
  <li>
    <p><strong>Adapter la GPO</strong></p>
    <pre><code>Server=https://DESKTOP-0W48R8S.DC46.com:5986/wsman/SubscriptionManager/WEC,Refresh=60,IssuerCA=&lt;Thumbprint-ou-SubjectName-CA&gt;

Ouvrir le port et tester

Test-WSMan DESKTOP-0W48R8S.DC46.com -UseSSL

Tableau d’aide rapide des codes HTTP WinRM

CodeSignificationPiste de résolution
404 / ID 105URL non disponibleExécuter wecutil qc sur le collecteur, vérifier le listener, corriger GPO.
401Non autoriséKerberos : utiliser FQDN, vérifier l’heure NTP, SPN, politiques NTLM.
403InterditLa machine source n’est pas dans la cible AD de la souscription ; vérifier Security sur la souscription.
407Proxy requisVérifier/réinitialiser WinHTTP (netsh winhttp reset proxy).
500Erreur interneJournal EventCollector/Operational du collecteur, réinitialiser WEC/WinRM.

Bonnes pratiques de configuration

  • Dans la souscription WEF du collecteur, ciblez un groupe AD d’ordinateurs (évitez les listes statiques).
  • Laissez l’authentification Kerberos par défaut en domaine (pas de TrustedHosts, évitez NTLM).
  • Organisez vos souscriptions par typologies (serveurs, postes, DC) pour limiter la charge du collecteur.
  • Surveillez la file d’attente WEF côté forwarders : Applications and Services Logs > Microsoft > Windows > Forwarding > Operational.
  • Ne lancez pas wecutil qc sur les forwarders (sauf si vous voulez en faire des collecteurs).

Dépannage avancé

Réinitialiser la configuration WinRM

# Sur le collecteur, en dernier recours
winrm invoke Restore winrm/Config @{}
winrm quickconfig -q
wecutil qc

Vérifier l’application des GPO

gpupdate /force
gpresult /h C:\Temp\rsop.html

Confirmez que la stratégie « Configure target Subscription Manager » est bien listée et que la chaîne respecte le format attendu.

Multi‑homing et cartes réseau

Sur un collecteur multi‑NIC, WinRM écoute par défaut sur toutes les adresses. En cas de routage spécifique, vous pouvez restreindre ou recréer un listener ciblé en précisant l’adresse IP dans la configuration de l’écoute.

Synchronisation de l’heure et Kerberos

Un décalage d’horloge > 5 minutes peut casser Kerberos. Assurez la synchronisation NTP sur DC, collecteur et forwarders. Si vous voyez des 401 intermitents, vérifiez aussi le canal sécurisé :

nltest /sc_verify:&lt;Domaine&gt;
klist purge

Checklist de validation

  • [ ] Test-WSMan OK depuis le forwarder vers le collecteur (5985 ou 5986).
  • [ ] Journal EventCollector/Operational sans erreur au démarrage du collecteur.
  • [ ] La souscription affiche le forwarder Actif ; des événements arrivent dans Forwarded Events.

FAQ express

Faut‑il ouvrir des ports sur le forwarder ? En général non côté entrant. Le forwarder initie la connexion sortante vers le collecteur (5985 / 5986).

Puis‑je utiliser l’adresse IP dans la GPO ? Déconseillé. Utilisez le FQDN pour éviter des échecs Kerberos.

Dois‑je installer un rôle ou une fonctionnalité supplémentaire ? Non. WEF et WinRM sont intégrés à Windows. Il suffit de les initialiser (wecutil qc et winrm quickconfig).

La souscription est Actif mais je ne reçois rien ? Vérifiez le filtre d’événements, la cible AD et, pour le journal Security, que la machine source génère bien les événements attendus (politiques d’audit).

En synthèse

Si vous rencontrez l’Event ID 105 en WEF source‑initiated, commencez par initialiser le collecteur (wecutil qc, winrm quickconfig), vérifiez le listener WinRM, corrigez la chaîne GPO (Server= sur une seule ligne avec FQDN), et écartez un proxy WinHTTP. Dans la plupart des environnements, ces actions rétablissent immédiatement l’URL /wsman/SubscriptionManager/WEC et font disparaître l’erreur 105.


Annexe : procédures prêtes à l’emploi

Playbook côté collecteur

:: 1) Initialisation
wecutil qc
winrm quickconfig -q

\:: 2) Démarrage/état des services
sc config Wecsvc start= delayed-auto
net start Wecsvc
sc query Wecsvc
sc query WinRM

\:: 3) Listener WinRM
winrm enumerate winrm/config/listener
winrm create winrm/config/Listener?Address=\*+Transport=HTTP

\:: 4) Journaux
wevtutil qe Microsoft-Windows-EventCollector/Operational /c:5 /rd\:true /f\:text 

Playbook côté forwarder

:: 1) Forcer l'application des GPO
gpupdate /force

\:: 2) Vérifier la chaîne Subscription Manager (RSOP)
gpresult /h C:\Temp\rsop.html

\:: 3) Test WinRM vers le collecteur
Test-WSMan DESKTOP-0W48R8S.DC46.com -Port 5985

\:: 4) Proxy WinHTTP
netsh winhttp show proxy
netsh winhttp reset proxy

\:: 5) Journal WinRM
wevtutil qe Microsoft-Windows-WinRM/Operational /c:10 /rd\:true /f\:text 

Modèle de souscription WEF minimal

Lors de la création d’une souscription, ciblez un groupe AD d’ordinateurs (ex. GG_WEFSources_Servers) dans « Sélectionner les ordinateurs ». Pour commencer, utilisez un filtre simple (ex. Application et System) puis élargissez vers Security une fois la connectivité validée.

Contrôles post‑remédiation

  • Le forwarder apparaît en État : Actif dans la souscription.
  • Des événements récents s’accumulent dans Forwarded Events du collecteur.
  • Le journal WinRM/Operational du forwarder ne montre plus d’ID 105.
Sommaire