5 votes

Existe-t-il un moyen plus simple d'ajouter l'authentification par clé publique pour les nouveaux utilisateurs ?

Je suis dans le processus ardu et douloureux de la mise en place d'utilisateurs sécurisés sur un nouveau serveur web LEMP avec Ubuntu 12.04. J'allais initialement configurer quelque chose comme vsftpd ou proftpd, mais beaucoup ont suggéré d'utiliser SFTP directement, donc je vais le faire. En fin de compte, j'ai un seul utilisateur principal (que j'utilise simplement pour empêcher les connexions root). J'ai créé ce nouvel utilisateur, généré une paire de clés publiques, téléchargé la clé publique sur le serveur des utilisateurs. ~/.ssh comme authorized_key a changé le numéro de port SSH, a supprimé la connexion de l'utilisateur root et a également configuré passwordauthentication sur NON pour que l'utilisateur soit obligé d'utiliser sa clé pour se connecter. C'est assez simple (bien que travailler sur un PC semble être beaucoup plus un casse-tête pour cela que mes homologues OSX/NIX).

J'essaie maintenant de créer de nouveaux utilisateurs (pour mes développeurs web) qui auront simplement un accès SFTP et limiteront leur exposition simplement au répertoire web de leur charge. Chaque répertoire a le format suivant :

/var/www/sitename.com/public/

Mon mal de tête commence maintenant. Créer un nouvel utilisateur ? Facile. Ajouter un mot de passe ? Je n'en ai pas vraiment besoin étant donné que je demande des clés publiques/privées (et qu'ils n'auront jamais d'accès sudo) mais c'est bon. J'ai cependant du mal avec ce qui suit :

  • Comment stocker réellement la clé publique de ce nouvel utilisateur sur le serveur ? Si je me connecte en tant qu'utilisateur root et que je crée simplement le fichier authorized_keys dans leur répertoire personnel, il aura les droits de propriétaire et de groupe root et ils ne pourront pas se connecter au serveur. De même, ces nouveaux utilisateurs ne peuvent pas se connecter et créer le fichier eux-mêmes, car ils ne sont pas autorisés à se connecter par mot de passe.

(note : j'ai aussi du mal à configurer le sftp et à les limiter à leurs répertoires web respectifs, mais je pense que je pourrai y arriver plus tard par moi-même).

Des conseils ?

Modifier

Actuellement, le processus est le suivant :

  • obtenir la clé publique de l'individu
  • passer par les commandes suivantes :

    sudo mkdir -p /home/newuser/.ssh

    sudo nano /home/newuser/.ssh/authorized_key

    (copy key into single line and save)

    chown -R newuser:newuser /home/newuser

    chmod 700 /home/newuser/.ssh

    chmod 600 /home/newuser/.ssh/authorized_key

Je suppose que ce n'est pas absolument horrible mais si nous avons un grand nombre de développeurs (plus le temps qu'il va me falloir pour les configurer avec la partie SFTP et la limitation aux répertoires), cela semble être une énorme douleur.

11voto

Samat Jain Points 165

Vous devez changer la propriété du fichier et définir les autorisations de manière appropriée.

$ chown -R newuser /path/to/home/.ssh
$ chmod 700 /path/to/home/.ssh
$ chmod 600 /path/to/home/.ssh/authorized_keys

Pour rendre ce processus plus simple, reproductible et vérifiable, utilisez un système de gestion de la configuration pour la gestion des utilisateurs. Tous les systèmes de gestion de configuration largement utilisés (Puppet, chef, ansible, etc.) sont livrés avec la possibilité de créer des utilisateurs et de déployer des clés. Un avantage supplémentaire considérable de l'utilisation d'un système de gestion de configuration est que vous pouvez également conserver votre configuration dans le contrôle des sources.

1voto

John DaCosta Points 1718

Comment stocker réellement la clé publique de ce nouvel utilisateur sur le serveur ? Si je me connecte en tant qu'utilisateur root et que je crée simplement le fichier authorized_keys dans le répertoire personnel de l'utilisateur, il aura les droits de propriétaire et de groupe root et il ne pourra pas se connecter au serveur.

Créez-la pour eux en utilisant la clé publique qu'ils vous fournissent lorsqu'ils demandent le compte. Donnez-lui le Chown approprié. Donnez-lui le Chmod approprié. Terminé.

0voto

Robert_101 Points 1
/home/newuser/.ssh/authorized_key

Attention à la faute de frappe :)

c'est `authorized_keys'. Cela m'a frustré pendant au moins une demi-heure.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X