system_administration:security:ssh_central

Centraliser les accès ssh [Déprécié]

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 :

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

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)

/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.

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.

  • system_administration/security/ssh_central.txt
  • Last modified: 2023/08/13 03:35
  • by aziz