Un bastion SSH est une brique d'infrastructure qui permet à une connexion SSH de “rebondir” avant d'atteindre sa cible, il joue le rôle de point d’accès sécurisé (authentification, filtrage) vers plusieurs machines.
Teleport est une solution Open Source de Bastion et dispose de plusieurs fonctionnalités notamment celle des connexions SSH et de la gestion de celle-ci.
Installation de Teleport
Installation de la clé publique Teleport
curl https://deb.releases.teleport.dev/teleport-pubkey.asc | sudo apt-key add -
Ajout d’un nouveau dépôt pour l’installation de Teleport
add-apt-repository 'deb https://deb.releases.teleport.dev/ stable main'
Mise à jour du cache APT
apt-get update
Installation de Teleport
apt install teleport
Installation de Docker
La mise en place de Teleport se fera à l’aide de Docker.
Ajout de la clé GPG officielle de Docker
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
Ajout du dépôt officiel de Docker
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
Installation de docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
Mise en place de Teleport avec Docker
Faire fonctionner Teleport avec Docker
Choisir l’image de Teleport
docker pull quay.io/gravitational/teleport:7
Génération d’un fichier de configuration pour Teleport
docker run --hostname 192.168.1.150 --rm --entrypoint=/bin/sh -v ~/teleport/config:/etc/teleport quay.io/gravitational/teleport:7 -c "teleport configure > /etc/teleport/teleport.yaml"
Démarrage de Teleport
docker run --hostname 192.168.1.150 --name teleport -v ~/teleport/config:/etc/teleport -v ~/teleport/data:/var/lib/teleport -p 3023:3023 -p 3025:3025 -p 3080:3080 -p 3024:3024 quay.io/gravitational/teleport:7
Accès à l’interface graphique de Teleport
https://192.168.1.150:3080/
Ajout d’un utilisateur pour Teleport (ici l’utilisateur “paul” avec les rôles admin et access et pour login : root et ubuntu)
docker exec teleportbastion tctl users add paul --roles=admin,access --logins=root,ubuntu
Connexion à l’interface graphique de Teleport avec l’URL ci-dessus pour la création de l’utilisateur
https://192.168.1.150:3080/web/invite/3447639ce25512c72f3fb701c7b25885
Création du mot de passe et de la double authentification (scan du QR Code avec un application qui gère l’authentification à deux facteurs → code qui change toute les 30 secondes)
Ajout d’un serveur
- Avec un Token unique pour le serveur et temporaire (1h) :
Authentification avec Teleport depuis le serveur
tsh -–insecure login –proxy=192.168.1.150:3080 –auth=local –user=paul
Génération d’un Token pour ajouter le nouveau serveur
tctl tokens add –type=node –insecure
Ajout du serveur avec le Token qui permet de l'identifier
teleport start –roles=node –token=”le token en question” –auth-server=192.168.1.150
- Avec un Token permanent :
Création d’un fichier sur le bastion pour stocker le token
Ajout d’un serveur avec le token stocker sur le bastion
teleport start –roles=node –token=token.file –auth-server=192.168.1.150:3080
Création d’un script qui va permettre de connecter directement le serveur au bastion au démarrage ou redémarrage du serveur.
Attribution des droits d'exécution au script grâce à la commande chmod
chmod +x teleportscript.sh
Copie du script dans le répertoire de démarrage (pour exécuter directement le script au démarrage du serveur)
cp teleportscript.sh /etc/init.d/teleportscript.sh
update-rc.d teleportscript.sh defaults
Connexion à Teleport depuis un client
tsh —insecure login –proxy=192.168.1.150:3080 –auth=local –user=paul