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?
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>
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.
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.
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:
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èmeActivez la journalisation Sudo
. Éditer /etc/sudoers.d/sudosh
: Defaults log_output Defaults!/usr/bin/sudoreplay !log_output Defaults!/sbin/reboot !log_output
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
.
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/
voici une solution magique: http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html
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 ..