Aller au contenu

🔌 Connexion de ressources à Teleport

🛠️ Connexion de ressources GNU/Linux

C'est très simple et ultra guidé par Teleport.

Prérequis

Les comptes utilisateurs visés des machines doivent être créés sur les machines en question et déclarés au niveau de logins dans la partie User Traits du compte utilisateur Teleport:

Compte user Teleport

Ajout d'une ressource

Rendez-vous sur la page Ressources puis cliquez sur Enroll New Ressource :

Ressources

Il vous est alors proposé différentes ressources :

Ressources

Dans mon cas, je veux ajouter un serveur GNU/Linux Debian 12, je clique donc sur Debian 11+. L'application me propose de déclarer des labels.

Ressources

Cette option est apparue avec la version 17. Dans la version 16, nous devions éditer ces labels directement sur la machine visée. Les labels sont pratiques pour filtrer plus tard les ressources. Exemple :

Ressources

Pour passer à l'étape suivante il faut cliquer sur Finish Adding Labels. À partir de là, un lien vous est fourni :

Ressources

Copiez ce lien et collez le sur le serveur que vous souhaitez ajouter.

Ressources

Une fois la ressource connectée à Teleport, vous pouvez passer à l'étape suivante en cliquant sur Next

Ressources

Sélectionnez les utilisateurs (préalablement déclarés dans les prérequis) pouvant se connecter à la ressource :

Ressources

Enfin vous pouvez vérifier si la connexion avec vos utilisateurs fonctionne :

Ressources

Si OK, vous pouvez alors cliquer sur Finish. On retrouve alors notre serveur dans les ressources :

Ressources

Il ne vous reste plus qu'à vous connecter à votre ressource en cliquant sur Connect qui vous proposera le ou les logins déclarés associés à ce serveur.

🛠️ Connexion d'applications web

C'est un des grands atouts de Teleport. Imaginons que vous avez une application web qui doit être accessible depuis l'externe mais non exposée directement sur Internet. Le premier réflexe est de passer par un VPN. C'est sécurisé mais lourd à utiliser pour l'utilisateur final. Filtrage IP ? C'est possible mais inutilisable pour des clients mobiles.

C'est là que Teleport devient intéressant. En effet, on ne change pas les habitudes de l'utilisateur. Il lui suffit de se connecter à l'interface web de Teleport pour ensuite se connecter à l'application web visée. Il n'y a rien à installer sur son terminal, il lui faut juste un navigateur web.

Il faudra tout de même posséder deux logins :

  • Celui de Teleport
  • Celui de l'application en question

Il est possible de mettre en place le SSO pour éviter cela mais cette option n'est disponible que sur la version Entreprise de Teleport. Il est cependant possible d'utiliser le SSO pour les applications web derrière Teleport.

Prérequis

Comme indiqué sur le premier article de cette documentation, vous devez déclarer un RR du type CNAME de *.teleport.prod-1.domaine.fr associé à teleport.prod-1.domaine.fr dans la zone DNS de votre registrar et sur votre serveur DNS local.

Ajout d'une ressource

Pour déclarer une application web, il suffit d'éditer le fichier de configuration de Teleport (contenu dans le dossier de travail Docker de Teleport)

teleport/config/teleport.yml
version: v3
teleport:
  nodename: teleport.prod-1.domaine.fr
  data_dir: /var/lib/teleport
  log:
    output: stderr
    severity: INFO
    format:
      output: text
auth_service:
  enabled: yes
  listen_addr: 0.0.0.0:3025
  proxy_listener_mode: multiplex
  cluster_name: teleport.prod-1.domaine.fr
ssh_service:
  enabled: no
proxy_service:
  enabled: yes
  web_listen_addr: 0.0.0.0:3080
  public_addr: ['teleport.prod-1.domaine.fr:443']
  https_keypairs: []
  acme: {}
  trust_x_forwarded_for: true
## Déclaration des applications web
app_service:
  enabled: "yes"
  apps:
    - name: "opns-prod-1"
      uri: "https://192.168.200.1:8443"
      insecure_skip_verify: true
    - name: "proxmox-pve-01"
      uri: "https://192.168.200.50:8006"
      insecure_skip_verify: true

Dans ce cas, j'ai déclaré deux ressources :

  • Une passerelle OPNSense
  • Un serveur Promox VE

Relancez le conteneur docker compose restart afin de prendre en compte les nouvelles ressources. Et voilà.

Cliquez sur launch et vous êtes alors redirigé vers une URL se décomposant ainsi : https://..

Exemple avec opns-prod-1 : https://opns-prod-1.teleport.prod-1.domaine.fr

Cas particuliers

OPNSense

Vous devrez déclarer un nom d'hôte alternatif à votre passerelle sinon vous aurez un message d'erreur avec l'impossibilité de vous connecter à cette ressource.

Ressources

Proxmox VE

On ne peut pas lancer des consoles SPICE détachées. Cela est dû au fait que ces consoles utilisent le port 3128. Ainsi lorsque nous ouvrons une console, l'afficheur ditant (virt-viewer) tente d'accéder à cette URL :

[virt-viewer]
proxy=http://proxmox-pve-01.teleport.prod-1.domaine.fr:3128
(...)

Je n'ai pas creusé la question.

🏁 Conclusion

Au delà de la sécurité qu'apportent les bastions, si vous administrez plusieurs serveurs, vous comprendrez l'utilité de ces solutions comme Teleport avec la possibilité de centraliser en un seul endroit les accès. Le mot seul peut vous faire également tiquer, coucou le SPOF. Sachez qu'il est possible de monter Teleport en mode cluster mais je n'ai pas testé. Le mode web est sympa mais on peut passer également par une console. C'est le sujet du prochain article.