--- categories: sysadmin title: Howto The Bastion ... * [Documentation officielle](https://ovh.github.io/the-bastion/) The Bastion est un bastion SSH créé par OVH permettant la centralisation des accès SSH et la traçabilité et l'auditabilité des actions faîtes par SSH. ## Installation The Bastion peut s'installer sur une machine Debian sécurisée. Il est recommandé de chiffrer le `/home` car il contient les clés privées SSH ainsi que les enregistrements de sessions. ``` git clone https://github.com/ovh/the-bastion /opt/bastion git -C /opt/bastion checkout $(git -C /opt/bastion tag | tail -1) /opt/bastion/bin/admin/packages-check.sh -i /opt/bastion/bin/admin/install-ttyrec.sh -a cp /etc/ssh/sshd_config /etc/ssh/sshd_config.old /opt/bastion/bin/admin/install --new-install /opt/bastion/bin/dev/perl-check.sh ``` Puisque The Bastion modifie la configuration SSH pour augmenter sa sécurité, il faut comparer la configuration ssh initial avec celle fournie par The Bastion. ``` vimdiff /etc/ssh/sshd_config.old /etc/ssh/sshd_config ``` ### Configuration La configuration principale est gérée dans `/etc/bastion/bastion.conf`. ### Création du compte administrateur initial ``` /opt/bastion/bin/admin/setup-first-admin-account.sh "${username:?}" auto ``` ## Administration Toute les commandes se font à partir du shell d'un compte SSH Bastion. ### Créer un compte utilisateur ``` accountCreate --account ``` Il sera ensuite demander de fournir une clé publique SSH (au format d'OpenSSH) pour la connexion à ce compte. ### Lister les comptes utilisateurs ``` accountList ``` Pour plus d'information (nécessite d'être d'avoir accès à la commande spécial `auditor`) (c'est bien plus long) : ``` accountList --audit ``` ### Ajouter un accès à un serveur distant pour un utilisateur Pour créé un accès à un serveur distant pour un utilisateur il faut exécuté la commande suivante : ``` accountAddPersonalAccess --account --host --port --user ``` Pour permettre l'utilisation de sftp pour cet accès, il faut créé un second accès au serveur avec la commande suivante : ``` accountAddPersonalAccess --account --host --port --sftp ``` ### Donner accès à une commande privilégiée ``` accountGrantCommand --account --command ``` ### Révoquer accès à une commande privilégiée ``` accountRevokeCommand --account --command ``` ### Bloquer et débloquer un compte Pour bloquer manuellement un compte : ``` accountFreeze --account [--reason "''"] ``` Pour débloquer un compte bloquer manuellement : ``` accountUnfreeze --account ``` Pour débloquer un compte bloquer automatiquement par `pam_tally`, `pam_tally2` ou `pam_faillock` : ``` accountUnlock --account ``` ### Lister qui a accès à un serveur distant ``` whoHasAccessTo --host [--port ] [--user ] ``` Si `--port` ou `--user` ne sont pas précisé, alors le champ correspondant n'est pas pris en compte. > Note: Cela ne vérifie pas que l'accès soit fonctionnel mais seulement que le bastion soit configuré pour autorisé cet accès. ### Voir ce qui a été fait lors d'une session SSH distante À chaque connexion ssh vers un serveur distant, un `ttyrec` est démarré, enregistrant tout ce qui est affiché sur la console utilisateur. Le chemin de ces enregistrement est `/home//ttyrec//.ttyrec`. Il est possible de jouer ses enregistrements `ttyrec` avec la commande bastion `selfPlaySession`. Il est possible de jouer les enregistrements `ttyrec` d'autrui, uniquement avec accès local au bastion, en utilisant le programme `ttyplay` (ou tout autre programme pouvant lire les fichiers générés par `ttyrec`). ## Utilisation courante > Lors de la création initiale du compte (et à chaque exécution de la commande bastion `info`), un alias est fournis pour `ssh @ -t --`. ### Connexion à un serveur distant ``` ssh @ -t -- @ ``` ### Utilisation d'une commande bastion ``` ssh @ -t -- --osh ``` ### Utilisation de sftp Récupéré le script d'aide : ``` ssh @ -t -- --osh sftp ``` Puis suivre les instructions pour l'installer sur sa machine, puis (assumant que le script est `~/sftp_bssh`) : ``` sftp -S ~/sftp_bssh @ ``` Il est possible qu'il faille modifier le script d'aide pour qu'il utilise le FQDN du bastion au lieu de son nom court.