Un gros plan montre un enchevêtrement de câbles réseau bleus et blancs connectés à des baies de serveurs.

Ghostunnel, proxy TLS pour sécuriser les services internes

Ghostunnel permet de sécuriser des applications backend qui, par nature, ne gèrent pas le protocole TLS. Ce proxy open source se positionne entre le client et le service, agissant soit en mode serveur, soit en mode client, pour imposer une connexion cryptée.

Son rôle est de décharger les applications de la complexité de la gestion des certificats, tout en assurant une preuve d’identité réciproque entre les deux parties. En mode serveur, il accepte les connexions TLS sécurisées de l’extérieur avant de les acheminer vers le service interne, qui peut rester en clair sur un socket UNIX ou TCP. Inversement, en mode client, il prend une connexion locale non sécurisée et la chiffre pour la présenter au service distant. Les deux côtés prouvent leur identité, tandis que les applications continuent de communiquer en texte clair.

Pour que le proxy démarre en mode serveur, il faut définir qui est autorisé à passer. L’utilisateur doit spécifier au moins une vérification : le nom commun (CN), l’unité organisationnelle (OU), un nom DNS ou URI dans le certificat, un épinglage de clé publique, ou une politique. Plusieurs critères peuvent être combinés, et ils sont traités comme une disjonction logique (OU). Ghostunnel interprète les identifiants SPIFFE et, pour des exigences plus complexes, il évalue une politique Open Policy Agent (OPA), laquelle peut être rechargée pendant que le tunnel tourne.

Illustration de style sérigraphie montrant un service local enveloppé par un bouclier numérique multicouche avec des points d'entrée certifiés.

Les certificats et les clés peuvent provenir de fichiers PEM ou PKCS#12, du trousseau d’accès macOS, du magasin de certificats Windows, de l’API de charge de travail SPIFFE, ou d’un module matériel PKCS#11, y compris une YubiKey. En mode serveur, il supporte également Let’s Encrypt via ACME. Un avantage notable, c’est la capacité de recharger les certificats via SIGHUP ou par intervalles de temps, ce qui rend les identifiants à courte durée de vie pratiques : le certificat tourne, le proxy le récupère, et rien ne redémarre.

Ghostunnel impose des sécurités par défaut. Les écouteurs et les cibles sont restreints à localhost ou aux sockets UNIX, sauf si l’on force l’utilisation de --unsafe-listen ou --unsafe-target. Sur Linux, il s’isole par défaut avec Landlock pour limiter les privilèges du processus. Pour le monitoring, un port de statut expose des métriques en format JSON et Prometheus.

Pour démarrer, il faut des certificats clients et serveurs X.509. Si l’on n’en possède pas, des outils comme mkcert ou cfssl permettent d’en créer. Pour les tests rapides, le générateur intégré permet de créer des certificats temporaires via la commande go tool mage test:keys, mais ces derniers ne doivent jamais être utilisés en production.

Les développeurs peuvent compiler le binaire statique Go sans dépendances d’exécution, et il fonctionne sur Linux, macOS, Windows et les systèmes BSD. Il supporte aussi l’activation de socket par systemd et launchd, ainsi que le protocole PROXY v2 pour les services backend qui veulent connaître la connexion originale.

Sources

Crédits photo

  • Image en une : Feeling Wired, par auteur inconnu, CC0, via Rawpixel via Openverse (recadrée)