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.
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,jwtet 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).
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.
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 :
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 |
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
- Webserver — le plan de controle ADMIN qui alimente FRONT
- Vue d’ensemble de la plateforme — modele de proxy temps reel et roles des composants
- Modele de securite — frontieres de confiance globales
- Durcissement — recommandations DMZ et d’exposition