Vue d'ensemble
NeonFlare Community Edition est un dashboard de
sécurité self-hosted et gratuit qui réunit trois besoins
habituellement éclatés entre plusieurs outils : la surveillance de
ton réseau, une référence d'outils pentest avec terminaux
embarqués, et un suivi GRC (Gouvernance, Risques & Conformité).
C'est un site statique -- aucune base de données,
aucun backend applicatif. Toute ta configuration (nœuds réseau,
outils, checklist GRC, préférences) vit dans le
localStorage de ton navigateur.
file://) -- aucune des fonctionnalités ne
dépend d'un appel réseau vers un serveur applicatif.
Premiers pas
Au tout premier lancement, un assistant guidé se déclenche automatiquement et pointe directement les sections réelles du Dashboard (Réseau, Outils, GRC), puis la page Settings où tout se configure. Chaque étape est passable, et l'assistant reste accessible à tout moment depuis Settings → Assistant de configuration → Relancer l'assistant de configuration.
La configuration démarre volontairement avec des exemples/valeurs par défaut (une checklist GRC ISO 27001 / NIST CSF déjà remplie, par exemple) plutôt qu'un dashboard totalement vide -- tu supprimes ou remplaces ce qui ne te correspond pas depuis Settings.
Le Dashboard
La page centrale est composée de panneaux indépendants, redimensionnables et déplaçables (glisser l'en-tête d'un panneau, ou sa poignée en bas à droite) :
- Réseau -- les nœuds de ton infrastructure
- Outils -- référence de commandes pentest par catégorie
- DevSecOps -- même principe qu'Outils, mais pour les CLI cloud/infra (Docker, Kubernetes, Terraform, AWS, Azure)
- Website -- tes liens/services web par catégorie
- Couverture GRC -- résumé de ta progression sur les 20 domaines
- System log -- journal d'activité
- Shells -- terminaux embarqués ouverts à la demande
- Prochaines revues -- dates de revue tirées des registres Actifs/Risques, en retard signalé
Chaque panneau peut être replié (bouton – dans son
en-tête) ou masqué entièrement -- soit depuis
Paramètres, soit directement dans le
Dashboard via le bouton ☰ Panneaux de la barre du
haut (mêmes cases à cocher, appliquées tout de suite, sans changer
de page). La disposition (position/taille, glisser l'en-tête ou la
poignée en bas à droite d'un panneau) est mémorisée par dashboard.
Réseau
Le panneau Réseau affiche les nœuds que tu as déclarés : titre, sous-titre, catégorie, icône, lien direct. Vide par défaut -- ajoute les tiens depuis Settings → Config Network (ajout, édition, suppression, import/export JSON, réinitialisation aux valeurs par défaut).
Outils & Terminaux
Fini les cheatsheets planqués dans un fichier .txt.
Le panneau Outils regroupe des catégories de commandes (recon, exploitation, post-exploitation, etc.). Cliquer une commande la copie directement dans un terminal embarqué (bash, zsh ou PowerShell selon ce que tu ouvres) -- pas de copier/coller manuel entre fenêtres. Avec le bouton 🔗 Link de la barre du Dashboard, une commande choisie ici peut même atterrir dans le terminal d'un autre onglet du navigateur (utile avec deux dashboards ouverts côte à côte).
Terminaux embarqués
Ouverts via le bouton "+ Shell" du Dashboard, ils restent actifs même en changeant de page dans la sidebar (ils ne sont pas détruits à chaque navigation). L'opacité des fenêtres de terminal se règle depuis Settings.
scripts/ttyd-shells.sh start sur la machine qui
héberge le site (nécessite ttyd
et tmux installés). Ce script lance les instances ttyd
derrière les 3 types de terminal, chacune liée uniquement à
loopback (jamais exposée sur le réseau, même si le
site l'est). Sans ce script actif, le panneau Shells reste vide,
quel que soit ton mode d'hébergement.
scripts/ttyd-shells.sh start [n]
démarre n instances par type de terminal (bash, zsh,
pwsh -- 6 par défaut) ; scripts/ttyd-shells.sh status
liste ce qui tourne et sur quel port ; scripts/ttyd-shells.sh
stop arrête tout. Chaque instance ttyd lance sa commande
dans une session tmux partagée (tmux new-session
-A) plutôt qu'un process isolé, pour que le "copier vers le
shell" du Dashboard puisse s'y attacher et injecter une commande
dans le même terminal que celui affiché dans le navigateur.
GRC (Gouvernance, Risques & Conformité)
20 domaines détaillés (gouvernance, analyse et traitement des risques, IAM, cloud, DevSecOps, continuité, vie privée, et plus), organisés en 5 sections (GRC générale, sécurité réseau, API, WebApp, base de données). Chaque domaine a sa propre checklist, pré-remplie avec un référentiel ISO 27001 / NIST CSF par défaut.
Export & suivi
- Export JSON, Word ou PDF -- sur un domaine ou sur l'ensemble
- Import JSON pour restaurer un état sauvegardé
- Barres de progression et badges de couverture par domaine (activables/désactivables depuis Settings)
- Réinitialisation complète si besoin de repartir de zéro
Registres opérationnels
Trois des domaines GRC vont au-delà de la checklist d'auto-évaluation et offrent un vrai registre CRUD, en plus de la checklist :
- Registre d'actifs (page Actifs) -- type, classification CIA (confidentialité/intégrité/disponibilité), rôle primaire/support, dépendances entre actifs, criticité calculée automatiquement
- Registre de risques (page Analyse des risques) -- menace/vulnérabilité, actifs concernés, matrice probabilité × impact (ISO 27005), plan de traitement, date de prochaine revue
- Journal d'incidents (page Incidents) -- sévérité, timeline détection → réponse → résolution, durée de résolution calculée, post-mortem
- Mapping de contrôles -- une partie des items de checklist portent un tag ISO 27001 Annexe A / NIST CSF 2.0 / CIS Controls v8, pour relier une case cochée à un contrôle précis d'un référentiel
Findings
Distinct du panneau Outils (aide-mémoire de commandes) : un vrai tracker de findings pour une mission de test d'intrusion, accessible depuis le menu Findings (juste sous Tableau de bord, dans la sidebar).
- Engagements -- nom, client, scope, dates, statut ; historique de plusieurs missions
- Findings -- titre, description, score CVSS (badge de sévérité Faible/Moyenne/Élevée/Critique), preuves en texte libre, statut ouvert/corrigé/accepté
- Preuves en texte, plus une référence d'image optionnelle par finding (chemin ou fichier réattaché -- voir la note ci-dessous)
- Génération de rapport Word ou PDF par engagement, findings triés par CVSS décroissant
localStorage (~5-10 Mo, partagé avec
tous les autres registres) avec des captures d'écran. Deux façons
de charger l'aperçu : « Charger l'aperçu depuis ce
chemin » (fonctionne si le site est ouvert en
file://, ou si le chemin est une URL atteignable en
http/https) ou « Choisir un fichier » (marche
toujours, quel que soit le mode d'hébergement, mais le navigateur
n'expose jamais le chemin réel du fichier choisi -- juste son
nom). Rouvre/recharge la page et l'aperçu disparaît -- c'est
voulu, il faut le recharger. Si une image est chargée au moment
de l'export, elle est intégrée directement dans le rapport
Word/PDF ; sinon, seule la référence texte y apparaît.
Topologie
Schéma réseau interactif : les nœuds se déplacent directement sur la page (glisser-déposer), et peuvent être imbriqués les uns dans les autres pour former des regroupements (par exemple, un hyperviseur "boîte" contenant ses VMs). Ajout de nœuds personnalisés et gestion des liens entre eux depuis Settings → Config Topology, avec le même export/import/réinitialisation JSON que les autres registres.
Exemple concret
Le réseau fictif d'une PME ("Acme Corp"), construit avec les outils ci-dessus pour donner une idée de la portée possible :
- Deux boîtes imbriquées : la DMZ (serveur Web + serveur Mail) et l'hyperviseur ESXi (2 VMs) -- chaque enfant reste rattaché à sa boîte quand elle est déplacée
- Des nœuds libres pour tout ce qui n'a pas besoin d'un regroupement : pare-feu, switch, contrôleur de domaine, serveur de fichiers, postes utilisateurs, sauvegarde cloud
- Des liens tracés entre nœuds de haut niveau pour représenter les segments réseau, sans devoir positionner chaque VM/serveur imbriqué individuellement
Multi-Dashboard
Crée autant de dashboards indépendants que tu veux depuis Settings → Dashboards. Chacun garde sa propre combinaison de sections activées et sa propre disposition de panneaux -- utile par exemple pour séparer :
- Une vue orientée opérations réseau -- topologie, inventaire réseau et outils réseau au premier plan
- Une vue orientée pentest -- engagements, findings CVSS et terminaux embarqués
- Une vue orientée GRC -- checklist, registre des actifs, des risques et des incidents
Paramètres (Settings)
Tout se configure depuis une seule page, sans toucher au code -- présentée en deux volets : une nav à gauche par section, le contenu de la section choisie à droite. (Pour figer des valeurs par défaut dans le déploiement lui-même, voir Valeurs par défaut du déploiement.)
- Apparence -- Thème (5 variantes : Standard, Neon Terminal, Blade Runner, Black ICE, et Personnalisé avec un sélecteur de couleur pour choisir sa propre couleur d'accent), Langue (français/anglais, interface commune uniquement), Background (fond d'écran global, remplace celui défini par défaut sur chaque page)
- Assistant & réinitialisation -- relance le tour guidé ; sauvegarde complète (un seul JSON pour tous les registres) ; réinitialisation par registre ou totale -- voir ci-dessous
- Interface -- Pages visibles (masque des liens dans le menu latéral, n'empêche pas l'accès direct à la page) et Sections du Dashboard (par dashboard, quelles sections sont actives -- même réglage que le bouton ☰ Panneaux directement dans le Dashboard)
- GRC & Shells -- pourcentages de couverture GRC, "Ton nom" pour la traçabilité, opacité des fenêtres de terminal
- Registres -- Config Network / Tools / DevSecOps / Website / Topology / About, chacun avec export JSON, import JSON et réinitialisation par défaut
- Sécurité -- coffre-fort (chiffrement du localStorage), voir Limites connues
Assistant & réinitialisation
Trois outils dans cet onglet, pensés pour "tout casser proprement" au besoin :
- Sauvegarde complète -- un seul fichier JSON avec tous les registres (Réseau, Outils, DevSecOps, Website, Topologie, About, Checklist GRC, Actifs, Risques, Incidents, Findings) en un clic, pratique pour migrer de navigateur ou sauvegarder avant une réinitialisation
- Réinitialiser un registre -- un bouton par registre, chacun indépendant des autres
- Tout réinitialiser -- enchaîne tous les registres ci-dessus derrière une seule confirmation ; le coffre-fort n'est jamais touché par ce bouton (nécessite ta passphrase, geste séparé dans l'onglet Sécurité)
Valeurs par défaut du déploiement (config/)
Il y a deux façons de configurer NeonFlare. Depuis Settings
(décrit ci-dessus) : chaque changement vit dans le
localStorage de ce navigateur, sur cette machine
uniquement -- non permanent, propre à qui l'a fait. En éditant
les fichiers config/*.js : ça définit ce que voit
tout navigateur neuf avant même d'ouvrir Settings -- permanent,
embarqué dans le déploiement (idéal pour une instance solo ou une image
d'équipe).
Chaque config/*.js est une graine. NeonFlare
ne la lit que tant que ce registre n'a jamais été touché dans l'UI sur ce
navigateur. Le premier ajout / édition / suppression dans Settings recopie
la liste dans localStorage, et à partir de là c'est
localStorage qui prime -- éditer le fichier n'a plus d'effet
sur ce navigateur (un « Réinitialiser ce registre » dans
Settings → Assistant efface la copie localStorage et rend la
main au fichier).
Pas besoin d'écrire le JSON à la main : Settings → Registres →
Config Network a un bouton « ⬇ Exporter en reseau.js »
-- construis ta liste de nœuds dans l'UI, clique, colle le résultat dans
config/reseau.js, redéploie.
Les fichiers
| Fichier | Variable | Contenu |
|---|---|---|
config/reseau.js | reseauConfig | Nœuds du panneau Réseau du Dashboard |
config/topology.js | topologyConfig | Schéma de la page Topologie (nœuds + liens) |
config/about.js | aboutConfig | Carte « permit » et liens de la page About |
config/neonflare-technology.js | neonflareTechnologyConfig | Cartes de la page NeonFlare Technology |
config/grc-author.js | grcAuthorConfig | Nom par défaut dans le journal de modifications GRC |
config/encryption.js | encryptionConfig | enabled: true fait apparaître la carte Chiffrement dans Settings (n'active rien seul) |
config/settings.js | settingsConfig | Fond d'écran de la page Settings |
config/tools/<page>.js | tools<Page>Config | Fond d'écran d'une page Outils (web, linux, ad, recon…) |
Structure de chaque fichier
Ce ne sont pas des JSON : chaque fichier déclare une constante globale
(const xConfig = { … };). Garder la structure, changer les
valeurs. Les chemins d'images sont relatifs à config/
(donc ../assets/images/…).
config/reseau.js
const reseauConfig = {
background: "../assets/images/kali_xl_sharp.png",
cards: [
{
url: "https://host.example", // ouvert dans un onglet au clic
img: "../assets/images/router.png",
title: "Titre",
sub: "Sous-titre",
category: "Réseau", // regroupe les cartes
enabled: true // optionnel (défaut: true)
}
// ... autant de cartes que voulu
]
};
config/topology.js
const topologyConfig = {
links: [ ["nodeA", "nodeB"] ], // paires d'ids de nœuds reliés
nodes: [ /* arbres DOM des nœuds -- le plus simple : construire dans
l'éditeur Topologie puis exporter, pas à la main */ ]
};
config/about.js
const aboutConfig = {
background: "../assets/images/hacker.jpg",
permit: {
header: "", title: "", text: "", id: "",
qrImage: null, // chemin d'image ou null
barcodeImage: null
},
links: [
{ label: "GitHub", url: "https://...", enabled: true }
]
};
config/neonflare-technology.js
const neonflareTechnologyConfig = {
background: "../assets/images/kali_xl_city.png",
cards: [
{ url: "#", img: "../assets/images/dragon-favicon.png",
title: "Documentation", sub: "Guides et références" }
]
};
config/grc-author.js
const grcAuthorConfig = {
defaultName: "" // nom attaché aux modifs GRC tant que Settings n'est pas rempli
};
config/encryption.js
const encryptionConfig = {
enabled: false // true => carte "Chiffrement" visible dans Settings
};
config/settings.js
const settingsConfig = {
background: "../assets/images/kali_xl_forest_sharp.png"
};
config/tools/<page>.js
// un fichier par page Outils : web, linux, windows, ad, recon, c2,
// aws, azure, docker, kubernetes, terraform, lateral, osint, post, misc
const toolsWebConfig = {
background: "../assets/images/atlantis.png"
};
Bon à savoir
- Aucune étape de build : éditer, servir, recharger.
- Ces fichiers ne contiennent aucune donnée sensible par défaut et ne sont jamais envoyés nulle part -- ils sont servis comme le reste du site statique.
- Un fichier de graine mal formé (virgule en trop, guillemet manquant) casse la page qui le charge -- vérifie la console du navigateur en cas de doute.
Architecture
Site 100% statique -- HTML/CSS/JS, servi par nginx (voir
Téléchargement) ou ouvert
directement en local. Aucune donnée ne quitte ton navigateur :
chaque registre de configuration est lu/écrit dans
localStorage, sans appel réseau vers un serveur
applicatif -- compatible avec un usage en file://
pur, sans même de serveur web.
La page racine (index.html) agit comme coquille :
elle charge chaque section dans un iframe et communique avec elle
via postMessage (thème, langue, visibilité des
pages...). Les terminaux embarqués survivent à la navigation
parce qu'ils sont rattachés à cette coquille plutôt qu'à la page
affichée dans l'iframe.
Navigateurs supportés : Chromium (Chrome, Edge,
Brave...) et Firefox, versions stables courantes
-- traités comme cibles de premier rang, en http(s)://
comme en file://. La suite de tests du dépôt
(ProjetTest/, y compris le chiffrement optionnel via
WebCrypto) est rejouée à l'identique sur les deux moteurs. Safari
et les anciens navigateurs ne sont pas testés.
Licence
La technologie NeonFlare Community Edition (le dashboard, ses sections, son code source) est publiée sous licence MIT -- libre d'usage, de modification et de redistribution, y compris à des fins commerciales, tant que la notice de copyright originale est conservée. Aucune garantie n'est associée au logiciel (voir le texte complet de la licence MIT). Ce site vitrine suit la même licence.
Limites connues
Transparence sur ce que NeonFlare n'est pas (encore) :
localStorage d'un seul navigateur. Une équipe ne
peut partager un état qu'en s'échangeant des exports JSON à la
main. Voir Pro Edition pour
la piste envisagée (pas encore construite) pour le multi-user.
FAQ
Est-ce que mes données sont envoyées quelque part ?
Non. Tout reste dans le localStorage de ton navigateur, sur ta machine.
Je perds ma config si je vide mon navigateur ?
Oui -- exporte régulièrement en JSON si tu veux pouvoir restaurer ta configuration : soit tout d'un coup depuis Settings → Assistant & réinitialisation → Sauvegarde complète, soit registre par registre (chacun a aussi son propre bouton Export).
Puis-je l'utiliser en équipe ?
Aujourd'hui, chaque personne a sa propre instance/config locale -- voir Limites connues. C'est une piste d'évolution suivie mais pas encore construite -- voir Pro Edition.