Sécurité & Transparence technique — SuperDMZ

Dernière mise à jour : 1 juin 2026

Cette page explique en détail technique comment SuperDMZ traite le trafic qui passe par les tunnels, quelles données restent accessibles à nos serveurs et lesquelles sont opaques par conception. Elle complète la Politique de confidentialité : la politique répond à "quelles données personnelles nous collectons" ; cette page répond à "ce qui se passe avec le trafic de vos tunnels".

1. Aperçu de l'architecture

SuperDMZ est un service de tunnels inverses : vous exécutez un client léger dans votre réseau interne, il ouvre une connexion sortante (WebSocket sur TLS) jusqu'à l'un de nos nœuds publics, et les visiteurs externes atteignent votre service local sans IP publique ni ouverture de port firewall.

Flux du trafic :

Mode HTTP / HTTPS — TLS se termine à notre edge

Le certificat public *.dmzgate.com est négocié au nginx du nœud. Le contenu vit en RAM, n'est jamais écrit sur disque ni indexé.

Visiteur
navigateur public
🔒 TLS public
Nœud SuperDMZ
nginx → Go server
🔒 WebSocket TLS
Votre client
sur votre LAN
loopback
Service interne
127.0.0.1:3000…
Mode TCP (SSH, RDP, MySQL…) — opaque par conception

Nginx transmet les octets bruts. Notre serveur ne déchiffre pas le payload — le TLS effectué par votre service traverse de bout en bout.

Visiteur
SSH / RDP / etc.
🔒 TLS de votre service
Nœud SuperDMZ
passe chiffré
via WS TLS
Votre client
sur votre LAN
bout-en-bout
Service interne
sshd, mysqld…

Chaque nœud public est une machine dédiée dans une région (actuellement São Paulo, Virginie, Francfort et Tokyo). Toute la communication client-nœud transite par TLS 1.2/1.3.

2. Tunnel HTTP / HTTPS — ce que le serveur peut voir

Pour les tunnels HTTP, le certificat public (*.dmzgate.com, émis par Let's Encrypt) se termine au nginx du nœud. C'est architecturalement identique à Cloudflare Tunnel et ngrok — pas spécifique à SuperDMZ. En conséquence :
  • Le contenu de la requête (URL, headers, body) existe en RAM sur le nœud le temps nécessaire pour le transmettre à votre client (typiquement millisecondes).
  • Ce contenu n'est jamais écrit sur disque, jamais indexé, jamais loggué en clair. Les logs d'accès (nginx) ne contiennent que des métadonnées opérationnelles : timestamp, méthode HTTP, path, status, bytes entrée/sortie, temps de réponse, IP source.
  • Cookies, headers d'auth (Authorization, Cookie) et body POST n'apparaissent jamais dans les logs.
  • Les tokens internes SuperDMZ (utilisés par le client pour s'authentifier au nœud) sont masqués automatiquement avant tout logging.

Implication honnête : techniquement, un opérateur malveillant avec root sur le nœud pourrait intercepter le contenu en RAM pendant qu'il est transmis. Cela vaut pour tout service de tunnel inverse avec TLS terminé en bordure (ngrok, Cloudflare Tunnel, localtunnel). Pour les scénarios où c'est inacceptable (PCI-DSS, santé, secrets d'entreprise), nous recommandons le mode TCP décrit ci-dessous.

3. Tunnel TCP (SSH, RDP, MySQL, etc.) — opaque par conception

Pour les tunnels TCP, le serveur ne voit pas le contenu. Nginx transmet les octets bruts au Go server, qui les passe sur le WebSocket TLS jusqu'à votre client — sans interprétation, sans parsing, sans déchiffrement de payload.
  • SSH, RDP, MySQL et tout protocole TCP qui transporte sa propre cryptographie (y compris TLS effectué par votre propre service) atteint la destination chiffré de bout en bout.
  • SuperDMZ ne voit que : ports source/destination, comptage d'octets, timestamps de début/fin de connexion.
  • C'est le mode recommandé pour toute charge régulée (santé, finance, secrets industriels) et pour les administrateurs IT qui ont besoin d'accéder à des machines internes sans confier la clé à aucun maillon de la chaîne.

4. HTTPS passthrough (BYO certificate) — roadmap

Pour les clients qui ont besoin d'HTTPS public sans TLS terminé à notre edge, l'option passthrough est sur la roadmap : le nginx du nœud fait uniquement du SNI routing et les octets TLS chiffrés sont transmis jusqu'à votre service interne, qui présente son propre certificat. Pas d'ETA public ; demandez par e-mail si c'est critique pour votre cas.

5. Ce que nous NE loguons PAS (règle explicite)

  • Body de requête ou de réponse.
  • Headers Authorization, Cookie, Set-Cookie, X-Auth-Token et variantes connues.
  • Query strings sensibles (clés d'API passées via URL — déconseillé, mais masquées avant log si présentes).
  • Tokens internes SuperDMZ échangés entre client et nœud (masqués via filtre de log avant tout fichier).
  • Contenu des tunnels TCP, peu importe leur nature.

Rétention logs nginx : 14 jours. Logs d'audit du panneau (login, CRUD tunnel) : 90 jours. Détails dans la Politique de confidentialité.

6. Hardening des nœuds

  • SSH avec auth par mot de passe uniquement pour un utilisateur non privilégié. Login root via SSH désactivé sur tous les nœuds.
  • Firewall (UFW) avec whitelist minimale : 22/tcp (SSH), 80/tcp (redirect HTTP→HTTPS + Let's Encrypt), 443/tcp (HTTPS public + WebSocket clients).
  • fail2ban avec bans progressifs sur tentatives de force brute SSH et panneau admin.
  • Mises à jour de sécurité automatiques (unattended-upgrades).
  • Résolveur DNS figé à 1.1.1.1 / 1.0.0.1 (Cloudflare) + 9.9.9.9 (Quad9). /etc/resolv.conf avec flag chattr +i.
  • Panneau admin sur path non évident, protégé par rate-limit, 2FA, CSRF sur chaque POST et IP-ban automatique.
  • Secrets sensibles (clé Stripe, mot de passe SMTP, token GoDaddy) chiffrés au repos en base avec clé hors versionnement.

7. Disponibilité, redondance et absence de SLA

Posture honnête sur l'infrastructure : nous opérons actuellement 4 nœuds actifs (São Paulo, Virginie, Francfort et Tokyo). Chaque tunnel est fixé sur un nœud choisi par le client à la création.

Le failover est aujourd'hui manuel. Si un nœud tombe, la procédure est de repointer l'enregistrement A du nœud sur Cloudflare vers une autre IP saine (changement DNS avec TTL 60s) — les clients se reconnectent automatiquement dès que le DNS est mis à jour. Temps typique de détection + action : 5 à 30 minutes selon l'heure.

Nous ne vendons pas de SLA contractuel. Le plan Business inclut un support prioritaire (réponse initiale sous 4h ouvrées) — pas de crédit de downtime garanti. Promettre un SLA exige un historique mesuré, et nous collectons encore ces données avant de publier un chiffre défendable. Même posture que sur les audits externes : transparence radicale plutôt que vendre des promesses que nous ne pouvons tenir.

Status public en temps réel : superdmz.com/status — affiche l'état de chaque nœud (online/offline) et les incidents récents, avec rafraîchissement automatique chaque minute.

Roadmap de disponibilité : failover automatique via health-check + réécriture DNS par l'API Cloudflare ; historique d'uptime mois par mois sur la status page ; publication du SLA une fois 6 mois de données consistantes accumulées.

8. Mot de passe, 2FA et protection du compte

  • Mots de passe stockés en hash bcrypt avec cost factor recommandé par l'industrie. Jamais en clair, même pas en log d'erreur.
  • 2FA actuellement disponible : code à 6 chiffres par e-mail (opt-in, par utilisateur).
  • Roadmap proche : 2FA via TOTP (Google Authenticator, Authy, Aegis) et Passkeys/WebAuthn — voir "Roadmap de sécurité" ci-dessous.
  • Changement d'e-mail principal exige code sur le nouveau + alerte sur l'ancien avec lien "bloquer le compte maintenant" (fenêtre de 7 jours).
  • Suppression de compte avec fenêtre de récupération de 48h par lien e-mail avant la purge définitive.

9. Roadmap de sécurité

Items publiquement engagés pour les prochains cycles :
  • 2FA TOTP (RFC 6238) : setup par QR code, backup codes, e-mail en fallback recovery.
  • Passkeys / WebAuthn : authentification sans mot de passe résistante au phishing, alignée FIDO2.
  • HTTPS passthrough (SNI routing) : TLS sans terminaison à l'edge SuperDMZ (BYO certificate).
  • Client open-source : code du client Go publié pour audit.
  • Changelog de sécurité public : CVE internes et fixes documentés sur /changelog.
  • Self-host complet des assets : retirer les dépendances CDN restantes (polices, icônes, Tailwind) en servant tout depuis notre domaine.

Pas de SLA public pour l'instant. Cette section sera mise à jour à mesure que chaque item arrive en prod.

10. Signaler une vulnérabilité

Vous avez trouvé un problème de sécurité ? Nous apprécions la divulgation responsable.

Ce que nous demandons : n'exploitez pas au-delà du nécessaire pour confirmer la vulnérabilité, n'accédez pas aux données d'autres utilisateurs, et donnez-nous une fenêtre raisonnable pour corriger avant divulgation publique. En retour : réponse initiale sous 5 jours ouvrés, crédit public (si souhaité) et mois gratuits de plan payant en remerciement — proportionnel à la sévérité.

11. À propos des audits externes

SuperDMZ ne possède actuellement pas de certifications telles que SOC 2 Type II, ISO 27001 ou ISAE 3402. Nous sommes un service petit et indépendant ; ce type de certification a un coût et un overhead opérationnel incompatibles avec le stade actuel du produit. Plutôt que de prétendre à un audit que nous n'avons pas, nous avons opté pour la transparence radicale : architecture documentée sur cette page, code du client en route vers l'open-source et canal ouvert pour les rapports de vulnérabilité. Si vous avez besoin d'un fournisseur SOC 2 aujourd'hui, nous savons que nous ne sommes pas encore le meilleur choix — et nous le disons clairement.