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

32

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?

Supratik
la source
1
. script homme (1)
adaptr
Une belle référence 8gwifi.org/docs/linux-monitor-commands.jsp
anish

Réponses:

32

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>
Matthew Ife
la source
Merci pour les détails. J'utilise Ubuntu 10.04 LTS Lorsque je vérifie le dossier / lib / security / le module n'est pas présent mais il y a une page de manuel présente pour ce module. Je pense que j'ai rencontré ce bogue bugs.launchpad.net/ubuntu/+source/pam/+bug/588547 Existe-t-il un autre moyen d'installer ce module?
Supratik
Le rapport de bogue suggère qu'un correctif et une mise à jour ont été distribués.
Matthew Ife
@Mlfe J'ai compilé le code source PAM et copié le fichier .so dans / lib / security / et cela a fonctionné. Merci encore.
Supratik
1
@CameronKerr: le problème de mot de passe est résolu: redhat.com/archives/linux-audit/2013-May/msg00007.html
Yohann
3
Remarque, il convient de mentionner que pour que ce qui précède fonctionne, le auditddémon doit d'abord être activé (ce n'était pas par défaut sur mon installation CentOS 6.7). Pour démarrer le démon, utilisez: service auditd startet pour rendre cette modification persistante (après les redémarrages), utilisez chkconfig auditd on Source: access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/… et access.redhat.com/documentation/en-US/ Red_Hat_Enterprise_Linux /…
jonny
8

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

En outre, vous pouvez consulter 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.

Vladimir Blaskov
la source
2

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.

Bostjan Skufca
la source
2

Une astuce moins connue, mais la plus impressionnante est simplement d'utiliser les capacités d'audit intégrées de sudo. Sudo est livré avec une sudoreplaycommande qui facilite la relecture des sessions. Il relaiera même les vimsessions (comme vous le suggérez).

Voici comment l'utiliser en quelques étapes simples:

  1. Installez sudoshsur votre système; c'est un wrapper shell autour de la sudocommande qui fait un utilisateur lui- sudomême (pas root) et peut être utilisé comme shell de connexion système
  2. Activez la sudojournalisation. Modifier /etc/sudoers.d/sudosh: Defaults log_output Defaults!/usr/bin/sudoreplay !log_output Defaults!/sbin/reboot !log_output

  3. Ajoutez cette commande à /etc/shellspour 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 foobarpour utiliser le sudoshshell. chsh -s /usr/bin/sudosh foobar

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

Erik Osterman
la source
1

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

Med Ali Difallah
la source
3
Dans la question a été dit: «acct il ne répertorie pas les commandes complètes».
Putnik