Webserver-Front (replique DMZ)

Webserver-Front est une replique en lecture seule du Webserver Mugnsoft concue pour etre exposee dans une DMZ ou vers des reseaux non fiables. Elle sert les tableaux de bord et les rapports aux utilisateurs finaux sans exposer le plan de controle interne, les sondes ni aucun secret.

Vue d’ensemble

Propriete Valeur
Role Replique en lecture seule de l’interface Webserver
Compilation go build -tags front (tag de build front)
Licence Aucune requise — alimentee entierement par l’ADMIN licencie
Source de donnees Push chiffre a sens unique depuis le Webserver ADMIN
Ressources statiques Servies depuis le disque (./web-front/), non embarquees
Ports d’ecoute Interface web sur le port WEB, recepteur de replication (mTLS) sur le port API

Dans cette page, ADMIN designe le Webserver normal (licencie, interne) et FRONT la replique compilee avec le tag front.

Pourquoi une replique separee ? Le Webserver ADMIN detient des secrets (adresses des sondes, jetons d’integration, identifiants Vault) et peut joindre chaque composant interne. L’exposer directement a Internet representerait une large surface d’attaque. FRONT ne recoit qu’une copie assainie et en lecture seule des donnees necessaires a l’affichage des tableaux de bord — et n’a aucune route reseau vers ADMIN ni les sondes.
Tableau de bord en lecture seule de Webserver-Front avec indicateur de fraicheur de replication

Architecture

   RESEAU INTERNE                       DMZ / NON FIABLE
 ┌──────────────────┐                ┌──────────────────────┐
 │  Webserver ADMIN │                │   FRONT (replique)   │
 │  (licencie)      │                │   (sans licence)     │
 │                  │  mTLS + JWT +  │                      │
 │  pompe de    ────┼──  AES-GCM  ──►│  recepteur /replicate│
 │  replication     │  push a sens   │        │             │
 │                  │  unique        │        ▼             │
 │  sondes ◄────────┤                │   KV local + disque  │
 │  integrateurs    │                │        │             │
 └──────────────────┘                │        ▼             │
                                     │  interface lecture ──┼──► utilisateurs
                                     └──────────────────────┘

ADMIN initie toujours la connexion et pousse les donnees. FRONT n’ouvre jamais de socket vers ADMIN ni vers un composant interne. Si FRONT est compromis, l’attaquant n’obtient qu’un jeu de donnees en lecture seule et aucune route vers l’interieur.


Modele de securite

Chaque requete /replicate doit franchir trois couches independantes avant qu’un seul octet ne soit ecrit sur FRONT :

Couche Mecanisme
1. mTLS Le recepteur exige un certificat client verifie par la CA (RequireAndVerifyClientCert). Un pair sans certificat signe par la CA de replication n’atteint jamais le handler.
2. JWT Un jeton de composant RS256 revocable, signe par la cle de replication dediee d’ADMIN et verifie via ReplPubKey. Cette paire de cles est distincte de la paire de connexion utilisateur.
3. AES-GCM Le payload lui-meme est chiffre et authentifie avec la cle partagee ReplKey. Une mauvaise cle ou toute alteration fait echouer le tag GCM et le lot est rejete.

L’interface web servie aux utilisateurs finaux fonctionne sous TLS serveur ordinaire ; seul le recepteur de replication impose le TLS mutuel.


Donnees repliquees

FRONT recoit une liste blanche de donnees — uniquement ce dont les tableaux de bord ont besoin :

Categorie Buckets / donnees
Applications app_data, status_change, sla_monthly, bRule_change
Statut des moniteurs url, api, tcp, udp, ping, nslookup, db, snmp, wmi, sys, tag, disabled_state
Utilisateurs user (replique tel quel — FRONT a besoin du hash bcrypt pour authentifier les connexions ; les enregistrements utilisateur ne contiennent aucune adresse de sonde)
Composants server (assaini — uniquement nom, type, statut)
Hotes / equipements host, snmp_device, wmi_device (equipement + statut)
Decouverte hist, alerts, status, change
Metriques cpu, loadavg, memory, uptime
Fichiers Fichiers de topologie de decouverte sous ./discovery/* (lus depuis le disque par l’interface)

Donnees jamais repliquees

  • Les buckets setting, apiKeys, jwt et la configuration de l’integrateur restent sur ADMIN.
  • Les champs JSON sensibles sont retires de chaque valeur avant qu’elle ne quitte ADMIN : jetons, mots de passe, secrets, cles d’API, jetons Vault, mots de passe de liaison LDAP, cles privees — et tout ce qui pourrait porter un endpoint interne (ip, port, sched, endpoint, integratorEndpoint).
Les types de moniteurs temps reel s’affichent en UNKNOWN sur FRONT. Le Webserver est un proxy temps reel : pour les moniteurs url, api, tcp, udp, ping, nslookup, db et sys, il recupere le statut courant en direct depuis la sonde a chaque requete (voir Vue d’ensemble de la plateforme). Ces types n’ont aucun statut persiste a repliquer, ils apparaissent donc en UNKNOWN dans le graphe de dependances applicatives de FRONT. Le statut des equipements et de la decouverte est persiste et replique, et s’affiche normalement.
Graphe de dependances applicatives de FRONT affichant les types de moniteurs temps reel en UNKNOWN

Mecanismes de replication

ADMIN pousse les donnees de deux manieres, toutes deux en mode « fire-and-forget » via un tampon de reprise sur disque, afin qu’ADMIN ne se bloque jamais sur FRONT :

Mecanisme Description
Reconciliation periodique Un instantane complet des buckets de la liste blanche (+ fichiers de decouverte) toutes les FrontReconcileMins minutes (defaut 5). Cela suffit a maintenir FRONT correct et corrige automatiquement toute mise a jour manquee.
Push sur changement Un push optionnel a faible latence raccorde a quelques points de mise a jour de statut a forte valeur, pour des mises a jour quasi temps reel entre les reconciliations.

Si un push echoue (FRONT brievement injoignable), il est persiste dans un tampon sur disque et reessaye par un worker en arriere-plan, de sorte qu’une panne transitoire ne perd jamais de donnees. FRONT auto-ajuste aussi un indicateur d’obsolescence : la cadence de reconciliation est estampillee sur chaque lot, et FRONT signale le flux comme obsolete si aucun lot n’arrive dans un multiple de cet intervalle.


Periode de grace du statut

Par defaut, FRONT affiche les changements de statut des leur replication. En option, FrontGracePeriodMins (defaut 0 = desactive) retarde l’arrivee d’un statut applicatif non-OK vers les utilisateurs de FRONT pendant une fenetre configurable apres une transition OK → non-OK recente. Cela laisse aux equipes d’exploitation quelques minutes pour reagir avant que la panne ne devienne visible sur le tableau de bord public.

La periode de grace n’affecte que les instantanes destines a FRONT. Les vues temps reel d’ADMIN, l’historique de statut, les calculs de SLA et l’alerting ne sont jamais retardes.


Configuration

Le materiel de replication est provisionne hors bande dans webserver.json sur les deux hotes — il ne transite jamais par le canal de replication ni par l’interface Parametres.

Sur ADMIN

{
  "FrontEnabled": "true",
  "FrontEndpoint": "front-host:8050",
  "FrontReconcileMins": "5",
  "FrontGracePeriodMins": "0",
  "ReplKey": "<cle AES-256 hex>",
  "ReplClientCert": "<certificat client PEM presente a FRONT>",
  "ReplClientKey": "<cle client PEM>",
  "ReplCACert": "<CA PEM verifiant le certificat serveur de FRONT>",
  "ReplSignKey": "<cle privee RSA PEM signant les jetons /replicate>",
  "ReplPubKey": "<cle publique RSA PEM>"
}

Si exposes dans l’interface Parametres d’ADMIN, les champs operationnels peuvent aussi y etre geres :

Parametres ADMIN : configuration de la replication Webserver-Front

Sur FRONT

{
  "ReplKey": "<meme cle AES-256 hex qu'ADMIN>",
  "ReplCACert": "<CA PEM verifiant le certificat client d'ADMIN>",
  "ReplPubKey": "<meme cle publique RSA PEM qu'ADMIN>"
}
Champ Cote Description Defaut
FrontEnabled ADMIN "true" pour pousser vers FRONT ""
FrontEndpoint ADMIN FRONT host:port (recepteur de replication) ""
FrontReconcileMins ADMIN Cadence de l’instantane complet en minutes 5
FrontGracePeriodMins ADMIN Retarde le statut applicatif non-OK vers FRONT (minutes) 0 (off)
ReplKey les deux Cle AES-256 hex partagee pour le chiffrement du payload obligatoire
ReplClientCert / ReplClientKey ADMIN Certificat/cle client TLS presente a FRONT obligatoire
ReplCACert les deux CA verifiant le pair obligatoire
ReplSignKey ADMIN Cle privee RSA signant les jetons /replicate obligatoire
ReplPubKey les deux Cle publique RSA verifiant les jetons /replicate obligatoire
Avertissement au demarrage : si ReplPubKey est absent sur FRONT, le recepteur rejette toutes les requetes et les push d’ADMIN echouent silencieusement — FRONT journalise un avertissement explicite au demarrage pour detecter tot la mauvaise configuration.

Ce que FRONT n’execute pas

La compilation front ne demarre volontairement aucun des sous-systemes sortants ou de controle d’ADMIN. Elle execute uniquement le recepteur de replication (mTLS, port API), l’interface web en lecture seule (port WEB) et une purge de retention locale. Elle ne demarre pas :

  • les pompes de statut des sondes ni la resynchronisation des jetons de composants
  • la pompe de replication (reservee a ADMIN)
  • LDAP, SMTP ni l’integrateur sortant
  • la validation de licence (FRONT ne porte aucune licence)

Compiler Webserver-Front

# Hote DMZ Linux
GOOS=linux GOARCH=amd64 go build -tags front -o webserver_front

# Windows
go build -tags front -o webserver_front.exe

Les ressources statiques de l’interface sont servies depuis ./web-front/ sur disque et ne sont pas embarquees dans le binaire — mettez-les a jour sur place sur l’hote FRONT.

See also

Traductions