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.
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
- 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
- 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écutezwecutil qc
pour réinitialiser la configuration minimale.
Sur le forwarder Windows Server
- 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
ougpresult /h c:\temp\rsop.html
pour vérifier l’application.
- 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. - É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. - 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
Exemple | Statut | Commentaire |
---|---|---|
Server=http://collector.domaine.local:5985/wsman/SubscriptionManager/WEC,Refresh=60 | Valide | Une seule ligne, FQDN utilisé, port explicite. |
http://collector.domaine.local:5985/wsman/SubscriptionManager/WEC | Invalide | Manque le préfixe Server= . |
Server=http://collector/wsman/SubscriptionManager/WEC | À éviter | Nom court ; utilisez le FQDN pour Kerberos. |
Server=http://collector:5985/wsman/SubscriptionManager/WEC, Refresh=60 | Invalide | Retour à 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 | Valide | Plusieurs 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 « réparer » WinRM :</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 « Windows Remote Management (HTTP‑In) »</td>
</tr>
<tr>
<td>DNS / SPN Kerberos</td>
<td>FQDN enregistré</td>
<td>FQDN résolu</td>
<td><code>ping -a <ip-collector></code> / <code>nltest /dsgetdc:<domaine></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 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 « Server Authentication », <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 = '<Thumbprint-certificat>'
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=<Thumbprint-ou-SubjectName-CA>
Ouvrir le port et tester
Test-WSMan DESKTOP-0W48R8S.DC46.com -UseSSL
Tableau d’aide rapide des codes HTTP WinRM
Code | Signification | Piste de résolution |
---|---|---|
404 / ID 105 | URL non disponible | Exécuter wecutil qc sur le collecteur, vérifier le listener, corriger GPO. |
401 | Non autorisé | Kerberos : utiliser FQDN, vérifier l’heure NTP, SPN, politiques NTLM. |
403 | Interdit | La machine source n’est pas dans la cible AD de la souscription ; vérifier Security sur la souscription. |
407 | Proxy requis | Vérifier/réinitialiser WinHTTP (netsh winhttp reset proxy ). |
500 | Erreur interne | Journal 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:<Domaine>
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.