web-dev-qa-db-fra.com

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

Je souhaite surveiller l'activité de tous les utilisateurs sur mon serveur.

Même lorsque l'utilisateur exécute une commande Shell à partir d'un éditeur comme vim, je veux les voir dans le fichier journal.

J'ai vérifié l'outil acct mais il ne répertorie pas les commandes complètes. (Veuillez me corriger si j'ai manqué certaines options qui le font déjà).

Quel outil Linux devrais-je utiliser pour résoudre ce problème?

34
Supratik

Ajoutez cette ligne à votre configuration pam responsable des connexions (son auth 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 est que cela peut être un peu difficile à lire, mais c'est beaucoup mieux que la plupart des solutions proposées car en théorie, il pourrait être utilisé pour enregistrer une session entière, verrues n tous.

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>
33
Matthew Ife

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

En outre, vous pouvez vérifier ce tutoriel - bien qu'il soit légèrement hors de portée de votre question, il montre comment fonctionne le système d'audit.

9
Vladimir Blaskov

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 snoopy actuel.

2
Bostjan Skufca

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

Voici comment l'utiliser en quelques étapes simples:

  1. Installez sudosh sur votre système; il s'agit d'un wrapper Shell autour de la commande Sudo qui rend un utilisateur Sudo lui-même (pas root) et peut être utilisé comme shell de connexion système
  2. Activez la journalisation Sudo. Éditer /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'utiliser: /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. Mettez à jour l'utilisateur foobar pour utiliser le shell sudosh. chsh -s /usr/bin/sudosh foobar

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

2
Erik Osterman

voici une solution magique: http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html

  • yum install psacct (redhat)
  • Sudo apt-get install acct

vous pouvez afficher des statistiques sur les commandes/connexions utilisateur, etc.

Liste toutes les commandes invoquées par un utilisateur donné ...

Recherchez les journaux de comptabilité par nom de commande: $ lastcomm rm $ lastcomm passwd

et ainsi de suite, pour plus d'informations s'il vous plaît visitez le lien ci-dessus ..

1
Med Ali Difallah