# SPDX-License-Identifier: CC-BY-4.0
#
# profiles/enterprise_virtualization_manager/fiche.yaml
# Fiche NeuralWall — Gestionnaire de virtualisation d'entreprise
#
# Scénario générique (vendor-agnostic, invariant 3) : une appliance logicielle centrale
# gère un parc d'hyperviseurs hébergés sur des serveurs physiques. Elle expose une
# interface web et une API REST à des administrateurs, orchestre la configuration et le
# cycle de vie des hyperviseurs gérés, et joint un service éditeur sur Internet pour
# télécharger les mises à jour et patches. Aucune marque ni nom de produit n'apparaît
# dans le contenu normatif. Les rôles (gestionnaire de virtualisation, hyperviseur géré,
# service de provisioning réseau, service de cycle de vie/patch, service de réplication,
# service de supervision) sont décrits fonctionnellement. Consulter docs/control-taxonomy.md
# pour le vocabulaire canonique.

# ─────────────────────────────────────────────────
# FRONTMATTER
# ─────────────────────────────────────────────────

schema_version: "1.0.0"

id: enterprise_virtualization_manager

version: "1.0.0"

# community : contribution non encore revue par un mainteneur (ADR-0002 §3).
trust_tier: community

title:
  fr: "Gestionnaire de virtualisation d'entreprise"
  en: "Enterprise virtualization manager"

description:
  fr: |
    Ce scénario couvre les flux réseau d'une appliance centrale de gestion de
    virtualisation qui orchestre un parc d'hyperviseurs. L'appliance expose une
    interface web HTTPS et une API REST aux administrateurs (accès de gestion) ainsi
    qu'une interface d'administration de l'appliance elle-même sur un port dédié.
    Elle pilote les hyperviseurs gérés via un canal de gestion bidirectionnel, résout
    DNS et synchronise son horloge via NTP. Des services conditionnels couvrent le
    provisioning réseau des hyperviseurs, la gestion du cycle de vie et le patch des
    hôtes, la réplication, la supervision SNMP et la collecte de logs. Un flux sortant
    vers Internet permet le téléchargement sécurisé des mises à jour. Le protocole de
    gestion en clair hérité (non chiffré) est bloqué en durcissement. La provenance
    (produit éditeur d'origine) est documentée dans la section Sources.
  en: |
    This scenario covers the network flows of a central virtualization management
    appliance that orchestrates a pool of hypervisors. The appliance exposes an HTTPS
    web UI and REST API to administrators (management access) as well as a dedicated
    appliance administration interface on a separate port. It drives managed hypervisors
    via a bidirectional management channel, resolves DNS and synchronises its clock via
    NTP. Conditional services cover network provisioning of hypervisors, host lifecycle
    management and patching, replication, SNMP monitoring, and log collection. An
    outbound flow to the Internet enables secure download of updates. The legacy
    clear-text management protocol is blocked as a hardening measure. Provenance
    (original vendor product) is documented in the Sources section.

authors:
  - name: "NeuralWall Rules Team"
    email: "rules@neuralwall.io"
    org: "NeuralWall"

# references : PROVENANCE de la fiche. C'est le SEUL emplacement où une marque ou un
# nom de produit propriétaire est admis (invariant 3) — pour permettre de retrouver et
# vérifier la source. Le contenu normatif des règles ci-dessous reste vendor-agnostic.
references:
  - vendor: "Broadcom"
    product: "vCenter Server 9.0"
    title: "Required Ports for vCenter Server"
    url: "https://ports.broadcom.com"
    retrieved: "2026-06-18"
    # endpoints : domaines de mise à jour documentés par la source (provenance vérifiable).
    # NON normatif — à reporter en url_filtering.allow_list (règle sur les mises à jour)
    # au déploiement. Le domaine dl.broadcom.com requiert un token d'authentification
    # spécifique au compte support ; exclure ce flux du SSL/DPI inspection (KB 431697).
    # Les anciens domaines (depot.vmware.com, hostupdate.vmware.com, vapp-updates.vmware.com)
    # sont retirés depuis le 23 avril 2025 (retournent HTTP 403) — ne plus les autoriser.
    endpoints:
      - "dl.broadcom.com"
      - "vcsa.vmware.com"
  - vendor: "Broadcom"
    product: "vCenter Server"
    title: "KB 431697 — Configuring SSL inspection exclusion for update repository"
    url: "https://knowledge.broadcom.com/external/article?legacyId=431697"
    retrieved: "2026-06-18"
  - vendor: "Broadcom"
    product: "vCenter Server"
    title: "KB 390098 — Migration des dépôts de mises à jour (depot/hostupdate/vapp-updates.vmware.com retirés)"
    url: "https://knowledge.broadcom.com/external/article?legacyId=390098"
    retrieved: "2026-06-18"
  - vendor: "Broadcom"
    product: "vCenter Server"
    title: "KB 320264 — Ports utilisés par vSphere Lifecycle Manager"
    url: "https://knowledge.broadcom.com/external/article?legacyId=320264"
    retrieved: "2026-06-18"
  - vendor: "Broadcom"
    product: "vCenter Server"
    title: "KB 326184 — Ports requis vCenter Server (toutes versions)"
    url: "https://knowledge.broadcom.com/external/article?legacyId=326184"
    retrieved: "2026-06-18"
  - vendor: "Broadcom"
    product: "vCenter Server"
    title: "KB 313945 — Configuration NTP sur l'appliance de gestion"
    url: "https://knowledge.broadcom.com/external/article?legacyId=313945"
    retrieved: "2026-06-18"

# ─────────────────────────────────────────────────
# THREAT CONTEXT — Champs AUTEURÉS (invariant 5, ADR-0002 §2)
# ─────────────────────────────────────────────────

mitre_attack:
  # T1190 : l'interface web/API du gestionnaire est exposée aux administrateurs ;
  # une vulnérabilité applicative permet un accès initial non authentifié.
  - technique_id: "T1190"
    name: "Exploit Public-Facing Application"
    tactic: "initial-access"

  # T1210 : depuis le gestionnaire compromis, pivot vers les hyperviseurs gérés via
  # le canal de gestion bidirectionnel (port de gestion de l'hyperviseur).
  - technique_id: "T1210"
    name: "Exploitation of Remote Services"
    tactic: "lateral-movement"

  # T1195.002 : le canal de téléchargement des mises à jour / patches est un vecteur
  # de chaîne d'approvisionnement (paquet malveillant injecté ou substitué).
  - technique_id: "T1195.002"
    name: "Compromise Software Supply Chain"
    tactic: "initial-access"

  # T1078 : utilisation d'identifiants valides (comptes d'administration) pour accéder
  # à l'interface de gestion ou à l'interface d'administration de l'appliance.
  - technique_id: "T1078"
    name: "Valid Accounts"
    tactic: "defense-evasion"

  # T1133 : accès à distance via SSH activé sur l'appliance, vecteur d'accès initial
  # ou de persistance si le service n'est pas désactivé après maintenance.
  - technique_id: "T1133"
    name: "External Remote Services"
    tactic: "initial-access"

threat_model:
  summary:
    fr: |
      Le gestionnaire de virtualisation est un point de contrôle unique sur l'ensemble
      du parc d'hyperviseurs : sa compromission donne accès aux charges de travail de
      toutes les machines virtuelles hébergées. Trois surfaces d'attaque dominent.
      (1) L'interface web/API (T1190, T1078) : exploits applicatifs ou vol d'identifiants
      administrateurs permettent un accès initial, suivi d'un pivot vers les hyperviseurs
      gérés (T1210). (2) Le canal de mises à jour Internet (T1195.002) : un paquet de
      mise à jour malveillant peut compromettre à la fois le gestionnaire et tous les
      hyperviseurs qu'il pilote — vecteur de supply chain à très large rayon d'impact.
      (3) L'accès SSH de maintenance (T1133) : s'il reste activé après intervention,
      il expose un accès shell direct à l'appliance depuis le réseau de gestion.
      La segmentation de zone (management), l'inspection entrante et sortante (TLS),
      et la restriction des groupes d'identité réduisent ces surfaces.
    en: |
      The virtualization manager is a single control point over the entire hypervisor
      fleet: its compromise grants access to workloads on all hosted virtual machines.
      Three attack surfaces dominate. (1) The web/API interface (T1190, T1078):
      application exploits or stolen administrator credentials provide initial access,
      followed by a pivot to managed hypervisors (T1210). (2) The Internet update
      channel (T1195.002): a malicious update package can compromise both the manager
      and all the hypervisors it drives — a supply-chain vector with a very wide blast
      radius. (3) The SSH maintenance access (T1133): if left enabled after a
      maintenance window, it exposes a direct shell to the appliance from the management
      network. Zone segmentation (management), inbound/outbound TLS inspection, and
      identity group restrictions reduce these surfaces.
  attacker_goal:
    fr: |
      Obtenir le contrôle du gestionnaire de virtualisation pour pivoter vers les
      hyperviseurs gérés et compromettre les charges de travail ou établir une
      persistance à l'échelle du parc.
    en: |
      Gain control of the virtualization manager to pivot to managed hypervisors
      and compromise workloads or establish fleet-wide persistence.
  key_controls:
    - management_zone_segmentation
    - ssl_inbound_inspection
    - ssl_forward_proxy
    - identity_user_group_restriction
    - block_cleartext_management
    - update_sandboxing
    - ssh_restricted_access

# ─────────────────────────────────────────────────
# RULES
#
# RÈGLES OBLIGATOIRES (services structurellement requis) :
#   1. Entrant  : UI/API HTTPS — administrateurs vers le gestionnaire (443)
#   2. Entrant  : Interface d'administration de l'appliance HTTPS (5480)
#   3. Entrant  : HTTP → redirect HTTPS (80)
#   4. Interne  : gestionnaire <-> hyperviseurs gérés — canal de gestion (902, 443)
#   5. Interne  : dépendance DNS (53 UDP+TCP)
#
# RÈGLES CONDITIONNELLES (service actif requis — rationale explicite) :
#   6. Interne  : synchronisation NTP (123 UDP) — si NTP direct activé
#   7. Entrant  : SSH d'administration (22 TCP) — si SSH activé sur l'appliance
#   8. Entrant  : provisioning réseau des hyperviseurs — service de boot réseau (6501, 6502)
#   9. Entrant  : boot réseau PXE legacy — TFTP (69 UDP) — si boot PXE activé
#  10. Interne  : service de cycle de vie/patch des hôtes — HTTPS (9087)
#  11. Interne  : service de cycle de vie/patch héritage — HTTP (9084, 8083)
#  12. Interne  : service de réplication — management SOAP (8043)
#  13. Interne  : supervision SNMP — polling entrant (161 UDP)
#  14. Interne  : supervision SNMP — traps sortants (162 UDP)
#  15. Interne  : collecte de logs syslog non chiffré (514) — 9.x uniquement
#  16. Interne  : collecte de logs syslog TLS (1514) — recommandé
#
# SORTANT :
#  17. Sortant  : téléchargement des mises à jour/patches (443) — Internet
#
# DURCISSEMENT :
#  18. Drop     : protocole de gestion en clair hérité (80 vers hyperviseurs)
# ─────────────────────────────────────────────────

rules:

  # ── Règle 1 : OBLIGATOIRE — Entrant — UI web + API HTTPS vers le gestionnaire ──
  # Administrateurs et outils d'automatisation accèdent au gestionnaire de virtualisation
  # en HTTPS (443). Interface principale de gestion et API REST/SDK.
  # ssl_inbound_inspection : le gestionnaire est un serveur interne contrôlé ; on déchiffre
  # le trafic entrant pour détecter les exploits applicatifs (T1190) et les uploads malveillants.
  - application:
      app_id: virtualization_mgmt_web
      category: infrastructure
      default_ports:
        - tcp/443
      depends_on:
        - dns
      risk: 5

    identity:
      user_group:
        - "virtualization_admins"
        - "infrastructure_admins"
      device_posture: compliant

    zones:
      source:
        - trust
        - management
        - vpn
      destination:
        - management

    direction: inbound

    service:
      protocol: tcp
      ports:
        - "443"
      app_default: true

    action: allow

    security_profiles:
      antivirus:
        action: block
      ips:
        action: block
        min_severity: medium
      url_filtering:
        credential_phishing: block

    decryption:
      mode: ssl_inbound_inspection
      exclusions: []

    logging:
      log_start: false
      log_end: true
      log_forwarding: true
      profile: "siem_high_priority"

    rationale:
      fr: |
        Cette règle autorise les administrateurs (postes conformes, groupes d'annuaire
        restreints) et les outils d'automatisation à atteindre l'interface principale du
        gestionnaire en HTTPS. Le gestionnaire étant un serveur interne contrôlé,
        ssl_inbound_inspection déchiffre le trafic entrant pour détecter les exploits
        visant l'interface (T1190) et les fichiers malveillants déposés. L'identité est
        restreinte par groupe annuaire (moindre privilège). Le risque est critique (risk 5)
        car compromettre le gestionnaire permet de pivoter vers l'ensemble des hyperviseurs
        gérés (T1210). Cette règle couvre aussi la redirection depuis le port HTTP 80
        (voir règle 3).
      en: |
        This rule allows administrators (compliant devices, restricted directory groups)
        and automation tools to reach the manager's main interface over HTTPS. Since the
        manager is a controlled internal server, ssl_inbound_inspection decrypts inbound
        traffic to detect exploits targeting the interface (T1190) and malicious uploaded
        files. Identity is restricted by directory group (least privilege). Risk is critical
        (risk 5) because compromising the manager enables pivoting to all managed
        hypervisors (T1210). This rule also covers the redirect from HTTP port 80 (see
        rule 3).

  # ── Règle 2 : OBLIGATOIRE — Entrant — Interface d'administration de l'appliance ─
  # Interface HTTPS dédiée à l'administration de l'appliance elle-même (backup, réseau,
  # NTP, mises à jour OS, certificats, activation/désactivation SSH). Port distinct de
  # l'interface de gestion principale (443). Accès restreint aux administrateurs système.
  - application:
      app_id: appliance_admin_web
      category: infrastructure
      default_ports:
        - tcp/5480
      depends_on:
        - dns
      risk: 5

    identity:
      user_group:
        - "infrastructure_admins"
      device_posture: compliant

    zones:
      source:
        - management
      destination:
        - management

    direction: inbound

    service:
      protocol: tcp
      ports:
        - "5480"
      app_default: true

    action: allow

    security_profiles:
      antivirus:
        action: block
      ips:
        action: block
        min_severity: medium

    decryption:
      mode: ssl_inbound_inspection
      exclusions: []

    logging:
      log_start: false
      log_end: true
      log_forwarding: true
      profile: "siem_high_priority"

    rationale:
      fr: |
        L'interface d'administration de l'appliance (port 5480) est le seul moyen de
        gérer les paramètres système de l'appliance : sauvegarde, configuration réseau,
        NTP, certificats, mises à jour OS et activation/désactivation du SSH. Elle est
        structurellement obligatoire (sans elle, l'appliance ne peut pas être administrée
        hors de l'interface principale) et distincte de l'interface de gestion 443.
        L'accès est restreint aux administrateurs système uniquement (group d'annuaire
        plus étroit que la règle 1). ssl_inbound_inspection couvre les exploits (T1190,
        T1078). Risque critique (risk 5) : accès à cette interface permet la reconfiguration
        totale de l'appliance, y compris l'activation du SSH.
      en: |
        The appliance administration interface (port 5480) is the only way to manage
        the appliance's system settings: backup, network configuration, NTP, certificates,
        OS updates, and SSH enable/disable. It is structurally mandatory (without it, the
        appliance cannot be managed outside the main interface) and distinct from the 443
        management interface. Access is restricted to system administrators only (a
        narrower directory group than rule 1). ssl_inbound_inspection covers exploits
        (T1190, T1078). Risk is critical (risk 5): access to this interface allows full
        reconfiguration of the appliance, including SSH activation.

  # ── Règle 3 : OBLIGATOIRE — Entrant — HTTP → redirect HTTPS ─────────────────────
  # Redirection automatique vers HTTPS 443. Aucune donnée applicative en clair.
  # Le flux HTTP entrant doit être accepté pour que la redirection fonctionne ;
  # il est inclus dans la surface d'inspection (ips).
  - application:
      app_id: web_browsing
      category: networking
      default_ports:
        - tcp/80
      risk: 2

    zones:
      source:
        - trust
        - management
        - vpn
      destination:
        - management

    direction: inbound

    service:
      protocol: tcp
      ports:
        - "80"
      app_default: true

    action: allow

    security_profiles:
      ips:
        action: block
        min_severity: high

    decryption:
      mode: none

    logging:
      log_start: false
      log_end: true
      log_forwarding: true
      profile: "siem_default"

    rationale:
      fr: |
        Le port 80 est accepté uniquement pour permettre la redirection automatique vers
        HTTPS 443 (comportement stable et documenté). Aucune donnée applicative ne transite
        en clair : la session est immédiatement redirigée. L'IPS en mode block (high) détecte
        les tentatives d'exploitation visant la couche HTTP de redirection. Le déchiffrement
        est non applicable : le flux HTTP n'est pas chiffré et la redirection intervient avant
        tout échange de données.
      en: |
        Port 80 is accepted solely to allow the automatic redirect to HTTPS 443 (a stable,
        documented behaviour). No application data is transmitted in clear text: the session
        is immediately redirected. IPS in block mode (high severity) detects exploitation
        attempts targeting the HTTP redirect layer. Decryption is not applicable: the HTTP
        flow is not encrypted and the redirect occurs before any data exchange.

  # ── Règle 4 : OBLIGATOIRE — Interne — canal de gestion gestionnaire <-> hyperviseurs
  # Le gestionnaire pilote les hyperviseurs gérés via un canal de gestion bidirectionnel :
  # TCP pour le transfert de données, la configuration et la console (MKS) ;
  # UDP pour les heartbeats de disponibilité des hôtes.
  # Les deux ports (443 et le port de gestion dédié 902) sont obligatoires pour la
  # gestion de l'infrastructure virtuelle.
  - application:
      app_id: hypervisor_management
      category: infrastructure
      default_ports:
        - tcp/902
        - udp/902
        - tcp/443
      depends_on:
        - dns
      risk: 5

    zones:
      source:
        - management
      destination:
        - management

    direction: internal

    service:
      protocol: tcp
      ports:
        - "902"
        - "443"
      app_default: true

    action: allow

    security_profiles:
      antivirus:
        action: block
      ips:
        action: block
        min_severity: medium

    decryption:
      mode: none
      exclusions:
        - cert_pinned_app

    logging:
      log_start: false
      log_end: true
      log_forwarding: true
      profile: "siem_high_priority"

    rationale:
      fr: |
        Le gestionnaire pilote les hyperviseurs gérés via un canal bidirectionnel. Le port
        de gestion dédié (TCP) véhicule le transfert de données, la configuration et la
        console de machine virtuelle. Le port HTTPS (TCP 443) est utilisé pour le canal de
        configuration et la gestion des agents côté hyperviseur. Le heartbeat de disponibilité
        (UDP) passe également par le port de gestion dédié. Le déchiffrement est désactivé
        (exclusion cert_pinned_app) : les hyperviseurs gérés présentent des certificats
        d'équipement et une inspection MITM briserait le canal de gestion authentifié.
        L'IPS détecte les exploits visant les services de gestion embarqués (T1210). Risque
        critique (risk 5) : ce canal est le vecteur principal de pivot vers les hyperviseurs.
        Note : le heartbeat UDP sur le même port est couvert par une règle de service séparée
        si le pare-feu distingue TCP et UDP.
      en: |
        The manager drives managed hypervisors via a bidirectional channel. The dedicated
        management port (TCP) carries data transfer, configuration, and VM console (MKS).
        The HTTPS port (TCP 443) is used for configuration channel and agent management on
        the hypervisor side. The availability heartbeat (UDP) also uses the dedicated
        management port. Decryption is disabled (cert_pinned_app exclusion): managed
        hypervisors present device certificates and a MITM proxy would break the
        authenticated management channel. IPS detects exploits targeting embedded management
        services (T1210). Risk is critical (risk 5): this channel is the main pivot vector
        to hypervisors. Note: the UDP heartbeat on the same port is covered by a separate
        service rule if the firewall distinguishes TCP from UDP.

  # ── Règle 4b : OBLIGATOIRE — Interne — heartbeat UDP gestionnaire <-> hyperviseurs
  - application:
      app_id: hypervisor_heartbeat
      category: infrastructure
      default_ports:
        - udp/902
      risk: 3

    zones:
      source:
        - management
      destination:
        - management

    direction: internal

    service:
      protocol: udp
      ports:
        - "902"
      app_default: true

    action: allow

    security_profiles:
      ips:
        action: default

    decryption:
      mode: none

    logging:
      log_end: true
      log_forwarding: true
      profile: "siem_default"

    rationale:
      fr: |
        Le heartbeat de disponibilité UDP entre le gestionnaire et les hyperviseurs gérés
        permet la détection rapide des hôtes indisponibles. Ce flux est fondamental pour
        la gestion de la haute disponibilité et la surveillance de l'état des hyperviseurs.
        L'IPS en mode default détecte les anomalies de protocole sur ce flux UDP sans bloquer
        les sondes légitimes.
      en: |
        The UDP availability heartbeat between the manager and managed hypervisors enables
        rapid detection of unavailable hosts. This flow is fundamental for high-availability
        management and hypervisor health monitoring. IPS in default mode detects protocol
        anomalies on this UDP flow without blocking legitimate probes.

  # ── Règle 5 : OBLIGATOIRE — Interne — dépendance DNS ────────────────────────────
  # Résolution DNS requise pour les FQDN de l'appliance, des hyperviseurs gérés,
  # des contrôleurs d'annuaire et du service de mise à jour. TCP/53 pour DNSSEC/fallback.
  - application:
      app_id: dns
      category: networking
      default_ports:
        - udp/53
        - tcp/53
      risk: 2

    zones:
      source:
        - management
      destination:
        - internal

    direction: internal

    service:
      protocol: udp
      ports:
        - "53"
      app_default: true

    action: allow

    security_profiles:
      dns_security:
        action: block
        sinkhole: true

    decryption:
      mode: none

    logging:
      log_end: true
      log_forwarding: true
      profile: "siem_default"

    rationale:
      fr: |
        La résolution DNS est structurellement obligatoire : l'installation de l'appliance
        échoue si les enregistrements A/PTR de son FQDN ne sont pas résolus. En exploitation,
        DNS est requis pour joindre les hyperviseurs gérés, les contrôleurs d'annuaire et le
        service de mise à jour. Le flux est restreint vers un résolveur interne contrôlé (pas
        de résolution directe vers Internet). Le profil dns_security avec sinkhole atténue le
        tunneling DNS depuis l'appliance si elle était compromise. TCP/53 (réponses DNSSEC ou
        >512 octets) est traité avec la même règle si le pare-feu supporte multi-protocole ;
        sinon, dupliquer pour tcp/53.
      en: |
        DNS resolution is structurally mandatory: appliance installation fails if A/PTR
        records for its FQDN cannot be resolved. In operation, DNS is required to reach
        managed hypervisors, directory controllers, and the update service. The flow is
        restricted to a controlled internal resolver (no direct Internet resolution). The
        dns_security profile with sinkhole mitigates DNS tunneling from the appliance if
        it were compromised. TCP/53 (DNSSEC or >512-byte responses) is handled by the same
        rule if the firewall supports multi-protocol; otherwise duplicate for tcp/53.

  # ── Règle 6 : CONDITIONNEL — Interne — synchronisation NTP ──────────────────────
  # À activer UNIQUEMENT si la synchronisation NTP directe est configurée sur l'appliance
  # (via l'interface d'administration). Alternative : synchronisation via l'hyperviseur hôte.
  # NTP est critique pour la validité des certificats TLS, l'authentification SSO/Kerberos
  # et la cohérence des logs et de la haute disponibilité.
  - application:
      app_id: ntp
      category: networking
      default_ports:
        - udp/123
      risk: 2

    zones:
      source:
        - management
      destination:
        - internal

    direction: internal

    service:
      protocol: udp
      ports:
        - "123"
      app_default: true

    action: allow

    security_profiles:
      ips:
        action: default

    decryption:
      mode: none

    logging:
      log_end: true
      log_forwarding: true
      profile: "siem_default"

    rationale:
      fr: |
        CONDITIONNEL — À n'activer QUE si la synchronisation NTP directe est configurée
        sur l'appliance (via son interface d'administration). NTP est techniquement
        désactivable au profit de la synchronisation via l'hyperviseur hôte, mais fortement
        recommandé en production car il est critique pour la validité des certificats TLS,
        l'authentification SSO/Kerberos et la cohérence des journaux d'événements et des
        mécanismes de haute disponibilité. L'IPS en mode default détecte les anomalies de
        protocole NTP (amplification, mode hors norme).
      en: |
        CONDITIONAL — Enable ONLY if direct NTP synchronisation is configured on the
        appliance (via its administration interface). NTP can technically be disabled in
        favour of synchronisation through the host hypervisor, but is strongly recommended
        in production as it is critical for TLS certificate validity, SSO/Kerberos
        authentication, and consistency of event logs and high-availability mechanisms.
        IPS in default mode detects NTP protocol anomalies (amplification, non-standard
        mode).

  # ── Règle 7 : CONDITIONNEL — Entrant — SSH d'administration de l'appliance ───────
  # À activer UNIQUEMENT si le service SSH de l'appliance est explicitement activé
  # (via l'interface d'administration) pour une opération de maintenance.
  # Désactivé par défaut (bonne pratique de sécurité). Doit être re-désactivé après
  # intervention. Accès restreint aux hôtes de gestion dédiés, groupe annuaire étroit.
  - application:
      app_id: ssh
      category: remote_access
      default_ports:
        - tcp/22
      risk: 4

    identity:
      user_group:
        - "infrastructure_admins"
      device_posture: compliant

    zones:
      source:
        - management
      destination:
        - management

    direction: inbound

    service:
      protocol: tcp
      ports:
        - "22"
      app_default: true

    action: allow

    security_profiles:
      ips:
        action: block
        min_severity: medium

    decryption:
      mode: ssh_proxy

    logging:
      log_start: true
      log_end: true
      log_forwarding: true
      profile: "siem_high_priority"

    rationale:
      fr: |
        CONDITIONNEL — À n'activer QUE si le service SSH de l'appliance a été explicitement
        activé via l'interface d'administration pour une opération de maintenance. Le SSH est
        désactivé par défaut sur l'appliance (bonne pratique de sécurité) et doit être
        re-désactivé après intervention. Cette règle doit être activée avec une politique de
        durée limitée (fenêtre de maintenance). Le déchiffrement ssh_proxy permet d'inspecter
        les commandes exécutées via le tunnel SSH (détection d'exfiltration ou de commandes
        suspectes). L'accès est restreint aux hôtes de gestion conformes et au groupe
        d'administration le plus étroit (T1133). Le log_start est activé pour tracer toute
        ouverture de session SSH.
      en: |
        CONDITIONAL — Enable ONLY if the appliance SSH service has been explicitly activated
        via the administration interface for a maintenance operation. SSH is disabled by
        default on the appliance (security best practice) and must be re-disabled after the
        operation. This rule should be activated with a time-limited policy (maintenance
        window). The ssh_proxy decryption mode allows inspection of commands executed over
        the SSH tunnel (detection of exfiltration or suspicious commands). Access is
        restricted to compliant management hosts and the narrowest administration group
        (T1133). log_start is enabled to trace every SSH session opening.

  # ── Règle 8 : CONDITIONNEL — Entrant — service de provisioning réseau des hyperviseurs
  # À activer UNIQUEMENT si le service de provisioning réseau (déploiement automatisé des
  # hyperviseurs sans état) est en place. Ce service distribue les images, profils et
  # règles d'assignation aux hyperviseurs en cours de provisioning.
  - application:
      app_id: network_boot_provisioning
      category: infrastructure
      default_ports:
        - tcp/6501
        - tcp/6502
      risk: 3

    zones:
      source:
        - management
      destination:
        - management

    direction: inbound

    service:
      protocol: tcp
      ports:
        - "6501"
        - "6502"
      app_default: true

    action: allow

    security_profiles:
      antivirus:
        action: block
      ips:
        action: block
        min_severity: medium

    decryption:
      mode: none
      exclusions:
        - cert_pinned_app

    logging:
      log_end: true
      log_forwarding: true
      profile: "siem_high_priority"

    rationale:
      fr: |
        CONDITIONNEL — À n'activer QUE si le service de provisioning réseau des hyperviseurs
        est en place. Ce service permet le déploiement automatisé des hyperviseurs sans état :
        les hôtes en cours de provisioning se connectent au gestionnaire pour recevoir leur
        image système, leur profil de configuration et leurs règles d'assignation. L'antivirus
        et l'IPS inspectent les flux entrants. Le déchiffrement est désactivé (cert_pinned_app)
        car les hyperviseurs en boot réseau utilisent des certificats d'équipement que le proxy
        ne peut pas impersonner. Si le provisioning utilise UEFI HTTPS Boot (boot moderne),
        il passe par TCP 443 (règle 1) et cette règle peut rester désactivée.
      en: |
        CONDITIONAL — Enable ONLY if the hypervisor network provisioning service is in
        place. This service enables stateless hypervisor automated deployment: hosts being
        provisioned connect to the manager to receive their system image, configuration
        profile, and assignment rules. Antivirus and IPS inspect inbound flows. Decryption
        is disabled (cert_pinned_app) as hypervisors booting over the network use device
        certificates that a proxy cannot impersonate. If provisioning uses UEFI HTTPS Boot
        (modern boot), it goes through TCP 443 (rule 1) and this rule can remain disabled.

  # ── Règle 9 : CONDITIONNEL — Entrant — boot PXE legacy (TFTP) ──────────────────
  # À activer UNIQUEMENT si le provisioning réseau utilise le boot PXE legacy (BIOS/iPXE).
  # NON requis si le boot moderne UEFI HTTPS est configuré (nouveau défaut).
  - application:
      app_id: tftp
      category: networking
      default_ports:
        - udp/69
      risk: 3

    zones:
      source:
        - management
      destination:
        - management

    direction: inbound

    service:
      protocol: udp
      ports:
        - "69"
      app_default: true

    action: allow

    security_profiles:
      ips:
        action: block
        min_severity: medium

    decryption:
      mode: none

    logging:
      log_end: true
      log_forwarding: true
      profile: "siem_high_priority"

    rationale:
      fr: |
        CONDITIONNEL — À n'activer QUE si le service de provisioning réseau utilise le boot
        PXE legacy (BIOS ou iPXE classique). Le TFTP permet le téléchargement du fichier de
        boot iPXE lors du démarrage PXE de l'hyperviseur. Cette règle est inutile si le boot
        réseau moderne (UEFI HTTPS Boot) est configuré, ce dernier passant entièrement par
        HTTPS 443 (règle 1 ou règle 8). TFTP est un protocole non chiffré : limiter son usage
        au réseau de gestion segmenté et envisager la migration vers le boot UEFI HTTPS pour
        éliminer ce flux.
      en: |
        CONDITIONAL — Enable ONLY if the network provisioning service uses legacy PXE boot
        (BIOS or classic iPXE). TFTP enables download of the iPXE boot file when a hypervisor
        PXE-boots. This rule is unnecessary if modern network boot (UEFI HTTPS Boot) is
        configured, as it operates entirely over HTTPS 443 (rule 1 or rule 8). TFTP is an
        unencrypted protocol: restrict its use to the segmented management network and consider
        migrating to UEFI HTTPS boot to eliminate this flow.

  # ── Règle 10 : CONDITIONNEL — Interne — service de cycle de vie/patch (HTTPS) ───
  # À activer UNIQUEMENT si le service de gestion du cycle de vie des hôtes est utilisé
  # pour piloter les mises à jour et la conformité des hyperviseurs. Port HTTPS principal
  # du dépôt de patches/images distribué par le gestionnaire vers les hyperviseurs.
  - application:
      app_id: host_lifecycle_patch_https
      category: infrastructure
      default_ports:
        - tcp/9087
      depends_on:
        - dns
      risk: 4

    zones:
      source:
        - management
      destination:
        - management

    direction: inbound

    service:
      protocol: tcp
      ports:
        - "9087"
      app_default: true

    action: allow

    security_profiles:
      antivirus:
        action: block
      ips:
        action: block
        min_severity: medium
      sandboxing:
        enabled: true
        file_types:
          - "archive"
          - "pe"

    decryption:
      mode: ssl_inbound_inspection
      exclusions: []

    logging:
      log_end: true
      log_forwarding: true
      profile: "siem_high_priority"

    rationale:
      fr: |
        CONDITIONNEL — À n'activer QUE si le service de gestion du cycle de vie des hôtes
        est activé pour piloter les mises à jour et vérifier la conformité des hyperviseurs
        gérés. Ce service expose un dépôt HTTPS de patches et d'images depuis le gestionnaire
        vers les hyperviseurs. Si ce flux est bloqué, les vérifications de conformité et les
        remédiations échouent silencieusement. Port HTTPS (9087) : flux principal depuis la
        version courante du service (remplace le port HTTP hérité 9084). ssl_inbound_inspection
        permet l'inspection antivirus et sandboxing du contenu distribué.
      en: |
        CONDITIONAL — Enable ONLY if the host lifecycle management service is activated to
        drive updates and check compliance of managed hypervisors. This service exposes an
        HTTPS patch/image repository from the manager to hypervisors. If this flow is blocked,
        compliance checks and remediations fail silently. HTTPS port (9087): the primary flow
        in the current service version (replaces legacy HTTP port 9084). ssl_inbound_inspection
        enables antivirus and sandboxing inspection of distributed content.

  # ── Règle 11 : CONDITIONNEL — Interne — service de cycle de vie/patch (héritage) ─
  # À activer UNIQUEMENT si le service de cycle de vie gère encore des hyperviseurs en
  # mode legacy (port HTTP 9084) ou accède au magasin de configuration des hyperviseurs
  # (port 8083). En version courante, le flux principal passe par HTTPS 9087 (règle 10).
  - application:
      app_id: host_lifecycle_patch_legacy
      category: infrastructure
      default_ports:
        - tcp/9084
        - tcp/8083
      risk: 3

    zones:
      source:
        - management
      destination:
        - management

    direction: inbound

    service:
      protocol: tcp
      ports:
        - "9084"
        - "8083"
      app_default: true

    action: allow

    security_profiles:
      antivirus:
        action: block
      ips:
        action: block
        min_severity: medium

    decryption:
      mode: none

    logging:
      log_end: true
      log_forwarding: true
      profile: "siem_default"

    rationale:
      fr: |
        CONDITIONNEL — À n'activer QUE si le service de cycle de vie des hôtes utilise
        encore le port HTTP hérité (9084) pour des hyperviseurs en mode de compatibilité,
        ou le port d'accès au magasin de configuration des hôtes (8083). En version courante
        du service, le flux principal passe par HTTPS 9087 (règle 10) ; ces ports sont des
        résidus d'héritage. Note : 9084 étant HTTP non chiffré, envisager la migration vers
        9087/HTTPS pour éliminer ce flux non chiffré et fermer cette règle.
      en: |
        CONDITIONAL — Enable ONLY if the host lifecycle service still uses the legacy HTTP
        port (9084) for compatibility-mode hypervisors, or the host configuration store
        access port (8083). In the current service version, the main flow goes through HTTPS
        9087 (rule 10); these ports are legacy residues. Note: since 9084 is unencrypted
        HTTP, consider migrating to 9087/HTTPS to eliminate this unencrypted flow and close
        this rule.

  # ── Règle 12 : CONDITIONNEL — Interne — service de réplication (management SOAP) ─
  # À activer UNIQUEMENT si le service de réplication de machines virtuelles est déployé.
  # Ce flux couvre la communication de management SOAP entre le gestionnaire et l'appliance
  # de réplication (distinct du trafic de réplication de données entre hyperviseurs).
  - application:
      app_id: replication_management
      category: infrastructure
      default_ports:
        - tcp/8043
      depends_on:
        - dns
      risk: 3

    zones:
      source:
        - management
      destination:
        - management

    direction: internal

    service:
      protocol: tcp
      ports:
        - "8043"
      app_default: true

    action: allow

    security_profiles:
      ips:
        action: block
        min_severity: medium

    decryption:
      mode: ssl_inbound_inspection
      exclusions: []

    logging:
      log_end: true
      log_forwarding: true
      profile: "siem_default"

    rationale:
      fr: |
        CONDITIONNEL — À n'activer QUE si le service de réplication de machines virtuelles
        est déployé. Ce flux SOAP permet au gestionnaire de piloter l'appliance de réplication
        (configuration des politiques de réplication, monitoring). Il est distinct du trafic
        de réplication de données inter-hyperviseurs, qui relève d'une fiche dédiée aux
        hyperviseurs. ssl_inbound_inspection inspecte les flux HTTPS SOAP entrants vers le
        gestionnaire.
      en: |
        CONDITIONAL — Enable ONLY if the virtual machine replication service is deployed.
        This SOAP flow allows the manager to control the replication appliance (replication
        policy configuration, monitoring). It is distinct from inter-hypervisor replication
        data traffic, which belongs to a dedicated hypervisor profile. ssl_inbound_inspection
        inspects inbound HTTPS SOAP flows to the manager.

  # ── Règle 13 : CONDITIONNEL — Entrant — supervision SNMP polling ─────────────────
  # À activer UNIQUEMENT si l'agent SNMP du gestionnaire est activé et qu'un système
  # de supervision (NMS) effectue du polling SNMP.
  - application:
      app_id: snmp
      category: infrastructure
      default_ports:
        - udp/161
      risk: 2

    zones:
      source:
        - management
      destination:
        - management

    direction: inbound

    service:
      protocol: udp
      ports:
        - "161"
      app_default: true

    action: allow

    security_profiles:
      ips:
        action: default

    decryption:
      mode: none

    logging:
      log_end: true
      log_forwarding: true
      profile: "siem_default"

    rationale:
      fr: |
        CONDITIONNEL — À n'activer QUE si l'agent SNMP du gestionnaire est activé et qu'un
        système de supervision réseau (NMS) effectue du polling. SNMP v3 avec authentification
        et chiffrement est fortement recommandé. L'accès doit être restreint à l'adresse IP
        du NMS. L'IPS en mode default surveille les anomalies de protocole SNMP (tentatives
        de walk non autorisées).
      en: |
        CONDITIONAL — Enable ONLY if the manager's SNMP agent is activated and a network
        management system (NMS) performs polling. SNMPv3 with authentication and encryption
        is strongly recommended. Access must be restricted to the NMS IP address. IPS in
        default mode monitors SNMP protocol anomalies (unauthorised walk attempts).

  # ── Règle 14 : CONDITIONNEL — Interne — supervision SNMP traps ──────────────────
  # À activer UNIQUEMENT si l'envoi de traps SNMP est configuré sur le gestionnaire.
  - application:
      app_id: snmp_trap
      category: infrastructure
      default_ports:
        - udp/162
      risk: 2

    zones:
      source:
        - management
      destination:
        - management

    direction: internal

    service:
      protocol: udp
      ports:
        - "162"
      app_default: true

    action: allow

    security_profiles:
      ips:
        action: default

    decryption:
      mode: none

    logging:
      log_end: true
      log_forwarding: true
      profile: "siem_default"

    rationale:
      fr: |
        CONDITIONNEL — À n'activer QUE si l'envoi de traps SNMP est configuré sur le
        gestionnaire vers un récepteur de traps (NMS). Le gestionnaire émet des traps SNMP
        UDP vers le NMS pour signaler des événements d'infrastructure. Préférer SNMP v3 avec
        authentification. L'IPS en mode default surveille les anomalies.
      en: |
        CONDITIONAL — Enable ONLY if SNMP trap sending is configured on the manager toward
        a trap receiver (NMS). The manager emits SNMP UDP traps to the NMS to report
        infrastructure events. Prefer SNMPv3 with authentication. IPS in default mode
        monitors anomalies.

  # ── Règle 15 : CONDITIONNEL — Interne — collecte de logs syslog non chiffré ──────
  # À activer UNIQUEMENT si la collecte syslog non chiffrée est configurée ET que la
  # version courante du gestionnaire supporte ce protocole (cf. rationale). Préférer
  # la règle 16 (syslog TLS 1514) qui est la voie de migration recommandée.
  - application:
      app_id: syslog
      category: infrastructure
      default_ports:
        - udp/514
        - tcp/514
      risk: 3

    zones:
      source:
        - management
      destination:
        - management

    direction: internal

    service:
      protocol: udp
      ports:
        - "514"
      app_default: true

    action: allow

    security_profiles:
      ips:
        action: block
        min_severity: high

    decryption:
      mode: none

    logging:
      log_end: true
      log_forwarding: true
      profile: "siem_default"

    rationale:
      fr: |
        CONDITIONNEL — À n'activer QUE si la collecte syslog non chiffrée est configurée
        ET que la version courante du gestionnaire la supporte. AVERTISSEMENT DE VERSION :
        le syslog non chiffré sur UDP/TCP 514 est supporté en version 9.x mais est bloqué
        et non supporté à partir de la version 9.1 du gestionnaire. Si une montée de version
        vers 9.1+ est prévue, migrer vers syslog TLS (règle 16, port 1514) AVANT la mise à
        niveau. Syslog non chiffré expose les journaux d'événements à l'interception et à
        la falsification sur le réseau de gestion — préférer la règle 16 en toutes
        circonstances. L'IPS surveille les anomalies sur le flux.
      en: |
        CONDITIONAL — Enable ONLY if unencrypted syslog collection is configured AND the
        current manager version supports it. VERSION WARNING: unencrypted syslog on UDP/TCP
        514 is supported in version 9.x but is blocked and unsupported from manager
        version 9.1 onward. If an upgrade to 9.1+ is planned, migrate to syslog TLS
        (rule 16, port 1514) BEFORE the upgrade. Unencrypted syslog exposes event logs
        to interception and tampering on the management network — prefer rule 16 in all
        circumstances. IPS monitors flow anomalies.

  # ── Règle 16 : CONDITIONNEL — Interne — collecte de logs syslog TLS ─────────────
  # À activer si la collecte de logs syslog chiffrée TLS est configurée.
  # Recommandé en version 9.x, obligatoire à partir de la version 9.1 (remplace règle 15).
  - application:
      app_id: syslog_tls
      category: infrastructure
      default_ports:
        - tcp/1514
      risk: 2

    zones:
      source:
        - management
      destination:
        - management

    direction: internal

    service:
      protocol: tcp
      ports:
        - "1514"
      app_default: true

    action: allow

    security_profiles:
      ips:
        action: default

    decryption:
      mode: none
      exclusions:
        - cert_pinned_app

    logging:
      log_end: true
      log_forwarding: true
      profile: "siem_default"

    rationale:
      fr: |
        CONDITIONNEL — À activer si la collecte de logs syslog chiffrée TLS est configurée
        sur le gestionnaire. Recommandé en version 9.x, et obligatoire à partir de la
        version 9.1 du gestionnaire (le syslog non chiffré sur 514 étant bloqué dès cette
        version). Voie de migration recommandée depuis la règle 15. Le déchiffrement est
        désactivé (cert_pinned_app) car le collecteur syslog TLS utilise un certificat
        d'équipement pour l'authentification mutuelle.
      en: |
        CONDITIONAL — Enable if encrypted TLS syslog log collection is configured on the
        manager. Recommended in version 9.x, and mandatory from manager version 9.1 onward
        (unencrypted syslog on 514 is blocked from that version). Recommended migration
        path from rule 15. Decryption is disabled (cert_pinned_app) as the TLS syslog
        collector uses a device certificate for mutual authentication.

  # ── Règle 17 : OBLIGATOIRE (si mode online) — Sortant — téléchargement des MàJ ──
  # Flux sortant vers Internet pour télécharger les mises à jour du gestionnaire et
  # les patches/images des hyperviseurs. Vecteur de supply chain : ssl_forward_proxy
  # OBLIGATOIRE + antivirus/ips/url_filtering/sandboxing.
  # La liste blanche des domaines du service éditeur est spécifique au déploiement
  # (références[].endpoints) — à reporter en url_filtering.allow_list au déploiement.
  # Note : le service éditeur de mise à jour requiert un accès direct (token d'authentification)
  # et exclut le SSL/DPI inspection (cf. references[].url KB 431697) ; utiliser les
  # exclusions du proxy déployé pour ce domaine spécifique, pas une exclusion de déchiffrement
  # générale.
  - application:
      app_id: software_update
      category: infrastructure
      default_ports:
        - tcp/443
      depends_on:
        - dns
        - ssl
      risk: 4

    zones:
      source:
        - management
      destination:
        - internet

    direction: outbound

    service:
      protocol: tcp
      ports:
        - "443"
      app_default: true

    action: allow

    security_profiles:
      antivirus:
        action: block
      ips:
        action: block
        min_severity: low
      url_filtering:
        block_categories:
          - malware
          - phishing
          - c2
          - newly_registered_domain
          - compromised
        uncategorized_action: block
        credential_phishing: block
      sandboxing:
        enabled: true
        file_types:
          - "archive"
          - "pe"
      dns_security:
        action: block
        sinkhole: true

    decryption:
      mode: ssl_forward_proxy
      exclusions: []

    logging:
      log_start: false
      log_end: true
      log_forwarding: true
      profile: "siem_high_priority"

    rationale:
      fr: |
        Le gestionnaire télécharge ses mises à jour et les patches/images des hyperviseurs
        depuis un service éditeur sur Internet. C'est le seul flux sortant vers Internet
        et un vecteur critique de chaîne d'approvisionnement (T1195.002) : ssl_forward_proxy
        est obligatoire pour permettre à l'antivirus et au sandboxing d'inspecter les
        paquets téléchargés. url_filtering bloque les catégories à risque et les sites non
        catégorisés. La liste blanche des domaines autorisés (service éditeur de mise à
        jour) est spécifique au déploiement : les domaines documentés par la source figurent
        en provenance (references[].endpoints), à reporter en url_filtering.allow_list au
        déploiement — sans encoder de marque dans la règle. Note de déploiement : le service
        éditeur de mise à jour utilise un token d'authentification par compte ; consulter
        la documentation de provenance (references[]) pour l'exclusion d'inspection SSL
        recommandée sur ce flux spécifique (KB 431697). Risque élevé (risk 4) : vecteur
        supply chain à large rayon d'impact.
      en: |
        The manager downloads its updates and hypervisor patches/images from a vendor
        service on the Internet. This is the only outbound Internet flow and a critical
        supply-chain vector (T1195.002): ssl_forward_proxy is mandatory to allow antivirus
        and sandboxing to inspect downloaded packages. url_filtering blocks risky categories
        and uncategorised sites. The domain allow-list for the vendor update service is
        deployment-specific: domains documented by the source are recorded as provenance
        (references[].endpoints), to be set in url_filtering.allow_list at deployment —
        without hardcoding a brand into the rule. Deployment note: the vendor update
        service uses a per-account authentication token; see the provenance documentation
        (references[]) for the recommended SSL inspection exclusion on this specific flow
        (KB 431697). High risk (risk 4): supply-chain vector with wide blast radius.

  # ── Règle 18 : DURCISSEMENT — Drop — protocole de gestion en clair hérité ────────
  # Les flux de gestion non chiffrés vers les hyperviseurs (ex. protocoles hérités sur
  # port HTTP) doivent être bloqués silencieusement. Les hyperviseurs modernes exposent
  # leurs interfaces de gestion uniquement en HTTPS ; les flux en clair sont un résidu
  # hérité ou une tentative de contournement.
  # L'absence de security_profiles est correcte sur action=drop (rien à inspecter).
  - application:
      app_id: clear_text_hypervisor_mgmt
      category: infrastructure
      default_ports:
        - tcp/80
      risk: 4

    zones:
      source:
        - management
      destination:
        - management

    direction: internal

    service:
      protocol: tcp
      ports:
        - "80"

    action: drop

    logging:
      log_start: true
      log_end: true
      log_forwarding: true
      profile: "siem_high_priority"

    rationale:
      fr: |
        Durcissement : les tentatives de communication en clair (HTTP) vers les interfaces
        de gestion des hyperviseurs sont bloquées silencieusement. Les hyperviseurs modernes
        n'exposent leurs interfaces de gestion qu'en HTTPS (port 443, règle 4) ; un flux HTTP
        entrant vers un hyperviseur est soit un résidu de configuration hérité, soit une
        tentative de contournement du chiffrement (T1557 — interception en vol, vol
        d'identifiants). Le log en haute priorité signale toute tentative pour investigation.
        Note : cette règle cible les flux internes gestionnaire <-> hyperviseurs ; la
        redirection HTTP 80 vers HTTPS pour les clients administrateurs est couverte par
        la règle 3 (sens entrant).
      en: |
        Hardening: clear-text (HTTP) communication attempts toward hypervisor management
        interfaces are silently dropped. Modern hypervisors expose their management
        interfaces only over HTTPS (port 443, rule 4); an HTTP flow toward a hypervisor is
        either a legacy configuration residue or an attempt to bypass encryption (T1557 —
        in-flight interception, credential theft). High-priority logging flags every attempt
        for investigation. Note: this rule targets internal manager <-> hypervisor flows;
        the HTTP 80 to HTTPS redirect for administrator clients is covered by rule 3
        (inbound direction).
