web-dev-qa-db-fra.com

Vue en direct des commandes de Shell Linux exécutées par un autre utilisateur?

Est-il possible que l'utilisateur racine de Linux ait une vue en temps réel (ou proche en temps réel) des commandes shell étant exécutées par un autre utilisateur connecté via un terminal ou un ssh? Évidemment, ils sont stockés dans .bash_history, mais cela n'a été enregistré que lorsque l'utilisateur se déconnecte et peut également être désactivé.

EDIT: Idéalement, quelque chose qui peut facilement être allumé et éteint.

28
EMP

en tant que root, vous pouvez remplacer leur coquille avec un simple script wrapper qui a enregistré leurs commandes avant de les transmettre à la vraie coquille. Cela ne fonctionnerait que avant leur enregistrement.

17
Tim Howland

UTILISATION Sniffy Si vous souhaitez enfreindre la session de l'utilisateur ou screen -x Si vous avez une coopération.

Sachez cependant que l'espionnage de vos utilisateurs peut être soumis à des règlements ou même illégaux en fonction de votre législation locale.

9
David Schmitt

Changer la coquille est très trivial pour contourner, corrigé la coquille elle-même est meilleure, mais vous devez corriger toutes les coquilles. Notre cracker préféré utilise ceci, en tant que bonus, il ne se dérange pas de désactiver Bash_History.

ssh Host /bin/sh -i  

snoopy est un wrapper autour des fonctions exécutées et enregistre tout externe binaire exécuté (non cas de coque)

@David Schmitt's Suggestion Sniffy utilise une meilleure méthode, il tapote le pseudoterminal.

ttysnoop utilise la même méthode, mais elle est non sale. (J'ai probablement eu des problèmes qui rendant les connexions SSH de log SSH, ne peuvent pas vous rappeler)

Vous pouvez essayer de corriger SSH Pour enregistrer une session, mais ce correctif est Vieux.

pseudopode et rooth peut être utilisé pour la journalisation de Sudos légitimes. Et shwatcr est une autre chose à surveiller les connexions.

7
hayalci

sysdig est un outil puissant d'exploration au niveau du système - c'est ce que vous voulez;)

exemple:

sysdig -i spy_utilisateurs

Catégorie: Sécurité

spy_USERS affiche une activité utilisateur interactive

répertorie toutes les commandes que les utilisateurs lancent de manière interactive (par exemple de Bash) et chaque annuaire visite des utilisateurs

4
Andrzej Chabierski

Si vous êtes coopératif, vous pouvez utiliser écran GN entre deux utilisateurs - en avez-vous d'établir la session d'écran, puis d'avoir l'autre jointure à l'aide de screen -x.

Si vous souhaitez que la racine "espionne" sur d'autres utilisateurs sans leur connaissance, la solution la mieux et la plus efficace pourrait être un logiciel/matériel de Keylogger.

4
Tim

Vous pouvez essayer le patch Bash-Bofh. Rechercher sur le patch.

2
squillman

J'ai écrit une méthode pour enregistrer toutes les commandes de "Bash"/intégrées dans un fichier texte ou un serveur "syslog" sans utiliser de patch ou d'un outil exécutable spécial.

Il est très facile de se déployer, car il s'agit d'un simple streicroscript qui doit être appelé une fois à l'initialisation de la "bash".

Voir la méthode ici: http://blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger

1

Snoopy est destiné à la journalisation de commande légère.

Si vous souhaitez une vue en direct des commandes exécutées sur votre système, cela peut être. AVERTISSEMENT: Snoopy n'est pas une solution d'audit appropriée et peut facilement être contournée.

Toutefois, si vous désirez voir chaque personnage saisi dans le terminal, vous devrez utiliser un autre outil.

DIVULGATION: Je suis actuellement Mainteneur Snoopy.

1
Bostjan Skufca
function spy() { 
   ptsnum=`ps awfux | grep pt[s]\/"$1" | awk '/bas[h]/{print $2}'` ; 
   /usr/bin/strace -s 1000 -t -f -p $ptsnum 2>&1 3>&1 \
        | grep -Poi 'write\(...\"[[:print:]]{1,2}\"[.][.][.][,]..\)' ; 
}

[436] klikevil@epiphany ~ $ w<br>
 09:36:43 up 12:06,  6 users,  load average: 0.46, 0.29, 0.20<br>
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT<br>
klikevil pts/0    75.125.126.8     23:05    2:19m 10:33   0.18s cmd                                      <br>
klikevil pts/1    75.125.126.8     00:18    6:50m  0.06s  0.04s sshd: klikevil [priv]<br>
klikevil tty7     :0               09:02   17:07m  2:02   0.32s x-session-manager<br>
klikevil pts/2    :0.0             09:03    3:30   0.08s  0.08s bash<br>
klikevil pts/3    :0.0             09:03    0.00s  0.76s  0.00s w<br>
klikevil pts/4    :0.0             09:06    3:13   0.46s  0.00s /bin/sh /usr/bin/thunder<br>
[437] klikevil@epiphany ~ $ spy 2<br>
write(2, "e"..., 1)<br>
write(2, "c"..., 1)<br>
write(2, "h"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "s"..., 1)<br>
write(2, "u"..., 1)<br>
write(2, "p"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "d"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, "g"..., 1)<br>
write(2, "\n"..., 1)<br>
^C<br>

Semble fonctionner assez bien si cela ne vous dérange pas de trier à travers un groupe de pauses de ligne.

1
Jessica Parker