Řešení 1:
Přidejte tento řádek do své konfigurace pam zodpovědné za přihlášení (jeho ověření systému v distribucích založených na redhat)
session required pam_tty_audit.so enable=*
Chcete-li zjistit, co bylo provedeno, můžete použít.
ausearch -ts <some_timestamp> -m tty -i
To vytvoří výstup podobný tomuto:
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>
Jedinou nevýhodou toho je, že to může být trochu obtížné číst, ale je to mnohem lepší než většina navrhovaných řešení, protože teoreticky by se dalo použít k záznamu celé relace, bradavic a všech.
Edit:Jo a můžete použít aureport ke generování seznamu, který může být užitečnější.
# 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>
Řešení 2:
Nejlepším řešením vašeho problému by byl vestavěný auditní systém Linuxu. Použijte man 8 auditd
nebo se podívejte na tuto stránku pro více informací:http://linux.die.net/man/8/auditd.
Můžete si také prohlédnout tento tutoriál – i když je trochu mimo rozsah vaší otázky, ukazuje, jak funguje systém auditu.
Řešení 3:
Můžete použít Snoopy.
Je to jednoduchá knihovna pro protokolování příkazů a není to správné řešení auditu (snadno obejít).
Řešení 4:
Méně známý trik, ale ten nejúžasnější je použít vestavěné funkce auditu sudo
. Sudo se dodává s sudoreplay
příkaz, který usnadňuje přehrávání relací. Bude dokonce přenášet vim
relací (jak navrhujete).
Zde je návod, jak jej používat v několika jednoduchých krocích:
- Nainstalujte
sudosh
na vašem systému; toto je obal kolemsudo
příkaz, díky kterému je uživatelsudo
sami (nikoliroot
) a lze jej použít jako systémový přihlašovací shell -
Povolit
sudo
protokolování. Upravit/etc/sudoers.d/sudosh
:Defaults log_output Defaults!/usr/bin/sudoreplay !log_output Defaults!/sbin/reboot !log_output
-
Přidejte tento příkaz do
/etc/shells
pro povolení přihlášení pomocí:/usr/bin/sudosh
Tip :Chcete-li uživatelům zabránit v používání jiných shellů k přihlášení, odeberte tyto ostatní shelly z
/etc/shells
. -
Aktualizujte uživatele
foobar
použítsudosh
shell.chsh -s /usr/bin/sudosh foobar
Podrobnější informace najdete na:https://github.com/cloudposse/sudosh/