diff --git a/HowtoTheBastion.md b/HowtoTheBastion.md new file mode 100644 index 00000000..d96aaaa9 --- /dev/null +++ b/HowtoTheBastion.md @@ -0,0 +1,156 @@ +--- +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.