Configurer DCOM pour OPC Classic sous Windows Server 2022 : guide complet et sécurisé

Vous rencontrez des difficultés de communication OPC Classic sur un serveur Windows Server 2022 ? Suivez ce guide pas à pas pour configurer correctement DCOM et sécuriser la connexion entre vos clients OPC et votre serveur, même après le durcissement appliqué par Microsoft.

Sommaire

Pourquoi DCOM est indispensable à OPC Classic

Les spécifications OPC DA, A&E et HDA reposent sur DCOM (Distributed Component Object Model) pour établir la session distante et transférer les données en temps réel. Sans un paramétrage précis des droits DCOM, le client ne peut ni lancer le composant COM du serveur OPC, ni appeler ses interfaces — d’où des erreurs fréquentes : “Access denied”, “The RPC server is unavailable”, 0x80070005, etc. Windows Server 2022 durcit encore la couche DCOM (KB5004442), rendant la configuration initiale plus exigeante qu’auparavant.

Prérequis avant de commencer

  • Droits administrateur sur le serveur OPC.
  • Versions identiques (ou compatibles) de la pile OPC côté client et serveur, mises à jour après mars 2023 pour intégrer le dernier durcissement DCOM.
  • Une adresse IP fixe (ou réservation DHCP) pour simplifier les règles pare‑feu.
  • Un compte de service dédié au serveur OPC, doté des droits SeServiceLogonRight et Log on as a service.

Procédure détaillée de configuration DCOM

ÉtapeActionObjectif
1Lancer DCOMCNFG (Win + R  → dcomcnfg)Accéder à Services de composants
2Ouvrir :
Composants > Ordinateurs > Mon ordinateur > DCOM Config, puis localiser l’application serveur OPC
Repérer le CLSID/ProgID du serveur
3Dans l’onglet Général, cocher « Exécuter cette application sur cet ordinateur »Forcer l’exécution locale
4Onglet Emplacement : laisser activée « Exécuter l’application sur cet ordinateur »Éviter un lancement distant non contrôlé
5Onglet Sécurité :
Autorisations de lancement et d’activation → Personnaliser > Modifier → ajouter groupes/comptes OPC, cocher Lancement local/distant & Activation locale/distance
Autorisations d’accès : même principe, cocher Accès local/distant
Accorder explicitement les droits aux comptes / services OPC
6Onglet Identité : sélectionner le compte de service dédié (ou Utilisateur interactif pour un test local)Définir le contexte d’exécution
7Onglet Niveau d’authentification : choisir Connect (ou supérieur)Garantir une authentification DCOM suffisante
8Pare‑feu Windows : ouvrir TCP 135 + la plage dynamique 49152‑65535, ou définir une plage restreinte (ex. 6000‑6100) via :
HKLM\Software\Microsoft\Rpc\Internet
Autoriser la conversation RPC/DCOM
9Paramètres DCOM globaux (Services de composants > Propriétés de « Mon ordinateur » > Propriétés DCOM) :
✔ Activer DCOM
✔ Niveau d’authentification par défaut : Connect
✔ Usurpation par défaut : Identify
Cohérence des valeurs système
10Redémarrer le service OPC (ou le serveur en cas de changement global)Appliquer la nouvelle configuration

Focus : restreindre proprement la plage de ports DCOM

Limiter les ports simplifie grandement l’ouverture pare‑feu ; voici un exemple de script PowerShell :

# Plage DCOM fixe 6000‑6100
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Rpc\Internet' `
    -Name 'Ports' -PropertyType MultiString -Value ('6000-6100')

New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Rpc\Internet' `
    -Name 'PortsInternetAvailable' -PropertyType String -Value 'Y'

New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Rpc\Internet' `
    -Name 'UseInternetPorts' -PropertyType String -Value 'Y'

# Ouvrir la plage dans le pare‑feu
New-NetFirewallRule -DisplayName 'DCOM OPC 6000‑6100' `
    -Direction Inbound -Action Allow -Protocol TCP -LocalPort 6000-6100

Pensez à désactiver ou à ajuster toute règle temporaire une fois la recette terminée.

Impact du durcissement DCOM (KB5004442)

Depuis le 14 mars 2023, Microsoft exige un niveau d’authentification renforcé ; si l’un de vos clients OPC date d’avant cette mise à jour, la connexion risque d’échouer. Deux approches :

  1. Mettre à jour le client OPC : solution pérenne.
  2. À titre transitoire, désactiver le durcissement en créant RequireIntegrityActivationAuthenticationLevel=0 sous
    HKLM\SOFTWARE\Microsoft\Ole\AppCompat. Ne laissez jamais cette clé en production ; retirez-la dès que le client est mis à jour.

Validation de la configuration

Tests locaux

  • Lancez un OPC Test Client sur le même serveur ; s’il se connecte, la couche DCOM fonctionne localement.
  • Dans l’Observateur d’événements : Applications et services > Journal Microsoft > Windows > DCOM, vérifiez l’absence d’erreurs 10016/10036.

Tests distants

  • Depuis un poste client, ouvrez les ports avec telnet <ip_serveur> 135 puis un port de la plage dynamique configurée.
  • Lancez l’outil OPCEnum pour vérifier la résolution des ProgIDs à travers le réseau.
  • Connectez‑vous via l’OPC Test Client et surveillez le trafic dans l’Event Viewer du serveur : toute erreur doit disparaître.

Dépannage avancé

SymptômePiste de résolutionCommentaires
Erreur 0x80070005 (E_ACCESSDENIED)Revérifiez onglet Sécurité (lancement/accès) et appartenance au groupe OPCUsersSouvent causé par un compte de service mal ajouté
RPC server unavailablePorts 135 ou plage RPC fermés, ou résolution DNS incorrecteProcéder à un ping puis telnet
Connexion OK locale, KO distantePare‑feu tiers ou IPS bloquant les ports dynamiquesContrôler la politique antivirus/EDR
Erreur 10036 dans le journal DCOMClient non mis à jour vis‑à‑vis du durcissement KB5004442Appliquer la clé temporaire ou patcher le client

Sécurité et bonnes pratiques

  • Principe du moindre privilège : n’accordez qu’aux comptes nécessaires les droits de lancement et d’accès.
  • Regroupez les utilisateurs dans un groupe AD (ex. OPCUsers) pour simplifier la maintenance des ACL.
  • Tracez les accès : activez l’audit Logon / Logoff et Object Access pour les événements COM.
  • Documentez toute modification : capture d’écran des ACL, export du registre avant/après, etc.
  • Privilégiez OPC UA pour les nouveaux projets ; DCOM reste requis pour le legacy, mais OPC UA élimine ces problématiques réseau tout en chiffrant nativement les échanges.

Automatiser la configuration avec PowerShell

Pour déployer rapidement le même paramétrage sur plusieurs serveurs 2022, vous pouvez encapsuler les actions DCOM dans un script PowerShell utilisant Set-Permission (module Carbon) ou SetACL.exe. Exemple simplifié :

$app = Get-CimInstance -ClassName Win32_DCOMApplicationSetting `
       | Where-Object { $_.Description -like '*MonServeurOPC*' }

# Activer l’exécution locale
$app.LocalService = 'OPCServiceAccount'
$app.ActivationUseRemote = $false
Set-CimInstance -InputObject $app

# Droits de lancement/accès via DCOMPerm.exe (Windows SDK) ou SetACL

Un tel script, versionné dans Git, garantit la traçabilité et réduit les erreurs humaines.

FAQ rapide

Faut‑il vraiment redémarrer le serveur après chaque changement ?

Pas toujours : une simple relance du service OPC suffit si vous n’avez modifié que l’application. En revanche, après modification des paramètres DCOM globaux ou de la plage RPC, un redémarrage complet s’impose.

Puis‑je utiliser une connexion VPN pour sécuriser DCOM ?

Oui. Un tunnel VPN chiffré réduit l’exposition réseau, mais n’annule pas la nécessité d’ouvrir les ports DCOM à l’intérieur du tunnel.

OPC Enum doit‑il rester activé ?

Pour des raisons de sécurité, certains administrateurs désinstallent OPCEnum et spécifient le CLSID directement dans le client. C’est possible, mais plus complexe à maintenir. Gardez OPCEnum si votre environnement le permet et limitez les droits d’accès via DCOM.

Conclusion

Une configuration DCOM rigoureuse demeure la clé du succès pour tout projet OPC Classic sur Windows Server 2022. En appliquant les étapes détaillées ci‑dessus — création d’un compte de service, réglage minutieux des ACL, restriction de la plage de ports et vérification post‑KB5004442 — vous éliminerez 90 % des problèmes de connexion. Documentez chaque action, automatisez‑la dès que possible et prévoyez à moyen terme la migration vers OPC UA afin de tirer parti d’une couche de transport moderne, sécurisée et indépendante de DCOM.

Sommaire