J'ai un petit serveur SSH et j'aimerais écrire un script à exécuter chaque fois que quelqu'un se connecte via SSH.
Maintenant, comment pourrais-je m'y prendre?
J'aimerais que le script s'exécute à chaque fois que ANYBODY se connecte, et je dois avoir accès au moins au nom d'utilisateur de la personne qui s'est connectée et à l'adresse IP à partir de laquelle la personne s'est connectée.
J'ai pensé à utiliser /etc/bash.bashrc
, mais est-ce une bonne solution? Par exemple, existe-t-il un moyen pour un utilisateur de désactiver son utilisation, et donc de désactiver mon script? Si oui, quelles sont mes autres options?
Merci.
Réponses:
Le mécanisme à utiliser dépend de vos objectifs.
Si vous souhaitez fournir quelque chose de pratique ou de convivial à vos utilisateurs, alors votre
/etc/profile
est assez raisonnable si tous vos utilisateurs utilisent le même shell. Si vous souhaitez que les commandes s'exécutent uniquement lorsque vous vous connectez viassh
, placez les commandes dans/etc/ssh/sshrc
. (Si cela ne vous dérange pas que les utilisateurs remplacent les commandes par leur propre~/.ssh/rc
fichier.)Si vous souhaitez forcer un utilisateur à exécuter un programme et un seul programme , l'
ForceCommand
option décrite par DigitalRoss est une bonne approche. (Personnellement, je limiterais davantage l'utilisateur avec un système de contrôle d'accès obligatoire tel que AppArmor , SELinux , TOMOYO ou SMACK , pour garantir que le programme ne puisse pas permettre à un utilisateur de s'échapper. J'ai travaillé sur AppArmor pendant dix ans, c'est donc le outil que je choisirais en premier, mais les autres sont de bons outils écrits par d'excellents programmeurs.)Si vous voulez qu'un seul programme s'exécute et ne dérange pas l'utilisateur de quelque façon que ce soit , la meilleure approche consiste à utiliser le
pam_exec(8)
module, qui ne peut pas être contourné, fonctionne quel que soit le shell et offre une capacité facile à exécuter en tant qu'utilisateur ou en tant qu'utilisateur. compte du programme exécutant l'autorisation. La page de manuel donne l'exemple suivant:Cela pourrait être étendu à fonctionner sur
auth
,account
,password
etsession
actions;session
serait probablement préférable pour exécuter lors de la connexion. Ajoutez simplement une ligne comme:dans votre
/etc/pam.d/sshd
fichier de contrôle.la source
pam_exec
module est exactement ce que je recherche. Merci!Les nouvelles versions d'OpenSSH ont une fonctionnalité de serveur appelée ForceCommand qui donne le contrôle à un script au lieu de l'opération (scp, ssh, ...) que l'utilisateur souhaitait. Le script reçoit la commande d'origine, vous pouvez donc probablement l'enchaîner après avoir fait tout ce que vous devez faire.
Depuis sshd_config (5):
J'ai utilisé cela une fois pour remplacer scp et fournir un téléchargement sécurisé de gemmes sans donner à chaque utilisateur autorisé à télécharger des gemmes un accès interactif dont ils n'avaient pas besoin ou ne voulaient pas.
la source
Une façon serait d'utiliser syslog-ng comme démon syslog et de le configurer pour exécuter un arrière-plan de script chaque fois qu'une certaine entrée de journal (telle qu'une connexion ssh réussie) correspond.
la source
Regarde ça:
Je ne pense pas qu'il existe un moyen de désactiver cela. Quelqu'un d'autre peut-il vérifier cela?
la source
/etc/profile
ou~/.profile
) dépend du shell de l'utilisateur, juste un peu moins quebashrc
. Si vos utilisateurs utilisent un bash ou similaire, c'est très bien.