Préparer les hôtes
bssh AI fonctionne sur tout hôte que vous atteignez déjà : la politique, les approbations et le journal ne dépendent pas du serveur. Trois éléments sur l’hôte font tenir les limites même si bssh était contourné sur votre machine. Aucun n’est obligatoire, et bssh ai doctor indique lesquels un hôte possède.
| Sur l’hôte | Ce que vous y gagnez |
|---|---|
| Un bac à sable en lecture seule (Landlock ou bubblewrap) | Des lectures qui ne peuvent ni écrire ni ouvrir de connexion réseau, donc exécutées sans demander |
L’utilisateur bssh-agent |
Un compte séparé et sans privilège pour les écritures des agents, sans mot de passe ni sudo |
| La confiance dans votre autorité de certification locale | Les commandes approuvées s’exécutent avec un certificat de deux minutes qui ne permet qu’elles |
Le bac à sable en lecture seule
Section intitulée « Le bac à sable en lecture seule »bssh cherche un bac à sable la première fois qu’un agent utilise un hôte, et prend le meilleur disponible :
- Landlock, via
setprivd’util-linux 2.40 ou plus récent : aucune écriture nulle part, des lectures limitées auxread_pathsde la politique, et aucune connexion TCP sur les noyaux dont Landlock le permet. - bubblewrap (
bwrap) : tout le système de fichiers monté en lecture seule, un/tmpprivé, et pas de réseau.
Sur un hôte doté d’un bac à sable, run_readonly et run_many y exécutent tout ce que l’agent envoie, et la politique les autorise sans demander. Une commande qui se révèle écrire échoue, tout simplement. Sur un hôte sans bac à sable, bssh n’autorise que les commandes que son analyseur juge en lecture seule, et demande pour le reste.
Installer bwrap (apt install bubblewrap, dnf install bubblewrap) est en général le moyen le plus rapide d’avoir un bac à sable sur un hôte.
L’utilisateur agent
Section intitulée « L’utilisateur agent »bssh ai setup web-1 # un hôtebssh ai setup -t staging # tous les hôtes d'un tagbssh ai setup a besoin des droits root une fois, via sudo, et affiche le script exact avant d’exécuter quoi que ce soit :
$ bssh ai setup web-1 --dry-runbssh ai setup will run this script as root on 1 host(s): web-1 ...It creates the user `bssh-agent` (no password, no sudo) and its home with a backup directory.It does not change firewalls or sudoers.
Dry run: nothing was changed.L’utilisateur fait partie des groupes systemd-journal et adm quand ils existent, pour pouvoir lire les journaux. bssh n’installe ni règle sudo ni règle de pare-feu : c’est à vous d’en décider. bssh ai doctor propose les lignes sudo les plus restreintes dont la politique a besoin, par exemple :
bssh-agent ALL=(root) NOPASSWD: /usr/bin/systemctl reload nginxet vous rappelle de limiter le trafic sortant de l’utilisateur agent sur votre pare-feu si vous le pouvez.
Des certificats liés à l’approbation
Section intitulée « Des certificats liés à l’approbation »Avec une autorité de certification locale, une commande approuvée ne s’exécute pas avec une clé de longue durée. Pour chacune, issue de run, de service ou d’un plan de modification, bssh signe un nouveau certificat, valable pour cette commande uniquement :
- principal
bssh-agent: il ne permet de se connecter que comme l’utilisateur agent ; - la commande de l’étape comme commande forcée : le certificat ne peut rien exécuter d’autre ;
- ni terminal, ni redirection de port ou d’agent ;
- valable deux minutes.
Les modifications de fichiers sont écrites en SFTP avec les identifiants de votre connexion, après approbation et une fois l’original sauvegardé.
-
Créez l’autorité de certification sur votre machine :
bssh ai ca initLa clé reste sur votre machine, dans un fichier 0600. Pour la protéger par une phrase secrète, définissez
BSSH_AI_CA_PASSPHRASEen lançantca init. -
Faites-la accepter par les hôtes :
bssh ai ca trust web-1bssh ai ca trust -t stagingCela ajoute l’autorité à
TrustedUserCAKeys(à côté de celles que l’hôte accepte déjà), associe le principalbssh-agentà l’utilisateurbssh-agentseulement, et vérifie la nouvelle configuration avecsshd -tavant de rechargersshd. Si la vérification échoue, la configuration précédente est remise en place. Commesetup, la commande affiche d’abord le script, et--dry-runs’arrête là.
Vérifier un hôte
Section intitulée « Vérifier un hôte »bssh ai doctor web-1bssh ai doctor -t stagingPour chaque hôte : s’il est joignable, si bssh-agent existe, quel bac à sable il propose, s’il accepte votre autorité de certification, et les règles sudo dont votre politique aurait besoin. La commande liste aussi les clients d’agent trouvés sur votre machine et s’ils sont configurés avec bssh ai install.