web-dev-qa-db-fra.com

Un emplacement central pour les clés autorisées est-il une bonne idée?

Je suis en train de configurer un serveur cloud pour exécuter la pile suivante: Ruby, Passenger, Apache; sous Ubuntu 10.04 (Lucid Lynx).

Dans le but de rendre le serveur plus facile à gérer, j'ai configuré les clés RSA sur root et www-data afin que je puisse ssh dans le serveur. Ce que je n'ai pas aimé, c'est que www-data's .ssh répertoire assis dans /var/www qui est la configuration de répertoire par défaut pour Apache. Je crains que si Apache n'est pas configuré correctement, le .ssh le répertoire peut être exposé.

Je suis tombé sur la solution pour déplacer le ~/.ssh/authorized_keys fichier dans un emplacement central en modifiant AuthorizedKeysFile dans /etc/ssh/sshd_config. Cela vient avec 2 avantages: un emplacement unique pour les clés, et ne pas avoir à vous soucier d'une mauvaise configuration Apache. Le seul inconvénient auquel je peux penser est que maintenant chaque utilisateur est disponible pour se connecter sur le serveur (clairement une épée à double tranchant du fichier de clé centrale.)

Y a-t-il quelque chose que j'ai manqué dans cette configuration? Est-ce que je me suis surexposé ou est-ce une meilleure solution qu'un individu authorized_keys des dossiers?

Je suis vert en ce qui concerne la gestion des serveurs, mais je suis totalement prêt à être appelé mauvais noms pour avoir fait de mauvaises choses. :RÉ

30
Gavin Miller

Tous les fichiers de clés peuvent être centralisés dans le même répertoire et ne pas être mélangés dans le même fichier.

Configurez simplement le sshd_config fichier comme celui-ci:

AuthorizedKeysFile  /etc/ssh/authorized_keys/%u

Sur votre serveur:

  • les clés www-data seront dans /etc/ssh/authorized_keys/www-data
  • les clés racine seront dans /etc/ssh/authorized_keys/root

Concernant les droits d'accès, ces paramètres sont acceptés par sshd:

/etc/ssh/authorized_keys Est détenue par root:root et dispose du mode 755. Les fichiers clés appartiennent à root:root et avoir le mode 644.

D'autres modes peuvent fonctionner mais je ne les ai pas testés.

52
mahn

D'une manière générale, je ne ferais pas ce que vous proposez. Il casse les hypothèses courantes (comme ~/.ssh/authorized_keys fonctionne pour vos utilisateurs et présente les problèmes que vous avez déjà mentionnés dans votre question. Si vous voyez des problèmes évidents avant la mise en œuvre, cela signifie que votre solution n'est pas idéale.

Pour la sécurité, je pense aussi que c'est une [~ # ~] terrible [~ # ~] idée d'avoir tout le monde partager un compte de service: pour le moment, c'est juste vous, et vous savez que c'est vous qui effectuez les changements. Dans 5 ans, lorsque vous aurez 5 administrateurs, vous voudrez savoir qui a changé quoi et fouiller dans les journaux d'audit pour voir qui a utilisé quelle clé quand est une douleur royale.
Il vaut mieux que les gens se connectent en tant qu'eux-mêmes et utilisent Sudo ou quelque chose de similaire pour augmenter leurs privilèges et faire tout ce qu'ils doivent faire.


Si vous souhaitez toujours centraliser les clés SSH, je vous suggère de rechercher un système de déploiement comme Puppet ou radmind pour gérer/distribuer le authorized_keys fichiers vers le ~user/.ssh/ répertoires (ou pirater une solution maison qui les SCP en place).
Lorsque vous développez sur plusieurs serveurs, vous souhaiterez peut-être consulter le correctif de clé publique LDAP pour les anciennes versions d'OpenSSH (ou la directive AuthorizedKeysCommand et un script approprié dans la nouvelle version d'OpenSSH) afin que vous puissiez centraliser vos utilisateurs et ne pas avoir à distribuer leurs clés sur tout votre réseau, mais cela devrait être assez loin pour vous.

15
voretaq7