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 :
- Installer
sudosh
sur votre système ; c'est un shell wrapper autour dusudo
commande qui rend un utilisateursudo
eux-mêmes (pasroot
) et peut être utilisé comme shell de connexion système -
Activer
sudo
enregistrement. Modifier/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'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
. -
Mettre à jour l'utilisateur
foobar
utiliser lesudosh
shell.chsh -s /usr/bin/sudosh foobar
Pour des informations plus détaillées, voir :https://github.com/cloudposse/sudosh/