Segmentation du réseau OT avec les zones et conduits ISA-99 : Guide pratique Schneider M580 et Bachmann M1

Le vrai problème des réseaux OT plats
La plupart des usines industrielles construites avant 2015 fonctionnent avec un réseau Ethernet plat où le automate programmable Schneider Electric Modicon M580, le contrôleur d’automatisation Bachmann M1, l’historien SCADA et l’ERP d’entreprise partagent le même domaine de diffusion de couche 2. Premièrement, cela signifie qu’une attaque par ransomware qui entre par le réseau d’entreprise atteint le CPU M580 sans passer par aucun point de contrôle d’accès. Deuxièmement, une station de travail mal configurée diffusant des tempêtes ARP peut saturer le port Ethernet CPU M580 BM•P 58•2020 — le port Ethernet CPU M580 traite les ARP au niveau logiciel avec un plafond de 500 paquets par seconde. Troisièmement, les exploits de protocole ciblant le port Modbus TCP 502 ou EtherNet/IP port 44818 circulent librement sur le réseau plat. Par conséquent, l’architecture de zones et conduits ISA-99 / IEC 62443 n’est pas optionnelle — c’est le seul cadre éprouvé qui ajoute une protection au niveau réseau sans perturber la stratégie de contrôle.
Architecture de zones et conduits ISA-99 : définir la structure
ISA-99 (IEC 62443-3-3) divise le réseau industriel en Niveaux de Sécurité (SL) et assigne les équipements à des zones selon la gravité d’une compromission. Premièrement, définissez vos zones avant de toucher à la configuration des commutateurs. Deuxièmement, identifiez chaque appareil du réseau de l’usine et assignez-le à l’une des quatre zones :
- Zone 1 — Sécurité (SIL) : uniquement les automates de sécurité. Pour la plupart des usines, cela inclut les systèmes ICS Triplex ou Triconex TMR. Aucun trafic à usage général n’entre dans cette zone. Le conduit vers la Zone 2 autorise uniquement Modbus TCP en lecture seule pour l’affichage SCADA.
- Zone 2 — Contrôle (SL-2) : CPUs Schneider M580, contrôleurs Bachmann M1, réseaux E/S, gestion des équipements terrain. Le trafic EtherNet/IP et Modbus TCP reste à l’intérieur de cette zone. L’accès externe se fait uniquement via le conduit IDMZ.
- Zone 3 — Supervision (SL-1) : serveurs SCADA, historien DCS, postes opérateurs. Cette zone accède à la Zone 2 via un conduit défini à travers un pare-feu à état — pas une connexion plate.
- Zone 4 — Entreprise (SL-0) : ERP d’entreprise, Active Directory, serveurs de messagerie. Aucun accès direct à la Zone 2 ou Zone 1. Tous les échanges de données passent uniquement par l’IDMZ.
De plus, la DMZ industrielle (IDMZ) se situe entre la Zone 3 et la Zone 4. L’IDMZ contient les serveurs de réplication de données — OSIsoft PI, Wonderware Historian ou passerelle OPC DA/UA. Aucun trafic ne traverse l’IDMZ de bout en bout — les Zones 3 et 4 se connectent aux serveurs IDMZ mais jamais directement entre elles. C’est le principe fondamental de contrôle des frontières ISA-99.
Configuration VLAN et pare-feu pour réseaux Schneider M580
Le Schneider Modicon M580 utilise EtherNet/IP sur le port Ethernet backplane CPU (série BMEP58•020) et un port Ethernet dédié au réseau E/S pour les modules Ethernet RIO. Premièrement, assignez le port de gestion CPU au VLAN 20 (Zone de Contrôle) sur votre commutateur managé. Deuxièmement, assignez tous les E/S distants (modules BMECRA31210 RIO) au VLAN 21 (sous-zone E/S). Troisièmement, créez une ACL (liste de contrôle d’accès) sur le commutateur pour bloquer tout trafic entre le VLAN 21 et toute zone au-dessus du Niveau 2.
Sur un commutateur managé Cisco IE4000 ou Cisco IE3400, configurez le routage inter-VLAN avec ces règles de pare-feu :
- Étape 1 : Créez les VLAN 20 (Contrôle) et 21 (RIO). Assignez le port CPU M580 en mode accès VLAN 20. Assignez tous les ports des modules BMECRA31210 RIO en mode accès VLAN 21.
- Étape 2 : Appliquez une ACL sur l’interface VLAN 20 SVI : autorisez TCP de n’importe où vers 192.168.20.0/24 port 44818 (EtherNet/IP CIP). Autorisez TCP de n’importe où vers 192.168.20.0/24 port 502 (Modbus TCP). Refusez tout autre trafic IP avec journalisation. Cela permet uniquement aux protocoles requis d’atteindre le M580.
- Étape 3 : Bloquez tout accès externe au VLAN 21 au niveau du commutateur couche 3 — refusez IP de n’importe où vers 192.168.21.0/24. Le trafic RIO ne doit jamais être accessible depuis la Zone 3 ou la Zone 4.
- Étape 4 : Configurez le pare-feu à état entre la Zone 2 et la Zone 3 pour autoriser uniquement le port OPC UA 4840 du serveur SCADA vers la passerelle OPC UA de la Zone 3. Bloquez le port Modbus TCP 502 entre la Zone 3 et la Zone 2 — le SCADA lit la passerelle OPC UA, pas directement le M580.
- Étape 5 : Activez la sécurité des ports sur tous les ports commutateurs M580 et BMECRA — verrouillez sur l’adresse MAC de l’émetteur. Réglez le mode violation de sécurité des ports sur « restreindre » (pas « désactiver ») pour générer une alerte sans couper le réseau E/S.
Cependant, le port Ethernet CPU M580 ne supporte pas nativement le marquage VLAN 802.1Q — il fonctionne uniquement en port d’accès VLAN. Par conséquent, le commutateur doit gérer tout le marquage VLAN. C’est une contrainte courante de conception réseau M580 que les ingénieurs oublient souvent lors de la segmentation.
Segmentation du contrôleur Bachmann M1 et contrôle des frontières OPC UA
Les contrôleurs Bachmann M1 utilisent leur propre réseau Ethernet MIO (Modular I/O) sur une interface dédiée distincte du port de programmation. Premièrement, assignez le réseau MIO Bachmann M1 au VLAN 22 — séparé du VLAN de contrôle Schneider M580 20. Cela évite les tempêtes de diffusion inter-protocoles. Deuxièmement, Bachmann M1 supporte nativement la fonction serveur OPC UA dans son environnement de programmation SolutionCenter. Configurez le serveur OPC UA pour exposer uniquement les tags nécessaires à la Zone 3 — n’exposez pas l’ensemble de l’espace de noms des variables M1.
Dans Bachmann SolutionCenter, réglez le mode de sécurité OPC UA sur « SignAndEncrypt » et la politique de sécurité sur « Basic256Sha256 ». Refusez toutes les connexions anonymes — exigez une authentification par certificat. Cela correspond aux exigences du Niveau de Sécurité 2 IEC 62443-3-3 pour la Zone de Contrôle. De plus, configurez l’espace d’adressage du serveur OPC UA M1 pour publier uniquement les tags listés dans la liste approuvée des tags SCADA — utilisez la configuration Bachmann OPC UA NodeManager pour mettre en liste blanche des nœuds variables spécifiques. Bloquez tous les autres nœuds au niveau du serveur OPC UA, pas seulement au pare-feu.
- Étape 1 : Dans Bachmann SolutionCenter, accédez à la configuration du serveur OPC UA sous le module « Communication ».
- Étape 2 : Réglez le mode de sécurité sur « SignAndEncrypt ». Réglez la politique de sécurité sur « Basic256Sha256 ». Désactivez les politiques « None » et « Sign ».
- Étape 3 : Importez le certificat du serveur SCADA dans le magasin de certificats de confiance Bachmann M1. Seuls les clients SCADA munis d’un certificat peuvent se connecter.
- Étape 4 : Activez la fonction pare-feu Bachmann M1 — autorisez TCP 4840 (OPC UA) uniquement depuis l’adresse IP du serveur SCADA 192.168.30.10. Bloquez toutes les autres connexions entrantes sur le port OPC UA.
- Étape 5 : Configurez le délai d’expiration des sessions à 30 secondes. Toute session SCADA inactive pendant 30 secondes se ferme automatiquement — évite l’accumulation de sessions obsolètes dans la table de sessions M1.
- Étape 6 : Enregistrez tous les événements de connexion OPC UA dans le syslog Bachmann M1 — configurez le transfert syslog vers le serveur SIEM dans l’IDMZ pour la surveillance de sécurité.
Conception IDMZ : réplication des données sans traversée directe des zones
L’IDMZ contient exactement deux types de serveurs : le serveur de réplication historien et le serveur de saut d’accès distant. Premièrement, le relais OSIsoft PI ou Honeywell Uniformance PHD fonctionne dans l’IDMZ. L’historien de la Zone 3 pousse les données vers le relais IDMZ via le port TCP 5450 (interface PI-à-PI). L’historien d’entreprise de la Zone 4 récupère les données du relais IDMZ via le même port. Aucune donnée de processus ne circule directement entre la Zone 3 et la Zone 4. Deuxièmement, le serveur de saut d’accès distant dans l’IDMZ fournit un accès RDP pour les ingénieurs de maintenance. Configurez le serveur de saut pour autoriser les connexions RDP uniquement depuis un point d’accès VPN MFA approuvé — ne jamais autoriser un RDP direct de la Zone 4 vers la Zone 2 ou la Zone 1.
De plus, appliquez ces règles de pare-feu entre la Zone 4 et l’IDMZ : autorisez TCP 5450 (PI) uniquement du serveur historien Zone 4 vers le relais IDMZ. Refusez tout autre trafic de la Zone 4 vers l’IDMZ. Entre l’IDMZ et la Zone 3 : autorisez TCP 5450 du relais IDMZ vers l’historien Zone 3. Autorisez RDP (TCP 3389) du serveur de saut IDMZ vers les postes SCADA Zone 3 uniquement — avec MFA appliqué au point d’accès du serveur de saut.
Conclusion et conseils d’action
La segmentation en zones et conduits ISA-99 pour les réseaux Schneider M580 et Bachmann M1 est une tâche d’ingénierie, pas un projet de sécurité informatique. Premièrement, définissez vos quatre zones et dessinez le schéma des conduits avant de toucher à un commutateur. Deuxièmement, assignez les réseaux CPU M580 et MIO M1 à des VLAN dédiés avec des ACL bloquant tous les protocoles non requis. Troisièmement, appliquez OPC UA SignAndEncrypt sur Bachmann M1 et utilisez l’authentification par certificat dès le premier jour. Quatrièmement, construisez l’IDMZ comme un véritable relais de données — sans chemin direct entre la Zone 3 et la Zone 4. Cinquièmement, activez la sécurité des ports sur tous les ports commutateurs VLAN de contrôle pour empêcher les connexions d’appareils non autorisés. Enfin, testez votre segmentation en tentant un scan de ports depuis un poste Zone 4 vers les adresses Zone 2 — si vous voyez des ports ouverts sur le M580 ou M1 depuis la Zone 4, vos règles de conduits sont incomplètes. Corrigez chaque port ouvert avant de déclarer la segmentation terminée.
