Centraliser les accès ssh [Déprécié]
Se référer à SSH Configuration for Proxmox VM
La manière classique d'autoriser l'accès aux serveurs en SSH est
d'ajouter la clés publiques des utilisateurs aux fichiers
~/.ssh/authorized_keys
de chaque serveur.
L'augmentation du nombre de serveurs et de clés à autoriser crée bien sûr un problème d'extensibilité.
Plusieurs solutions existent pour adresser le problème, comme Ansible et d'autres solutions d'orchestration ou bien simplement des scripts faits maison.
Ces solutions présentent toutefois l'inconvénient de devoir maintenir constamment et à portée de main une banque des clés publiques des utilisateurs quelle que soit la machine d'où on opère.
L'application auth_server résoud ce dernier problème en sauvegardant les clés publiques sur le serveur d'authentification.
Ci-dessous, le contenu du fichier README.org
du dépot :
Serveur d'accès ssh centralisé
Pour l'impatient
kk
Affiche un tableau listant les serveurs, les clés (et les groupes de clés) autorisées pour chaque serveur.
kk server add monserveur
Ajoute un nouveau serveur monserveur
kk key add <id_rsa.pub> [nom]
Ajoute la clé du fichier id_rsa.pub
au serveur de clés
Si [nom] n'est pas indiqué le nom de la clé sera le commentaire habituellement trouvé à la fin de clé.
Exemple, avec une clé dont le contenu est :
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoY3PXIAtJLRk5EU7kfST0BIaiTmp6iVtDKZm……… gus@debian
kk key add <id_rsa.pub>
Ajoutera la clé nommée gus@debian
kk server addkey gus@debian –to monserveur
Autorisera la clé gus@debian
sur le serveur monserveur
Présentation générale
Configuration des serveurs clients
Le serveur openssh-server peut être configuré pour exécuter une commande afin récupérer la liste des clés aurtorisées.
Avec la configuration suivante dans /etc/ssh/sshd_config
le serveur ssh exécutera la commande /bin/get_athorized_keys
pour récupérer les clés publiques autorisées. (pour plus d'informations sur cette configuration et sur ses arguments
man sshd_config
)
AuthorizedKeysCommandUser nobody AuthorizedKeysCommand /bin/get_authorized_keys
/bin/get_authorized_keys
a le contenu suivant:
#!/bin/bash timeout 1 curl https://keys.elosys.net/$(hostname -s)
Le serveur de clés
/bin/get_authorized_keys
envoie une requête au serveur de clés répondant sur keys.elosys.net
pour lui fournir la liste des clés
autorisées à son nom (hostname -s
)
Le serveur de clés est implémenté en Perl (à l'aide du framework Dancer2) interfacé avec une base de données sqlite3. Le projet comporte également la CLI pour l'ajout et l'effacement des clés et des serveurs.
Le projet est donc divisée en 2 parties :
- Le serveur de clé publiques
- L'interface en ligne de commande pour faciliter l'ajout et l'effacement des serveurs, des clés et des groupes de clés.
Implémentation
Le code du serveur se trouve dans le dossier cgi/
L'accès aux fonctionnalités de gestion des clés sur le serveur est restreint avec un TOKEN et limité par IP. (Voir cgi/app.psgi
)
L'accès aux clés publiques n'est pas restreint.
Un fichier .env
devrait contenir la variable
KEYSERVERTOKEN
qui sera déployées à l'intérieur de l'application.
L'interface en ligne de commande devra utiliser cette varible pour communiquer avec le serveur et gérer les serveurs et les clés.