
Authentification, autorisation, traçabilité et auditabilité pour les accès SSH.

Les bastions sont un groupe de machines utilisées comme point d'entrée unique par les équipes opérationnelles (administrateurs systèmes, développeurs, administrateurs de bases de données, ...) pour se connecter de manière sécurisée à des périphériques (serveurs, machines virtuelles, instances cloud, équipements réseau, ...), généralement via ssh.
The Bastion fournit des mécanismes d'authentification, d'autorisation, de traçabilité et d'auditabilité pour l'ensemble de votre infrastructure.
En se plaçant entre vos utilisateurs et votre infrastructure, The Bastion ajoute une couche d'abstraction, de sorte que votre infrastructure n'ait pas besoin de connaître individuellement les membres de vos équipes opérationnelles.
Chaque membre de votre équipe dispose d'un compte individuel sur The Bastion, et peut être membre d'un ou plusieurs groupes bastion qui peuvent leur donner accès à une ou plusieurs infrastructures. Les périphériques de l'infrastructure n'ont besoin de connaître et de faire confiance qu'au(x) groupe(s) bastion dont ils peuvent faire partie.
Le système RBAC fin de The Bastion permet de déléguer certaines responsabilités à n'importe quel compte, à l'échelle d'un groupe ou du bastion, y compris à des comptes qui pourraient être utilisés par votre automatisation pour, par exemple, gérer le cycle de vie des comptes (lié à votre système de gestion des ressources humaines, votre LDAP ou AD), garantir la mise à jour des ACL d'un groupe (lié à votre CMDB), etc. Les processus automatisés sont faciles à mettre en œuvre via l'API JSON sur SSH.
Vous voulez en savoir plus tout en voyant de jolis dessins ? Voici une série d'articles de blog qui approfondissent les fonctionnalités et principes fondamentaux de The Bastion :
Autres ressources qui pourraient vous intéresser :
Rien de sophistiqué n'est nécessaire, ni du côté entrant ni du côté sortant de The Bastion pour le faire fonctionner.
Seul votre bon vieux client ssh est nécessaire pour se connecter à travers lui, et de l'autre côté, n'importe quel serveur sshd standard fera l'affaire. Cela inclut, par exemple, les équipements réseau sur lesquels vous n'avez peut-être pas la possibilité d'installer un logiciel personnalisé.
Les anciens équipements qui ne prennent en charge que des algorithmes de cryptographie à faible sécurité ou telnet peuvent être cachés d'Internet en les plaçant derrière un pare-feu et en n'autorisant que The Bastion, évitant ainsi un compromis de sécurité en n'autorisant que des connexions de haute sécurité du côté entrant du bastion.
Veuillez consulter la documentation en ligne, ou la version textuelle correspondante dans le dossier doc/.
C'est un bon moyen de tester The Bastion en quelques secondes, mais lisez la FAQ si vous envisagez sérieusement d'utiliser la conteneurisation en production.
L'image du bac à sable est disponible pour les architectures suivantes : linux/386, linux/amd64, linux/arm/v6, linux/arm/v7, linux/arm64, linux/ppc64le, linux/s390x.
Lançons l'image Docker :
docker run -d -p 22 --name bastiontest ovhcom/the-bastion:sandbox
Ayez votre clé publique SSH à portée de main, puis configurez le premier compte administrateur :
docker exec -it bastiontest /opt/bastion/bin/admin/setup-first-admin-account.sh poweruser auto
Nous sommes maintenant opérationnels avec la configuration par défaut ! Configurons un alias pratique pour le bastion, et testons la commande info :
PORT=$(docker port bastiontest | cut -d: -f2)
alias bastion="ssh [email protected] -tp $PORT -- "
bastion --osh info
Cela devrait vous saluer en tant qu'administrateur du bastion, ce qui signifie que vous avez accès à toutes les commandes. Passons en mode interactif :
bastion -i
Ceci est utile pour appeler plusieurs plugins --osh à la suite. Maintenant, nous pouvons demander de l'aide pour voir tous les plugins :
$> help
Si vous avez une machine distante à laquelle vous souhaitez vous connecter via le bastion, récupérez votre clé de sortie :
$> selfListEgressKeys
Copiez cette clé publique dans le fichier authorized_keys de la machine distante, dans le dossier .ssh/ du compte auquel vous souhaitez vous connecter, puis :
$> selfAddPersonalAccess --host <remote_host> --user <remote_account_name> --port-any
$> ssh <remote_account_name>@<remote_host>
Notez que vous pouvez vous connecter directement sans utiliser le mode interactif, avec :
bastion <remote_account_name>@<remote_machine_host_or_ip>
C'est tout ! Bien sûr, il y a beaucoup plus à découvrir, la documentation est disponible dans le dossier doc/ et en ligne.
Assurez-vous de consulter l'aide du bastion (bastion --help) et l'aide de chaque plugin osh (bastion --osh command --help).
N'oubliez pas non plus de personnaliser votre fichier bastion.conf, qui se trouve dans /etc/bastion/bastion.conf (pour Linux).
Les distributions Linux ci-dessous sont testées à chaque version, mais comme il s'agit d'un produit de sécurité, il est vivement conseillé de l'exécuter sur la dernière version stable à jour de votre système d'exploitation préféré :
Toute autre version Linux dite "moderne" n'est pas testée à chaque version, mais devrait fonctionner avec des ajustements mineurs ou nuls.
Les systèmes d'exploitation suivants sont également testés à chaque version :
FreeBSD a un support partiel du MFA, en raison de son ensemble réduit de plugins pam disponibles. Le support d'un facteur supplémentaire (mot de passe ou TOTP) peut être configuré, mais pas les deux en même temps.
perltidyperlcriticMême avec le processus de codage le plus conservateur, précautionneux et paranoïaque, le code contient des bugs, il ne faut donc pas lui faire aveuglément confiance. C'est pourquoi le bastion ne fait pas confiance à son propre code. Il exploite les primitives de sécurité du système d'exploitation pour obtenir une sécurité supplémentaire, comme vu ci-dessous.
Utilise le contrôle d'accès discrétionnaire UNIX bien connu et fiable :
Le script principal du bastion est déclaré comme shell système de l'utilisateur bastion :
bash) sur le systèmeLe code est modulaire
ssh à d'autres machinesTout le code nécessitant des privilèges système étendus est séparé du code principal, dans des modules appelés helpers
sudosudoers est attachée à un groupe système spécifique à la commande, qui est accordé aux comptes sur la base du besoin d'utilisationsyslog, qui doit également être envoyé à un serveur syslog distant pour garantir que même les administrateurs du bastion ne peuvent pas falsifier leurs traces, et/ousqlite3 pour une recherche facilettyrec, des scripts d'aide sont fournis pour chiffrer et pousser ces enregistrements vers un serveur d'entiercement distantUne liste non exhaustive d'outils connexes maintenus par la communauté :
Sous licence Apache, Version 2.0 (la "Licence") ; vous ne pouvez utiliser ce fichier qu'en conformité avec la Licence. Vous pouvez obtenir une copie de la Licence à l'adresse
http://www.apache.org/licenses/LICENSE-2.0
Sauf si requis par la loi applicable ou convenu par écrit, le logiciel distribué sous la Licence est distribué "EN L'ÉTAT", SANS GARANTIES NI CONDITIONS D'AUCUNE SORTE, expresses ou implicites. Voir la Licence pour les autorisations spécifiques et les limitations sous la Licence.
sudoers-T) est utilisé pour tout le code exécuté sous sudo, empêchant toute entrée utilisateur d'interférer avec la logique, en arrêtant immédiatement l'exécutionsudo ne fait pas confiance à son appelant et revérifie chaque entréeUne rupture de protocole est effectuée entre le côté entrant et le côté sortant, rendant la plupart des vulnérabilités basées sur le protocole inefficaces