PULSARCHU DE GUYANE · DSIO
Dossier d'architecture

Banc de diagnostic distant & sonde souveraine

Architecture du canal de gestion à distance entre le serveur souverain (Abux) et les postes cibles : serveur de recette, sonde, canaux SSH & pollé, binaires, gouvernance.

Version : 2.3.1 Périmètre : LAN souverain · on-premise Cloud : aucun Audit : SHA-256 hash-chaîné

0 Vue d'ensemble

PULSAR pilote des postes Windows distants depuis un serveur Linux souverain, sans aucun service cloud. Deux canaux cohabitent : SSH direct (rapide, autonome, pour le développement/diagnostic) et la sonde pollée (captures d'écran, supervision humaine, audité). Toute la chaîne reste sur le LAN ; les élévations de privilèges se font par consentement visible (UAC), jamais par contournement.

1 Schéma d'architecture

🐧 ABUX · Linux souverain
192.168.1.55
serveur_recette.py — FastAPI · 9333 HTTPS (mTLS opt.) Console + 🤖 Assistant · Audit hash-chaîné pulse.py · win/winssh · win/winshot Instances Claude — PULSAR ⟷ REMOTEMK
SSH · 22───▶commandes + fichiers
Sonde · 9333◀───poll + captures (HTTPS)
HTTP · 9345───▶téléchargement binaires
🪟 WIN10 · poste cible
192.168.1.10
PULSAR-Sonde.exe / .ps1 — checkin · screenshot · shell sshd (OpenSSH) — pare-feu LAN-only remotemkd (cible de test)

Sens des flèches : SSH Abux→WIN10 ; sonde WIN10→Abux (poll sortant) ; téléchargement des binaires depuis Abux.

2 Les couches

Serveur de recette Abux · 9333

  • serveur_recette.py — FastAPI, HTTPS auto-signé, mTLS optionnel.
  • auth.py — PBKDF2 200k · TOTP (RFC6238) · cookies HMAC · RBAC.
  • Audit registre-actions.jsonl (SHA-256 hash-chaîné).
  • File commandes/ · boîte inbox/<ticket>/ (résultats + PNG).

Console & Assistant web

  • Barre latérale Souverain : Tableau de bord, Recette, Commandes, Captures, Audit, Gouvernance, Compte.
  • 🤖 Assistant — chat-relais (pièces jointes), réponses différées par fichier.
  • Changement de mot de passe, RBAC par rôle.

Canal SSH officiel · dev

  • ssh WIN10 "…" — OpenSSH, clé id_ed25519, pare-feu LAN-only.
  • Direct, faible latence, scp pour les fichiers ; instance REMOTEMK autonome.
  • Helpers win/winssh (PS encodé base64) · win/winshot (capture).

Canal sonde captures · supervisé

  • pulse.py → enqueue localhost → la sonde poll en HTTPS → ticket.
  • Scripts encodés base64 -EncodedCommand (zéro souci d'échappement).
  • Audité, gouverné par mode.json, idéal captures d'écran.

La sonde WIN10

  • PULSAR-Sonde.exe — C# .NET 8 WinForms, self-contained (~64 Mo), aucun pré-requis.
  • PULSAR-Sonde-Admin.ps1 — équivalent PowerShell (BOM UTF-8).
  • Actions : checkin · screenshot · shell. Capture via System.Drawing.
  • Auto-démarrage : tâche planifiée à l'ouverture de session.

Build & binaires 9345

  • Projet sonde-exe/ — cross-build depuis Linux (EnableWindowsTargeting).
  • SDK .NET 8 en userspace ($HOME/.dotnet), dotnet publish single-file.
  • Diffusion via le serveur de téléchargement HTTP 9345.

3 Flux de données — une commande de bout en bout

  1. SSH — l'opérateur lance ssh WIN10 "<PowerShell>" ; exécution immédiate, stdout renvoyé. Aucun intermédiaire.
  2. Sondepulse.py dépose une commande (POST /api/agent/commande, localhost only).
  3. Selon mode.json : pilote (manuel), hybride (approbation console), autonome (livraison directe).
  4. La sonde poll GET /api/agent/commandes (jeton), exécute, capture l'écran si besoin.
  5. Renvoi POST /api/agent/resultat (+ /capture binaire) → ticket dans inbox/, consigné à l'audit.

4 Inventaire des composants

ComposantEmplacementRôle
serveur_recette.pyAbux · recette/API + console (FastAPI, 9333 HTTPS)
auth.pyAbux · recette/Auth PBKDF2 + TOTP + RBAC + audit
pulse.pyAbux · recette/Pilotage de la sonde (shot / run, base64)
win/winssh · winshotAbux · recette/win/PowerShell & capture via SSH
PULSAR-Sonde.exeWIN10 (servi 9345)Sonde compilée C# .NET 8 self-contained
PULSAR-Sonde-Admin.ps1WIN10 · demo-kit/Sonde GUI PowerShell (équivalent)
Installer-Sonde-Service.ps1WIN10OpenSSH + pare-feu LAN + clé + auto-démarrage
REMOTEMK-DIAG.mdAbux · recette/Bus de coordination entre instances Claude
mode.jsonAbux · recette/Gouvernance (pilote / hybride / autonome)

5 Gouvernance & sécurité

🛡️ Souveraineté — Tout reste sur le LAN, on-premise, sans cloud. Pare-feu limité au sous-réseau (192.168.1.0/24). Authentification par clé (SSH) ou jeton (sonde). Audit hash-chaîné inviolable côté serveur.
⚖️ Élévation = consentement visible. Sur Windows, l'installation d'OpenSSH passe par une invite UAC explicite. Les contournements d'UAC (détournement de fodhelper & co.) sont refusés par principe — c'est précisément le type d'élévation furtive que le control plane PULSAR est censé détecter.

Compromis assumé : les commandes du canal SSH ne traversent pas l'audit hash-chaîné de PULSAR (acceptable pour un loop de développement). Pour une traçabilité complète, le canal sonde reste disponible.

6 Coordination multi-agents

Deux instances Claude collaborent via un bus fichier append-only : PULSAR (sonde + infrastructure) et REMOTEMK (développement du KVM Rust testé sur WIN10). Chacune signe ses entrées dans REMOTEMK-DIAG.md ; REMOTEMK pilote WIN10 en SSH de façon autonome, PULSAR n'intervient qu'en supervision.

7 État & feuille de route

Livré
Canal SSH direct Abux → WIN10 — vérifié (ssh WIN10 whoami), instance REMOTEMK autonome.
Livré
Sonde Windows .exe — C# .NET 8 self-contained, servi sur 9345.
Livré
Console + Assistant + audit + helpers — recette opérationnelle.
En cours
Validation interactive de l'exe sur WIN10 — double-clic + check-in.
À venir
Sonde macOS — Python screencapture + même protocole, puis .app.
À venir
App desktop PULSAR macOS — Electron (build .dmg sur Mac).