Dans ce tutoriel, nous allons voir comment le déploiement du bastion d’administration Teleport à l’aide de Docker.
Avant de commencer ce tutoriel, un petit rappel sur les Bastions d’administration, ce sont généralement des applicatifs qui vont permettre de gérer les accès aux différents serveurs (Windows et Linux) et applications (Base de données ….) au seins d’une organisation.
Le rôle du Bastion d’administration est multiple :
- Centraliser les accès au sein d’une même interface
- Tracer les accès aux ressources avec l’enregistrement des logs d’accès et dans certain cas enregistrement des sessions
- Gérer les autorisations d’accès en fonction de son profil
- …
Aujourd’hui sur le marché, il existe plusieurs solutions gratuites et payantes plus ou moins aboutie comme :
- Guacamole qui est gratuit, qui va permettre de gérer les connexions SSH et RDP
- Trasa.io qui malheureusement n’est plus maintenu
- Wallix qui est certainement la solution commercial la plus abouti
- Teleport que nous allons voir ici
- …
Présentation de Teleport
Teleport est un outil open source permettant de fournir un accès Zero Trust aux serveurs et aux applications cloud à l’aide de SSH, Kubernetes et HTTPS. Il peut éliminer le besoin de VPN en fournissant une passerelle unique pour accéder à l’infrastructure informatique via SSH, aux clusters Kubernetes et aux applications cloud via un proxy intégré
Teleport a commencé comme une bibliothèque open source utilisée par le projet Gravity pour permettre des déploiements de logiciels sécurisés dans des environnements restreints et réglementés. Teleport a été rendu open source en tant qu’outil autonome par Gravitational Inc. en 2016. Il est actuellement déployé en production par Samsung, NASDAQ, IBM, Ticketmaster, Epic Games et d’autres. Il a été audité publiquement par des sociétés de sécurité technologique comme Cure 53 et Doyensec.
https://en.wikipedia.org/wiki/Teleport_(software)
Teleport comme vous avez pu lire, est une solution qui permet de déployer un Bastion d’administration complet et qui prend en charge une multitude d’intégration SSH, RDP, Base de données, Amazon, Azure … Pour gérer les ressources Teleport s’appuie sur des agents qui doivent être installé sur les serveurs d’accès.
Vous trouverez la liste des intégrations ici : https://goteleport.com/integrations/
Il existe aujourd’hui 3 version de Teleport :
- Community qui est gratuite et limiter en fonctionnalité et sur certaine ressource comme les accès RDP en standalone
- Enterprise qui est une version complète auto-héberger
- Cloud
Vous trouverez ici des informations sur les différence entre les versions.
Dans ce tutoriel, je vais vous présenter la version Community qui est gratuite.
Il existe différent manière de déployer Teleport qui peut être installer directement sur Linux ou déployer en conteneur Docker, dans ce tutoriel, nous allons utiliser Docker qui permet de déployer très facilement Teleport et de se concentrer sur son paramétrage et son utilisation.
Prérequis
Pour déployer Teleport à l’aide de Docker vous aurez besoin :
- D’un serveur Linux avec Docker, pour ma part j’ai utilisé Ubuntu 24.04
Vous aurez besoin d’une application OTP de type Microsoft authentificator, car le MFA est obligatoire dans Teleport et il n’est plus possible de le désactiver.
Vous devez aussi prévoir un enregistrement DNS pour la configuration, dans le tutoriel je vais utiliser : teleport.lab.lan
Déploiement de Teleport avec Docker
Comme à mon habitude, je vais me placer dans le dossier /containers
pour le déploiement de mes conteneurs.
Commencer par créer les dossiers :
sudo mkdir -p ./teleport/{config,data}
Ensuite aller dans le dossier teleport créé :
cd teleport
Dans le dossier teleport, on va créer le fichier docker-compose.yml
:
sudo nano docker-compose.yml
Voici le contenu de mon fichier docker-compose.yml
:
Adapter le paramètre
hostname:
à votre environnement
Commencer par télécharger l’image :
sudo docker compose pull
Une fois l’image télécharger, on va généré le fichier de configuration, afin que cela fonctionne correctement j’ai du passé en root
.
sudo su
Pour générer le fichier teleport.yaml entrer la commande suivante :
sudo docker run --hostname teleport.lab.lan --rm \
--entrypoint=/usr/local/bin/teleport \
public.ecr.aws/gravitational/teleport-distroless:16.4.12 configure --roles=proxy,auth > /containers/teleport/config/teleport.yaml
Aller aussi adapter le paramètre
--hostname
Maintenant démarrer le conteneur Teleport :
sudo docker compose up -d
A partir de la Teleport devrait être disponible depuis un navigateur Internet :
Teleport est fonctionnel.
Création d’un administrateur
Pour le moment, il n’y a pas de compte de créer qui permet l’administration de Teleport, retourner sur le serveur Docker et entrer la commande suivante :
sudo docker compose exec teleport tctl users add admin --roles=editor,access --logins=root,administrateur,adminlab
Cette commande permet de créer l’utilisateur admin avec les rôles editor et access et la possibilité d’utiliser les identifiants root, administrateur et adminlab pour se connecter aux ressources.
En retour dans le terminal, vous avez du avoir une url qui va permettre de configurer le compte.
Depuis un navigateur, ouvrir l’url qui va nous permettre de configurer le compte admin.
Sur la première page, cliquer sur GET STARTED 1.
Commencer par entrer le mot de passe du compte 1, confirmer le 2 puis cliquer sur NEXT 3.
Maintenant, avec une application OTP, scanner le QRCODE puis entrer le code d’authentification 1 et cliquer sur SUBMIT 2.
Le compte est créé, cliquer sur GO TO CLUSTER 1.
On est ensuite redirigé vers la page des Ressouces sur Teleport.
Ajouter des ressources dans Teleport
Dans cette partie, nous allons voir comment ajouter des ressources dans Teleport.
Pour ajouter des ressources, aller sur Access Management 1 puis cliquer sur Enroll New Ressouce 2.
Comme vous pouvez le voir, il y a de nombreuses ressources prisent en charge par Teleport.
Avant de passer à l’installation des agents, il faut adapter la configuration de Teleport, sinon vous aurez une erreur lors de l’installation de l’agent.
Arrêter le conteneur Teleport :
sudo docker compose down -v
Ouvrir le fichier de configuration de teleport :
sudo nanon config/teleport.yaml
Dans la section proxy_service:
il faut ajouter public_addr: teleport.lab.lan
.
La modification effectuée, redémarrer le conteneur :
sudo docker compose up -d
Ajouter une ressource SSH – Ubuntu
Contrairement à Guacamole, pour configurer un accès SSH sur un serveur Ubuntu, il est nécessaire de déployer un agent.
Dans la liste des ressources, cliquer sur Ubuntu 18.04+ 1.
Pour l’installation de l’agent, Teleport donne la ligne de commande à passer, cliquer sur l’icone 1 qui permet de copier la ligne.
Sur l’ordinateur a ajouter à Teleport, enter la commande et patienter pendant l’installation de l’agent.
J’ai ajouté l’option
k
à curl pour ignore les erreurs de certificat.
Comme nous utilisons un certificat autosigné, il faut modifier le service de l’agent.
Entrer la commande ci-après pour trouver le fichier de configuration du service de l’agent Teleport :
sudo systemctl status teleport
Ouvrir le fichier de configuration du service et ajouter l’option --insecure
.
Entrer les commandes suivantes pour la prise en compte des modifications :
sudo systemctl deamon-reload
sudo systemctl restart teleport.service
Après le redémarrage, retourner sur l’interface Web du bastion Teleport, la ressource devrait être disponible :
Pour se connecter au serveur Ubuntu, cliquer sur Connect 1 puis sur l’identifiant 2 lié à le ressource que nous avons configurer quand nous avons créer l’utilisateur admin.
Un nouvel onglet s’ouvre dans le navigateur Internet avec le connexion SSH établie sur le serveur Ubuntu.
Vous savez comment ajouter une ressource SSH Ubuntu à Teleport.
Ajouter une ressource Remote Desktop – Windows
Dans Teleport, nous avons deux type de ressource Remote Desktop :
- Active Directory Users
- Local Users
Comme pour Ubuntu, il ne suffit pas de créer une simple connexion RDP dans Teleport, là aussi, il faut ajouter des agents sur les serveurs pour lier la ressource.
A noter que dans la version Community donc gratuite de Teleport, vous êtes limiter à 5 ressources de type Local Users.
Après lecture de la documentation et l' »usine à gaz » que cela représente, je n’ai pas ajouter de connexion Windows Desktop dans Teleport.
Si vous souhaitez essayer, vous trouverez ici comment faire pour ajouter une ressource Windows Desktop Local User.
Concernant l’ajout de ressource Windows Desktop Active Directory Users, là aussi c’est assez « complexe », car vous avez besoin d’un contrôleur de domaine et d’une autorité de certifications AD CS, Teleport fournie un script PowerShell de configuration, mais pour fonctionner, il faut que le rôles ADDS et ADCS soient installés sur le même serveur, ce qui n’est pas une bonne pratique, il faut donc passer par la configuration manuelle que vous trouverez ici.
Revoir les sessions
Comme tout Bastion qui se respecte, il est possible de revoir les sessions, pour cela aller sur Access Management 1 puis sur Session recording pour accéder aux logs et au visionnage.
Les autres fonctionnalités de Teleport
Teleport permet aussi la configuration de Roles qui va permettre de limiter l’accès aux ressources, la configuration se fait intégralement dans un fichier YAML, ce qui je trouve est assez peu friendly use …
Le verrouillage d’objet est une fonctionnalité intéressante qui permet de bloquer une ressource ou un utilisateur dans le cas d’une maintenance par exemple.
Après avec la version Enterprise vous avez la possibilité d’ajouter des fournisseur d’authentification de type OpenID, AD FS …
Conclusion
Pour finir sur ce tutoriel, au départ quand je me suis lancé dans la création du tutoriel, j’ai été enthousiasme sur le produit au vue des différentes fonctionnalités offertes et aux nombres de ressources configurable.
Après sa mise en œuvre, je suis un peu déçu, notamment par la mise en place d’agent sur les accès SSH et RDP qui pour moi limite les fonctionnalités du Bastion, il n’est pas possible par exemple de se connecter à un actif de type Switch ou Firewall sans passer en rebond par un serveur SSH.
Le MFA obligatoire peut aussi être un frein, car cela implique d’avoir un équipement mobile.
Pour gérer de simple connexion RDP et SSH, je ne pense pas que Teleport soit le bon produit, par contre si vous souhaitez gérer les accès à des ressources comme des bases de données (Oracle, MariaDB), services cloud, Dashboard … Teleport est idéale, par contre dans sa version Enterprise.