GNU/Linux >> Tutoriels Linux >  >> Linux

Comment enregistrer chaque commande exécutée par un utilisateur ?

Solution 1 :

Ajoutez cette ligne à votre configuration pam responsable des connexions (son authentification système sur les distributions basées sur redhat)

session    required     pam_tty_audit.so enable=*

Pour savoir ce qui a été fait, vous pouvez utiliser.

ausearch -ts <some_timestamp> -m tty -i

Cela produit une sortie comme celle-ci :

 type=TTY msg=audit(11/30/2011 15:38:39.178:12763684) : tty pid=32377 uid=root
 auid=matthew major=136 minor=2 comm=bash data=<up>,<ret>

Le seul inconvénient de cela est qu'il peut être un peu difficile à lire, mais c'est bien mieux que la plupart des solutions proposées car en théorie, il pourrait être utilisé pour enregistrer une session entière, sans exception.

Edit :Oh, et vous pouvez utiliser aureport pour générer une liste qui peut être plus utile.

# aureport --tty
...
12. 11/30/2011 15:50:54 12764042 501 ? 4294967295 bash "d",<^D>
13. 11/30/2011 15:52:30 12764112 501 ? 4294967295 bash "aureport --ty",<ret>
14. 11/30/2011 15:52:31 12764114 501 ? 4294967295 bash <up>,<left>,<left>,"t",<ret>

Solution 2 :

La meilleure solution à votre problème serait le système d'audit intégré de Linux. Utilisez man 8 auditd ou consultez cette page pour plus d'informations :http://linux.die.net/man/8/auditd.

Vous pouvez également consulter ce didacticiel. Bien qu'il sorte légèrement du cadre de votre question, il montre comment fonctionne le système d'audit.

Solution 3 :

Vous pouvez utiliser snoopy.

Il s'agit d'une simple bibliothèque de journalisation des commandes, et non d'une solution d'audit appropriée (facilement contournable). Divulgation :je suis le responsable actuel de Snoopy.

Solution 4 :

Une astuce moins connue, mais la plus impressionnante consiste simplement à utiliser les capacités d'audit intégrées de sudo . Sudo est livré avec un sudoreplay commande qui facilite la relecture des sessions. Il va même relayer vim séances (comme vous le suggérez).

Voici comment l'utiliser en quelques étapes simples :

  1. Installer sudosh sur votre système ; c'est un shell wrapper autour du sudo commande qui rend un utilisateur sudo eux-mêmes (pas root ) et peut être utilisé comme shell de connexion système
  2. Activer sudo enregistrement. Modifier /etc/sudoers.d/sudosh : Defaults log_output Defaults!/usr/bin/sudoreplay !log_output Defaults!/sbin/reboot !log_output

  3. Ajoutez cette commande à /etc/shells pour autoriser les connexions l'utilisant : /usr/bin/sudosh

    Astuce  :pour empêcher les utilisateurs d'utiliser d'autres shells pour se connecter, supprimez ces autres shells de /etc/shells .

  4. Mettre à jour l'utilisateur foobar utiliser le sudosh shell. chsh -s /usr/bin/sudosh foobar

Pour des informations plus détaillées, voir :https://github.com/cloudposse/sudosh/


Linux
  1. Comment créer un utilisateur sous Linux[Gestion des utilisateurs]

  2. Comment enregistrer chaque commande tapée dans bash et chaque opération de fichier ?

  3. Comment enregistrer chaque commande tapée ?

  4. Comment savoir si un utilisateur a des droits Sudo

  5. Comment créer un utilisateur Sudo dans Rocky Linux 8

Comment créer un utilisateur Sudo sur Debian

Comment supprimer un utilisateur sur Ubuntu

Comment créer un utilisateur Sudo sur Ubuntu

Comment créer un utilisateur Sudo sur CentOS

Comment créer un utilisateur Sudo sur Debian

Comment créer un utilisateur Sudo sur CentOS