NeuralWall Rules Kit

Control Taxonomy — Vocabulaire normalisé NeuralWall

Référence canonique des identifiants (enums, clés, zones) utilisés dans les fiches. Toute fiche DOIT n'employer que les identifiants définis ici pour ses champs machine. ⚠️ Amendé par ADR-0005 (2026-06-18) : la prose d'une fiche (title, description, rationale, threat_model) PEUT désormais nommer une marque/produit ; l'annexe §10 reste une cross-référence utile, plus une interdiction. Seuls les identifiants machine restent agnostiques (snake_case, stables).

Conventions

  • Identifiants (valeurs d'enum, clés) : snake_case anglais, stables dans le temps. Ce sont des identifiants machine — ils ne se traduisent pas.
  • Prose : libre (FR pour l'instant).
  • Marques (ADR-0005) : autorisées dans la prose d'une fiche. Les identifiants machine (app_id, enums, zones) restent agnostiques. Le mapping vendor (§10) est une cross-référence.
  • Posture par défaut : next-gen. On identifie l'application (L7), pas juste un port. Un contrôle par port seul est un fallback à justifier explicitement.

1. Identification applicative (application)

Le critère primaire de matching. On décrit l'application, le port n'est qu'un indice.

Champ Type Description
app_id string (snake_case) Identifiant normalisé de l'app (ex. ssl, web_browsing, dns, kubernetes_api).
category enum Voir ci-dessous.
default_ports array Ports/protocoles attendus (tcp/443), à titre indicatif/contrôle de cohérence.
depends_on array[app_id] Apps qui doivent être autorisées pour que celle-ci fonctionne (ex. dns, ssl).
risk enum 1..5 Niveau de risque applicatif (1 = faible, 5 = critique).

category (enum) : networking · infrastructure · business_systems · collaboration · general_internet · media · saas · remote_access · database · identity · unknown

Note : unknown (trafic non identifié L7) est traité comme un signal, pas comme une app légitime. Une fiche qui autorise unknown doit le justifier (rationale).


2. Identité (identity)

Optionnel mais recommandé pour les règles internes/sortantes.

Champ Type Description
user array[string] Utilisateurs spécifiques.
user_group array[string] Groupes (annuaire). Préféré aux users individuels.
device_posture enum unmanaged · managed · compliant · any. Conformité du poste si applicable.

3. Zones (zones)

Abstraites. Une fiche décrit le rôle de la zone, pas un nom d'interface vendor. Set recommandé (extensible via custom: préfixe) :

trust · untrust · dmz · guest · vpn · management · internal · internet · cloud · ot (réseaux industriels) · any

zones:
  source: [trust]
  destination: [dmz]

4. Direction (direction)

inbound · outbound · internal (intra-zone est↔ouest) · lateral (segmentation fine)


5. Service / Port (service)

Complément de application, pas substitut. Renseigner pour le contrôle de cohérence et les rares cas où le L7 n'est pas identifiable.

Champ Type Exemple
protocol enum tcp · udp · icmp · any
ports array[string] ["443", "8443"]
app_default bool true = utiliser les ports par défaut de l'app (recommandé).

6. Action (action)

Valeur Sémantique
allow Autorise (et applique les profils de sécurité, §7).
deny Bloque avec réponse selon défaut vendor.
drop Bloque silencieusement, aucune réponse à l'émetteur.
reset Envoie un TCP RST (variantes vendor reset_client/reset_server/reset_both optionnelles).

Règle d'or : allow SANS profils de sécurité associés (§7) est un anti-pattern. Une fiche allow sans threat prevention doit le justifier.


7. Profils de sécurité (security_profiles)

Le cœur "next-gen". S'appliquent aux règles allow. Chaque profil expose une action normalisée et, le cas échéant, un seuil de sévérité.

Actions communes (enum profile_action) : default · alert · allow · block · drop · reset

Seuil de sévérité (enum severity, quand pertinent) : informational · low · medium · high · critical

Clé canonique Rôle Champs
antivirus Détection malware sur flux (HTTP, SMTP, FTP…). action
c2_protection Anti-spyware / anti-botnet / command-and-control. action, min_severity
ips Protection vulnérabilités / signatures d'exploit (IPS). action, min_severity
url_filtering Filtrage web par catégories + listes + anti-phishing d'identifiants. voir §7.1
file_control Blocage/inspection par type de fichier. block_types[], direction
sandboxing Détonation cloud de fichiers/liens inconnus. enabled, file_types[]
dns_security Filtrage DNS, sinkhole des domaines malveillants. action, sinkhole
dlp Data filtering / prévention de fuite (motifs sensibles). patterns[], action

sandboxing est le terme canonique pour la détonation cloud. Les équivalents vendor (WildFire, Threat Emulation, Capture ATP, Inline Cloud Analysis…) vivent en §10.

7.1 url_filtering (profil complet)

Champ Type Description
block_categories[] array[enum] Catégories bloquées.
alert_categories[] array[enum] Catégories loggées sans blocage.
allow_list[] array[string] URLs/domaines explicitement autorisés. Priment sur les catégories.
block_list[] array[string] URLs/domaines explicitement bloqués. Priment sur les catégories.
uncategorized_action enum {allow, alert, block} Décision pour les sites non catégorisés / unknown. block = posture de durcissement.
credential_phishing enum {disabled, alert, block} Bloque la soumission d'identifiants d'entreprise vers des sites non fiables.

Catégories normalisées (extrait, set extensible) : malware · phishing · c2 · newly_registered_domain · parked · proxy_avoidance · unknown · adult · gambling · hacking · grayware · compromised · cryptomining · dynamic_dns

Dépendance au déchiffrement (§8). Sans ssl_forward_proxy, le firewall ne voit que le domaine (SNI), pas l'URL complète : le filtrage par chemin et la credential_phishing protection sont dégradés. Une fiche posant un url_filtering riche avec decryption: none sur du trafic chiffré doit le justifier (le linter le relève).


8. Déchiffrement (decryption)

Champ Type Description
mode enum none · ssl_forward_proxy (sortant) · ssl_inbound_inspection (entrant, serveurs exposés) · ssh_proxy.
exclusions array Catégories/apps exclues (raisons légales/techniques).

exclusions[] (enum recommandé) : health · finance · government · legal · cert_pinned_app

Le déchiffrement conditionne l'efficacité de §7 : sans ssl_forward_proxy, l'AV/IPS/ sandboxing voient un flux chiffré opaque. Une fiche qui pose mode: none sur du trafic sortant à risque doit le justifier.


9. Journalisation (logging)

Champ Type Description
log_start bool Log au début de session (rare, debug).
log_end bool Log en fin de session (défaut recommandé : true).
log_forwarding bool Transfert vers SIEM/collecteur.
profile string Nom logique du profil de forwarding (résolu côté NeuralWall).

10. Annexe — Mapping vendor (non normatif)

Cross-référence canonique ↔ marques (couche de traduction NeuralWall + page /vendors). Amendé par ADR-0005 : nommer une marque dans la prose d'une fiche est désormais permis ; cette annexe reste la référence de mapping, plus une interdiction.

Canonique Palo Alto Fortinet Check Point
application (app_id) App-ID Application Control AppWiki / App Control
c2_protection Anti-Spyware Botnet C&C / Anti-Botnet Anti-Bot
ips Vulnerability Protection IPS IPS
antivirus Antivirus Antivirus Anti-Virus
url_filtering URL Filtering (PAN-DB) Web Filter URL Filtering
url_filtering.credential_phishing Credential Phishing Prevention (anti-phishing Web Filter) (via URL Filtering / Zero Phishing)
file_control File Blocking DLP / File Filter Content Awareness
sandboxing WildFire / Inline Cloud Analysis Sandbox / FortiSandbox SandBlast Threat Emulation
dns_security DNS Security DNS Filter — / via Anti-Bot
dlp Data Filtering / Enterprise DLP DLP Content Awareness / DLP
decryption: ssl_forward_proxy SSL Forward Proxy SSL/SSH Deep Inspection HTTPS Inspection (Outbound)
decryption: ssl_inbound_inspection SSL Inbound Inspection (profil deep-inspection serveur) HTTPS Inspection (Inbound)
action: reset reset-client/server/both (deny + RST) reject
action: drop drop deny drop

Mappings indicatifs, à compléter/valider par version d'OS (PAN-OS, FortiOS, R8x). La granularité fine (ex. variantes de reset) reste optionnelle côté fiche.