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É
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:
/etc/ssh/authorized_keys/www-data
/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.
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.