Sécuriser l'accès à vos serveurs avec Teleport
Mise à jour :
Gérer les accès à une infrastructure, c’est un vrai casse-tête. Entre les identifiants à sécuriser, les droits à définir et les audits à mener, la moindre erreur peut coûter cher.
Teleport, fais partie des outils qui simplifie tout ça. Il centralise et sécurise vos accès aux serveurs, bases de données, clusters Kubernetes et applications. En plus, il offre des journaux d’audit complets pour garder le contrôle.
Pourquoi sécuriser l’accès à l’infrastructure avec Teleport ?
De nos jours, tout va vite. Les serveurs sont créés et détruits en un clic, les équipes se connectent depuis des endroits variés, et les identifiants circulent souvent de manière imprudente. Ce dynamisme, bien qu’efficace, expose votre infrastructure à des risques majeurs si les accès ne sont pas rigoureusement sécurisés.
Les menaces sont bien réelles. Une clé SSH mal protégée ou une configuration erronée d’accès peut suffire à ouvrir une brèche. Les attaques ciblant les identités et les accès sont parmi les plus courantes aujourd’hui. Pensez aux accès non autorisés, aux mouvements latéraux dans votre réseau, ou encore aux violations de données coûteuses.
Mais au-delà des menaces, il y a un besoin de contrôle et de clarté. Dans une infrastructure moderne, savoir qui fait quoi, où, et quand est essentiel, autant pour la sécurité que pour répondre à des exigences de conformité.
Sécuriser les accès, c’est donc réduire les risques tout en gagnant en transparence et en contrôle. C’est ce qui permet de maintenir la confiance dans un environnement en perpétuel mouvement.
Comment Teleport répond à ces enjeux ?
Teleport se distingue par une suite de fonctionnalités pensées pour répondre aux besoins critiques en matière de sécurisation des accès. Voici les principaux aspects qui font de Teleport une solution incontournable pour les infrastructures modernes.
- Gestion centralisée des identités et des accès : Avec Teleport, fini les multiples identifiants à gérer pour chaque serveur ou service. L’outil centralise les accès via des identités uniques, souvent intégrées à des systèmes existants comme SSO, LDAP ou Active Directory. Chaque utilisateur n’a qu’une identité, ce qui simplifie l’administration tout en réduisant les risques de gestion manuelle d’identifiants multiples.
- Certificats temporaires plutôt que des clés statiques : Les clés SSH statiques sont souvent une faille de sécurité. Avec Teleport, chaque session d’accès repose sur des certificats temporaires. Ces certificats expirent après une durée définie, rendant inutile toute clé volée ou compromise.
- Accès sécurisé multi-ressources : Teleport ne se limite pas aux
serveurs. Il permet également de sécuriser :
- Les clusters Kubernetes en gérant les droits d’accès aux pods et ressources.
- Les bases de données (PostgreSQL, MySQL, MongoDB) via un proxy sécurisé.
- Les applications internes, sans nécessiter de VPN.
- Journaux d’audit exhaustifs : À chaque connexion ou action effectuée via Teleport, des journaux d’audit détaillés sont enregistrés. Ces logs incluent les informations sur l’utilisateur, les commandes exécutées, et même les sessions enregistrées sous forme de vidéos.
- Authentification multi-facteurs (MFA) Teleport supporte nativement
l’authentification multi-facteurs, avec des options comme :
- Applications de TOTP (Google Authenticator, Authy).
- Clés physiques basées sur FIDO2/U2F, comme YubiKey.
- Isolation des sessions en temps réel : L’un des points forts de Teleport est sa capacité à surveiller et même à interrompre une session active en temps réel. Les administrateurs peuvent intervenir immédiatement en cas d’activité suspecte.
- Support des environnements distribués : Dans un monde où les infrastructures sont réparties sur plusieurs clouds et datacenters, Teleport s’intègre facilement avec des environnements hybrides ou multi-cloud. Son architecture légère permet une mise en place rapide, même à grande échelle.
Historique de Teleport
Teleport est né d’un besoin simple mais essentiel : sécuriser les accès à des infrastructures de plus en plus complexes, sans alourdir les processus. Créé par Gravitational, une entreprise spécialisée dans les solutions de sécurité et de déploiement cloud, Teleport a été conçu dès le départ pour répondre aux défis des environnements modernes.
L’outil a vu le jour en 2016, à une époque où les infrastructures cloud gagnaient rapidement en popularité, mais où les solutions traditionnelles de gestion d’accès, comme les VPN et les clés SSH statiques, montraient leurs limites. L’objectif initial de Teleport était de fournir une alternative plus sécurisée et plus facile à gérer, en remplaçant les identifiants persistants par des certificats temporaires et en intégrant des journaux d’audit natifs.
Au fil des années, Teleport s’est enrichi de nouvelles fonctionnalités pour répondre aux besoins des entreprises en pleine transformation digitale. Il ne s’agit plus seulement de gérer les accès aux serveurs : Teleport s’est étendu pour couvrir les bases de données, les clusters Kubernetes, les applications internes, et plus encore. Son modèle basé sur des identités centralisées et des protocoles sécurisés a su séduire des entreprises de toutes tailles, des start-ups aux grandes multinationales.
Aujourd’hui, Teleport est reconnu comme une solution incontournable pour sécuriser les accès aux infrastructures cloud. Avec une communauté active et un développement open source, il continue d’évoluer pour s’adapter aux défis émergents des environnements modernes.
Installation et configuration de Teleport
Dans ce chapitre, je vais vous guider à travers l’installation de Teleport sur un serveur Linux via le gestionnaire de paquets.
Prérquis
Avant d’installer et de configurer Teleport, assurez-vous que votre environnement répond aux conditions suivantes :
- Serveur compatible
- Un serveur Linux avec une distribution basée sur Debian ou Ubuntu (version 18.04 ou ultérieure).
- Accès administrateur ou utilisateur avec privilèges sudo.
- Accès réseau
- Ouverture des ports nécessaires :
22
: Pour les connexions SSH aux serveurs jusqu’à la phase d’enrôlement.443
: Pour le proxy Web sécurisé (HTTPS).3025
: Pour le service d’authentification.3022
: Pour les connexions SSH via Teleport.
- Une adresse IP publique ou un nom de domaine pointant vers le serveur Teleport.
- Ouverture des ports nécessaires :
- Nom de domaine valide
- Si vous utilisez Let’s Encrypt pour les certificats SSL, un nom de domaine
valide est nécessaire (par exemple,
teleport.stephrobert.tech
). - Le domaine doit pointer vers l’adresse IP publique du serveur où Teleport sera installé.
- Si vous utilisez Let’s Encrypt pour les certificats SSL, un nom de domaine
valide est nécessaire (par exemple,
- Accès root ou utilisateur sudo
- Les commandes nécessitent des privilèges élevés pour l’installation et la configuration.
Ces prérequis garantissent que votre serveur est prêt à accueillir une installation réussie de Teleport.
Installation de Teleport
Avant de configurer Teleport, installez-le à l’aide du gestionnaire de paquets. Assurez-vous que le dépôt correspondant est configuré et à jour.
Ensuite, ajoutez la clé GPG et le dépôt Teleport :
Après avoir ajouté le dépôt, mettez à jour la liste des paquets et installez Teleport :
Configuration de Teleport
Après l’installation, la commande suivante génère un fichier de configuration prêt à l’emploi :
Cette commande configure Teleport pour :
- Utiliser Let’s Encrypt pour générer automatiquement des certificats
SSL/TLS grâce à l’option
--acme
. - Définir un nom de cluster :
teleport.stephrobert.tech
. - Spécifier une adresse e-mail pour recevoir des notifications relatives à
Let’s Encrypt :
admin@stephrobert.tech
.
Le fichier généré ressemble à ceci :
Activation et Démarrage du service Teleport
Après avoir vérifié et, si nécessaire, ajusté le fichier de configuration, lancez le service Teleport :
Pour vérifier que le service est actif, utilisez la commande suivante :
Si tout est correct, vous devriez voir un message indiquant que le service est en cours d’exécution comme ci-dessus.
Création des utilisateurs : Admin et Bob
Une fois Teleport installé et configuré, il est temps de créer des utilisateurs pour gérer l’accès à l’infrastructure. Dans cet exemple, nous allons créer deux utilisateurs :
- admin : Un utilisateur avec des droits d’administration complets.
- bob : Un utilisateur avec des droits limités pour effectuer des tâches spécifiques.
Création de utilisateur Admin
Admin est le super-utilisateur du système, disposant de permissions globales. Pour le créer, utilisez la commande suivante :
Le login outscale
sera utilisé pour se connecter aux machines Linux. Pour
rappel dans le cloud Outscale, le login par défaut est outscale
et ce compte
est le seul à avoir les droits d’administration.
Après avoir exécuté cette commande, Teleport génère un lien temporaire que vous pouvez partager avec l’utilisateur pour qu’il configure son accès.
Dans le premier écran de connexion, Admin doit saisir son nom d’utilisateur et un mot de passe. Il sera ensuite invité à configurer l’authentification multi-facteurs (MFA) pour renforcer la sécurité de son compte. Personnellement, j’ai choisi l’application Google Authenticator.
Création de l’utilisateur Bob
Pour un utilisateur avec des permissions spécifiques, comme Bob, il est préférable de créer un rôle personnalisé. Voici comment procéder.
Créez un fichier bob-role.yaml
pour définir les permissions du rôle :
Appliquez ce rôle avec la commande suivante :
Créez ensuite Bob et attribuez-lui le rôle bob-role
:
Comme pour Admin, Teleport génère un lien temporaire pour que Bob puisse configurer son accès :
Faites comme pour Admin, saisir son nom d’utilisateur, un mot de passe et son OTP.
Enrollement de serveurs Linux
Après avoir configuré les utilisateurs, il est temps d’enrôler des serveurs Linux dans Teleport. L’enrôlement consiste à installer un agent Teleport sur chaque serveur pour qu’il puisse se connecter au cluster.
Connectez-vous au serveur Teleport avec le compte admin
et allez dans le
menu [Access Management]. Tapez le nom du système d’exploitation de votre
serveur et suivez les instructions.
Une fois le script d’enrôlement généré, exécutez-le sur le serveur à enregistrer :
Après l’installation, le serveur est automatiquement ajouté à Teleport. Vous pouvez vérifier son statut dans l’interface web (avec le compte admin.)
Ajout des étiquettes (labels)
Pour organiser et gérer les serveurs, Teleport utilise des étiquettes
(labels) pour les catégoriser. Par exemple, vous pouvez ajouter une étiquette
environment=dev
à un serveur que vous venez d’enroller.
Pour ajouter une étiquette à un serveur, utilisez la commande suivante :
Ajoutez la ligne suivante dans la section ssh_service
:
Redémarrez le service Teleport pour appliquer les modifications :
Après avoir ajouté des étiquettes, vous pouvez filtrer les serveurs par
environnement dans l’interface web de Teleport. Connectez vous avec le
compte bob
et allez dans le menu [Ressources].
Cliquez sur le bouton [connect] pour vous connecter à ce serveur et choisissez le compte bob. Normalement cela va échouer car bob n’existe pas sur le serveur. Créez le compte bob sur le serveur pour pouvoir vous connecter.
Retentez la connexion.
Cela fonctionne! Vous êtes maintenant connecté à votre serveur via Teleport
Connexion SSH avec Teleport
Dans certaines configurations, l’accès direct à une ressource n’est pas possible, par exemple dans des environnements sécurisés où les serveurs se trouvent derrière un bastion (bastion host).
Grâce à Teleport, vous pouvez facilement établir une connexion en passant par le proxy Teleport.
Étape 1 : Comprendre le mécanisme de rebond
Avec Teleport, la connexion SSH utilise le proxy pour acheminer les connexions vers les ressources cibles situées dans un réseau privé. Ce mécanisme permet de :
- Éviter l’exposition directe des serveurs.
- Auditer toutes les connexions pour renforcer la sécurité.
- Simplifier la configuration réseau en utilisant une seule adresse publique pour le proxy.
Étape 2 : Prérequis
- Le client tsh installé sur la machine qui initie la connexion.
Étape 3 : Connexion au proxy
Avant d’établir la connexion, connectez-vous au proxy Teleport pour obtenir les certificats temporaires nécessaires.
Entrez le mot de passe et l’OTP pour l’authentification multi-facteurs (MFA).
Une fois connecté, vos certificats temporaires sont disponibles localement pour la durée définie par l’administrateur.
Étape 4 : Identifier la ressource cible
Pour lister les ressources disponibles (serveurs enrôlés), utilisez :
Vous obtiendrez une liste des serveurs accessibles via le proxy Teleport, par exemple :
Étape 5 : Établir la connexion via rebond
Connectez-vous à la ressource cible via tsh ssh :
Explications :
tsh ssh
: Commande pour établir une connexion SSH via Teleport.bob
: Utilisateur sur le serveur cible.ip-10-0-0-25
: Nom du nœud cible obtenu via la commandetsh ls
.
La connexion avec Teleport simplifie l’accès aux ressources situées dans des réseaux privés tout en maintenant un haut niveau de sécurité. Ce mécanisme élimine la complexité des tunnels SSH manuels ou des configurations de VPN, tout en offrant une visibilité complète sur les sessions.
Conclusion
En explorant Teleport, j’ai découvert un outil puissant et polyvalent qui promet de simplifier et de sécuriser la gestion des accès à l’infrastructure. En tant que novice, j’ai appris au fil des étapes à configurer un cluster, créer des utilisateurs, définir des rôles et même gérer les accès avec des tags. Tout cela m’a permis de mieux comprendre les bases de cet outil, mais aussi de réaliser tout ce qu’il reste à explorer.
Comme vous, je ne connaissais pas Teleport au début de ce guide, et cette plongée m’a permis de voir à quel point il peut transformer la gestion des infrastructures modernes. Il reste encore tant à découvrir : les intégrations avec des systèmes tiers, les meilleures pratiques pour des environnements complexes, ou encore l’audit.
Si vous êtes comme moi, curieux d’approfondir vos connaissances, je vous invite à tester Teleport par vous-même. À mon avis, c’est en l’expérimentant directement qu’on mesure pleinement son potentiel. Et si vous avez des questions ou des retours, je serais ravi d’en discuter – après tout, nous apprenons ensemble ! 🚀