Comment verrouiller l'accès direct à la production sans perdre la raison
Distribuer des clés SSH aux ingénieurs se transforme souvent en chaos. Quelqu'un quitte l'entreprise, mais sa clé publique reste sur des dizaines de serveurs de production. Quelqu'un exécute accidentellement une commande dangereuse dans le mauvais terminal, et vous passez ensuite une demi-journée dans les journaux système pour déterminer à quelle session elle appartenait.
À mesure que le nombre de serveurs augmente et que l'équipe s'agrandit, les connexions directes aux machines deviennent un cauchemar. Habituellement, à ce stade, les entreprises se tournent vers le concept des 4A : authentification, autorisation, accounting et audit. Cependant, déployer des solutions lourdes comme Teleport ou CyberArk nécessite beaucoup de temps et de ressources.
Je suis récemment tombé sur un projet appelé OneTerm sur GitHub. C'est une passerelle d'accès open source légère écrite en Go et Vue.js. Elle résout le problème de l'accès centralisé aux serveurs sans configuration complexe.
Ce qu'il y a à l'intérieur de OneTerm
Le principe est simple : OneTerm devient une couche entre les employés et l'infrastructure de production. Les développeurs ne se connectent pas aux hôtes directement via SSH ou RDP. Ils se connectent au tableau de bord web de OneTerm et lancent la session requise depuis celui-ci.
Le projet couvre les besoins de sécurité de base :
- Un point d'entrée unique avec support de l'authentification à deux facteurs.
- L'octroi de permissions pour des serveurs spécifiques et des groupes d'utilisateurs.
- L'enregistrement vidéo et texte de chaque session. Si quelque chose se passe mal sur un serveur, l'opération peut être rejouée dans le lecteur intégré pour examiner les détails.
- L'isolation des sessions pour empêcher les utilisateurs de s'interférer mutuellement et d'escalader leurs privilèges au sein de la passerelle.
- La protection des hôtes internes contre l'accès direct depuis l'internet externe.
En plus du SSH standard, OneTerm supporte les protocoles RDP et VNC. C'est utile pour ceux qui ont des serveurs Windows ou des machines virtuelles avec des interfaces graphiques dans leur infrastructure.
Stack technique et intégrations
La stack du projet est assez familière. Le backend est écrit en Go, et l'interface utilisateur est construite avec Vue.js en utilisant la bibliothèque Ant Design Vue. La compilation Go offre une faible consommation de mémoire et des performances rapides du terminal web.
Les développeurs ont ajouté une intégration native avec Veops CMDB. C'est un autre de leurs projets open source. Si la comptabilité des équipements est maintenue dans leur CMDB, les serveurs sont importés dans le bastion en un clic. Pas besoin de saisir manuellement les adresses IP, les ports et les identifiants.
Regardons l'interface système.
Le terminal fonctionne directement dans la fenêtre du navigateur. Les ingénieurs n'ont pas besoin de configurer des clients locaux, de configurer des tunnels, ou de stocker des clés sur leurs ordinateurs portables.
Les droits d'accès sont segmentés en fonction du temps et des rôles. Vous pouvez accorder l'accès à un serveur uniquement pour la période de garde ou pendant un travail technique.
Comment déployer et tester
Pour une présentation locale, les auteurs ont préparé une configuration Docker Compose. Le démarrage prend quelques minutes :
git clone https://github.com/veops/oneterm.git
cd oneterm/deploy
docker compose up -d
Après le démarrage des conteneurs, l'interface web s'ouvre à l'adresse http://127.0.0.1:8666. L'identifiant de connexion par défaut est admin, et le mot de passe est 123456.
Pour un environnement de production, cette option ne conviendra pas. Pour ce cas, les développeurs ont écrit un script d'installation interactif ./setup.sh. Il génère des mots de passe aléatoires pour la base de données et les services internes, met à jour lui-même les configurations, et sauvegarde une copie.
git clone https://github.com/veops/oneterm.git
cd oneterm/deploy
./setup.sh
docker compose up -d
Si vous souhaitez ajouter vos propres fonctionnalités, le projet dispose de scripts de rechargement à chaud prêts à l'emploi pour le frontend et le backend : ./dev-start.sh frontend et ./dev-start.sh backend. Node.js version 14.17.6+ et Go version 1.21.3+ sont requis pour la compilation.
Nuances et limitations
Avant d'amener l'outil dans un environnement de production, vous devriez considérer quelques spécificités :
- Le code est distribué sous la licence AGPL-3.0. Si vous décidez d'en faire une solution SaaS commerciale fermée, vous devrez ouvrir vos modifications.
- La branche
maindans le dépôt est constamment mise à jour et peut fonctionner de manière instable. Pour une utilisation sur des serveurs, prenez uniquement les builds prêts à l'emploi depuis la page Releases. - La documentation est encore assez brève. Les développeurs répondent sur GitHub Issues, mais certains détails devront être compris directement à partir du code source.
Résumé
OneTerm convient aux petites équipes opérationnelles et aux administrateurs système qui veulent organiser rapidement la gestion des accès. Si vous avez besoin d'un bastion simple avec enregistrement de session, segmentation des accès et support SSH et RDP, le projet couvrira les tâches de base sans complexité inutile.
Vous pouvez essayer l'interface sans installation sur la démo officielle oneterm.v1ops.com avec l'identifiant demo et le mot de passe 123456.
Projets similaires