Nous avons de nombreux systèmes différents qui sont gérés par plusieurs personnes. Nous avons choisi d'utiliser l'authentification par clé publique SSH pour accéder à ces systèmes. Cela fonctionne très bien, car il n'est pas nécessaire de gérer ou de partager les mots de passe des comptes administratifs, pas besoin de mémoriser les mots de passe des différents systèmes (uniquement la phrase secrète de votre clé privée), pas besoin d'interaction (saisie du mot de passe) avec chaque commande à distance .
Le problème est que les clés publiques installées sur les systèmes doivent être gérées d'une manière ou d'une autre. Les gens vont et viennent, les clés peuvent être compromises, les responsabilités changent (une personne autorisée à entrer dans un système aujourd'hui peut être autorisée à en accéder à un autre demain). Actuellement, nous le gérons en modifiant manuellement les fichiers ~ / .ssh / authorized_keys sur chaque compte qui en a besoin, mais c'est beaucoup de travail et sujet aux erreurs.
Existe-t-il un outil prêt à gérer les clés publiques dans un tel scénario? Avez-vous vos propres solutions? Ou bien cette idée de gérer des systèmes de cette façon est-elle viciée?
la source
Réponses:
Comme déjà mentionné par pulegium, tout logiciel de gestion de configuration générique comme Puppet , Chef , Bcfg2 ou cfengine pourrait accomplir la tâche.
Puisque le fichier authorized_keys n'est pas si compliqué, vous pouvez également utiliser rsync ou un (D) SCM comme git ou hg pour gérer ce fichier. Vous avez le fichier "maître" sur l'un de vos serveurs et le servez via rsync / git / hg /…. Sur tous les autres serveurs, vous exécutez une tâche cron qui récupère périodiquement la copie principale (si elle a été modifiée) et la copie à l'emplacement local correct. Heck, cela fonctionnerait même avec HTTP ou FTP pur.
L'essentiel est: Avoir une copie "principale" de votre fichier authorized_keys et le mettre à jour. Laissez les «clients» (les ordinateurs, qui devraient avoir le fichier de clés autorisé actuel) le récupérer à partir de votre serveur maître et le déployer localement.
la source
Il existe un correctif disponible pour OpenSSH qui lui permet d'utiliser les clés publiques d'un serveur LDAP, mais cela n'a vraiment de sens que si vos vérifications d'authentification / de compte sont également effectuées par rapport à ce serveur LDAP (c'est ainsi que mon environnement est configuré). De plus, il est aussi sécurisé que votre configuration LDAP (vous voulez donc utiliser SSL et vérifier les clés).
Voir http://code.google.com/p/openssh-lpk/ pour le correctif et plus de détails. Je ne connais pas de système d'exploitation livré avec ce correctif par défaut, mais si vous exécutez FreeBSD, il s'agit d'un correctif facultatif si vous utilisez OpenSSH à partir des ports.
la source
je lance une solution très simple, qui fait de même avec les règles de pare-feu
exemple de fichier hosts.conf:
distribuer.sh:
c'est toute la magie :-)
la source
Je vérifie actuellement SSH KeyDB . Il est censé faire exactement cela, administrer les rôles, les serveurs et les utilisateurs, distribuer les clés d'utilisateur, rassembler les clés d'hôte, etc. Il a même quelque chose appelé "emplacements".
Je n'ai pas encore tout résolu et je ne sais pas si cela fonctionne pleinement. Le code est cependant en python et semble assez gérable, il ne devrait donc pas être trop difficile de le dépoussiérer et de le faire fonctionner.
la source
Je ne sais pas ce que vous entendez par beaucoup, je ne sais pas non plus si vous êtes prêt à changer, mais Kerberos est le droïde que vous recherchez. Cela résoudra vos problèmes avec élégance et authentifiera les personnes et les machines.
la source
Vous avez deux (qui se transforment généralement en 3) différents problèmes que vous essayez de résoudre:
L'authentification par clé publique est un moyen correct de s'authentifier parfois, mais ne traite pas du tout de l'autorisation. Je n'aime pas l'authentification par clé publique, car il est très facile de faire des compromis (en particulier en interne) à moins d'avoir de bons contrôles en place.
C'est là que des solutions comme Kerberos entrent en jeu. Dans le monde Windows, Active Directory résout ce problème. Dans le monde Unix, les choix sont nombreux, ce qui est à la fois une bonne et une mauvaise chose.
Je voudrais découvrir le projet Red Hat FreeIPA , qui est un ensemble de logiciels qui facilite la mise en service rapide d'un système Kerberos / LDAP / DNS de type AD.
la source
Vous pouvez utiliser Bcfg2 avec des comptes bcfg2 pour distribuer
authorized_keys
. En prime, vous aurez la possibilité de contrôler les utilisateurs et les groupes.Bcfg2 permet également une maintenance sans douleur
/etc/ssh/ssh_known_hosts
avec SSHbase .la source
Il y a aussi SKM
la source