2 votes

Déterminer le nom du compte de la machine distante de l'utilisateur connecté via SSH.

À l'entreprise où je travaille, nous avons certains comptes partagés que n'importe qui peut utiliser via SSH pour effectuer des tâches spécifiques. À ce stade, nous avons trop d'utilisateurs et chacun a ses propres avantages en termes d'utilisabilité, tels que des alias shell, etc.

Ce que j'essaie de faire, c'est permettre aux utilisateurs d'avoir différents paramètres shell à travers le ~/.bash_profile en fonction de qui s'est réellement connecté. Par exemple, lorsque Jonathan se connecte, je veux que le shell exécute également ~/.Jonathan_profile, et pour Bob, je veux que le shell inclue le profil ~/.Bob.

Cependant, je ne suis pas sûr s'il existe un moyen de connaître le nom du compte sur la machine distante d'un utilisateur connecté via SSH.

Toute aide est grandement appréciée.

2voto

Sairam Points 775

Vous ne pouvez pas dire quel compte le client utilise, car le client ne vous le dit pas. Mais il y a ces choses que vous pouvez faire:

  1. Créez des comptes séparés et donnez aux utilisateurs l'accès au compte partagé en utilisant sudo. C'est vraiment l'option préférée qui vous donne la meilleure vérification (il est toujours enregistré qui fait quoi) et les utilisateurs peuvent mettre les utilitaires qu'ils veulent dans leurs comptes. Cependant, c'est aussi le plus gros travail.

  2. Utilisez uniquement l'authentification par clé publique et définissez les variables d'environnement à partir de là en utilisant la syntaxe:

    environnement="END_USER=qui que ce soit" ssh-rsa asdfasdfr...

    dans .ssh/authorized_keys. Ensuite, vous regardez $END_USER dans .profile. Évidemment, vous devez le définir pour chaque clé publique utilisée pour se connecter.

  3. Dites à tout le monde de définir la variable d'environnement à partir du client en utilisant l'option SendEnv (le serveur doit avoir la correspondance AcceptEnv définie). Encore une fois, vous vérifiez la variable dans .profile.

  4. Obtenez l'IP source et le port à partir de la variable SSH_CONNECTION et utilisez ident pour obtenir l'utilisateur source réel; mais identd devrait être en cours d'exécution sur les clients et ce n'est que rarement le cas de nos jours, car ce n'est pas très utile, mais c'est utile pour un attaquant potentiel pour obtenir des informations sur votre système.

  5. Pour une personnalisation plus compliquée à l'intérieur d'un seul compte, il est toujours possible d'écrire un wrapper de shell personnalisé et de l'utiliser avec l'attribut command dans les clés autorisées. C'est aussi un assez gros travail, mais il peut être utilisé pour implémenter presque toutes les restrictions et vérifications sans avoir à créer des comptes séparés.

Note : Je recommanderais certainement d'utiliser uniquement des clés publiques et de désactiver le mot de passe. De cette façon, si vous voulez annuler l'accès de quelqu'un, il vous suffit de supprimer leur clé.

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