Commandes de journal exécutées sur ssh


8

Je voudrais enregistrer toutes les commandes exécutées via SSH.

Dire,

ssh something@server.com COMMAND

Je veux me connecter "COMMAND" sur server.com

J'ai fait des recherches approfondies mais je n'ai rien trouvé.

Il y a une autre question similaire, mais je ne pense pas qu'il y ait de solution là-bas.

Comment enregistrer "l'exécution à distance via SSH"

Je peux obtenir une vue en direct avec

pstree -p | grep ssh

J'ai essayé Snoopy, auditd et sudosh mais je n'ai pas pu enregistrer ces commandes sur ssh.

Il existe un http://freecode.com/projects/shwatchr . mais je ne peux pas télécharger le script à tester.

existe-t-il un autre moyen d'y parvenir?

Merci.........

Réponses:


4

Au lieu de vous concentrer sur SSH, prenez du recul et envisagez d'utiliser auditd. Je suppose que ce que vous voulez vraiment, c'est suivre les utilisateurs, pas suivre ce qui est fait à partir de SSH par opposition à d'autres types de connexion.

man auditctl devrait vous donner un point de départ.


Belle note, mais pour moi trop abstraite. Comment utiliser auditctlpour enregistrer les commandes ssh?
guettli

3

J'ai fait un test en utilisant cette option dans mon laboratoire de serveur et cela fonctionne, mais peut-être qu'il y a une meilleure façon.

ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"

Cela enregistre la commande envoyée mais ne l'exécute pas sur le système distant.
Michael McGarrah

1

J'ai trouvé un moyen de le faire. Il existe un script Perl écrit par John M. Simpson ( https://www.jms1.net/ ).

Tout ce que vous avez à faire est d'ajouter

command="#{path to log-session}"

avant chaque clé dans vos ~ / .ssh / authorized_keys

Cela ne fonctionne que si vous avez un ssh sans mot de passe, mais cela résout mon objectif dans une certaine mesure.

http://www.jms1.net/log-session


1

Dans mon cas, j'avais exactement la même exigence. La seule mise en garde avec cette méthode est que je ne sais pas comment la faire fonctionner si vous n'utilisez pas les clés ssh. J'ai créé un court script bash pour enregistrer la commande avant de l'exécuter:

#!/bin/bash
echo "$(date -Is) ${SSH_ORIGINAL_COMMAND}" >> ~/sshcommands.log
sh "${SSH_ORIGINAL_COMMAND}"

J'ai enregistré cette commande dans ~ / bin / log-command puis l'ai rendue exécutable ( chmod +x ~/bin/log-commands).

Dans le fichier authorized_keys, j'ai ajouté le command=paramètre à la ligne appartenant à la clé SSH pour laquelle je voulais avoir des journaux, il serait donc forcé d'exécuter le script log-commandes:

command = "/ home / tricky / bin / log-commandes" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ ...... 6J0C1 tricky@tricky-testing.mydomain

Si quelqu'un est au courant de la journalisation mais ne veut pas que vous voyiez les commandes, il peut simplement accéder à une session interactive. Comme vous l'avez mentionné, vous avez déjà essayé Snoopy, qui le fera pour vous. Les alternatives populaires que je n'ai pas essayées sont rootsh, sudosh et log-user-session.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.