Contexte / besoin
Une plateforme auto-hébergée accumule vite des services sensibles : dashboards d’administration, gestionnaire de mots de passe, outils internes. Les exposer sur Internet derrière un simple login, c’est offrir sa surface d’attaque au scan permanent du réseau. Il faut un accès nomade (déplacements, mobile) sans jamais publier ces services.
Contraintes
- Surface publique minimale. Seuls les services volontairement publics doivent répondre depuis Internet.
- Nomadisme réel : accès depuis n’importe où, y compris mobile, sans gymnastique de configuration.
- Pas d’usine à gaz. Un seul mainteneur : la gestion de clés et de configurations d’un VPN classique par appareil est une charge récurrente que je veux éviter.
Options envisagées
- Exposition publique durcie (fail2ban, MFA, geoblocking) : chaque service reste une porte ouverte sur Internet. Ça durcit l’accès, la surface exposée reste la même.
- VPN auto-géré (WireGuard ou OpenVPN nus) : solide, mais distribution des clés, rotation et configuration par appareil restent à ma charge.
- Tailscale, du WireGuard managé : identité par appareil, chiffrement pair-à-pair, ACLs, et zéro port entrant à ouvrir.
Décision & pourquoi
Tailscale comme plan d’accès privé. Chaque appareil est authentifié et membre d’un réseau maillé chiffré, le tailnet. Les services privés ne sont routables que là.
La défense est en profondeur : même si un service privé répondait par erreur
sur l’edge public, le middleware Traefik tailscale-only n’accepte que
les connexions provenant du tailnet. L’exposition d’un service se déclare
dans sa configuration, indépendamment de l’endroit où il tourne.
Un subnet router étend l’accès aux équipements qui ne peuvent pas exécuter le client Tailscale. L’accès distant passe alors par un nœud authentifié du tailnet plutôt que par une exposition directe.
Tradeoff assumé
Le plan de contrôle (coordination, identité) dépend d’un tiers, Tailscale, et l’identité est adossée à un fournisseur SSO. Compromis accepté : le trafic reste chiffré de pair à pair, le tiers ne voit pas les données, et l’alternative auto-gérée coûterait une charge opérationnelle disproportionnée pour un mainteneur seul. Si la situation change, une porte de sortie existe (Headscale, WireGuard nu).
Résultat
- Sécurisé : les services sensibles ne sont pas attaquables depuis Internet, ils n’y existent pas. Double verrou, réseau et middleware à l’edge.
- Maintenable : pas de gestion de clés manuelle, pas de configuration par appareil. Ajouter un appareil se résume à l’authentifier.
Répartition public / privé (qui répond à quoi)
Sans détail de topologie, la règle de répartition est simple :
- Publics : les sites clients, et les seuls endpoints conçus pour recevoir du trafic extérieur, comme l’ingest d’événements du Hub, rate-limité et authentifié.
- Tailnet uniquement : tout le reste. Dashboards, administration, outils internes, gestionnaire de mots de passe.
- Hybride : un même service peut exposer une partie publique et une partie privée. La frontière se déclare route par route à l’edge (Reverse proxy & TLS).