Jak mogę zarejestrować każde polecenie wykonane przez użytkownika?

32

Chcę monitorować całą aktywność użytkownika na moim serwerze.

Nawet gdy użytkownik wykonuje polecenie powłoki z jakiegoś edytora, takiego jak vim, chcę je zobaczyć w pliku dziennika.

Sprawdziłem narzędzie acct, ale nie wyświetla ono kompletnych poleceń. (Proszę o poprawienie mnie, jeśli przeoczyłem niektóre opcje, które już zostały wykonane).

Na jakie narzędzie Linux powinienem patrzeć, aby rozwiązać ten problem?

Supratik
źródło
1
. skrypt man (1)
adapttr 30.11.11

Odpowiedzi:

32

Dodaj ten wiersz do swojej konfiguracji pam odpowiedzialnej za logowanie (jego uwierzytelnianie systemowe w dystrybucjach opartych na redhat)

session    required     pam_tty_audit.so enable=*

Aby dowiedzieć się, co zostało zrobione, możesz użyć.

ausearch -ts <some_timestamp> -m tty -i

Daje to taki wynik:

 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>

Jedynym minusem jest to, że może być nieco trudny do odczytania, ale jest znacznie lepszy niż większość proponowanych rozwiązań, ponieważ teoretycznie można go wykorzystać do zarejestrowania całej sesji, brodawek i wszystkich.

Edycja: Aha, możesz użyć aureportu, aby wygenerować listę, która może być bardziej pomocna.

# 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
źródło
Dziękuję za szczegóły. Używam Ubuntu 10.04 LTS Kiedy sprawdzam folder / lib / security / moduł nie jest obecny, ale dla tego modułu jest wyświetlana strona podręcznika man. Myślę, że trafiłem na ten błąd bugs.launchpad.net/ubuntu/+source/pam/+bug/588547 Czy jest jakiś inny sposób, aby zainstalować ten moduł?
Supratik,
Raport o błędzie sugeruje naprawę i aktualizację.
Matthew Ife,
@Mlfe Skompilowałem kod źródłowy PAM i skopiowałem plik .so do / lib / security / i zadziałał. Dzięki jeszcze raz.
Supratik,
1
@CameronKerr: problem z hasłem został naprawiony: redhat.com/archives/linux-audit/2013-May/msg00007.html
Yohann
3
Uwaga: warto wspomnieć, że aby powyższe działało auditd, najpierw należy włączyć demona (nie było to domyślnie w mojej instalacji CentOS 6.7). Aby uruchomić demona, użyj :, i aby utrwalićservice auditd start tę zmianę (po ponownym uruchomieniu komputera), użyj chkconfig auditd on Source: access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/... i access.redhat.com/documentation/en-US/ Red_Hat_Enterprise_Linux /…
jonny
8

Najlepszym rozwiązaniem Twojego problemu byłby wbudowany system kontroli systemu Linux . Użyj man 8 auditdlub sprawdź tę stronę, aby uzyskać więcej informacji: http://linux.die.net/man/8/auditd .

Możesz także sprawdzić ten samouczek - choć jest on nieco poza zakresem twojego pytania, pokazuje, jak działa system kontroli.

Vladimir Blaskov
źródło
2

Możesz użyć snoopy .

Jest to prosta biblioteka do rejestrowania poleceń, a nie odpowiednie rozwiązanie kontrolne (łatwe do obejścia). Ujawnienie: Jestem obecnym opiekunem snoopy.

Bostjan Skufca
źródło
2

Mniej znaną sztuczką, ale najłatwiejszą jest skorzystanie z wbudowanych funkcji kontroli sudo. Sudo jest dostarczane z sudoreplaypoleceniem, które ułatwia odtwarzanie sesji. Będzie nawet przekazywać vimsesje (jak sugerujesz).

Oto jak z niego korzystać w kilku prostych krokach:

  1. Zainstaluj sudoshw swoim systemie; jest to opakowanie powłoki wokół sudopolecenia, które czyni użytkownika sudo(nie root) i może być używane jako systemowa powłoka logowania
  2. Włącz sudorejestrowanie. Edytuj /etc/sudoers.d/sudosh: Defaults log_output Defaults!/usr/bin/sudoreplay !log_output Defaults!/sbin/reboot !log_output

  3. Dodaj to polecenie, /etc/shellsaby zezwolić na logowanie przy jego użyciu: /usr/bin/sudosh

    Wskazówka : aby uniemożliwić użytkownikom logowanie się za pomocą innych powłok, usuń te powłoki /etc/shells.

  4. Zaktualizuj użytkownika, foobaraby używał sudoshpowłoki. chsh -s /usr/bin/sudosh foobar

Aby uzyskać bardziej szczegółowe informacje, zobacz: https://github.com/cloudposse/sudosh/

Erik Osterman
źródło
1

oto magiczne rozwiązanie: http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html

  • mniam zainstaluj psacct (redhat)
  • sudo apt-get install acct

możesz wyświetlić statystyki dotyczące poleceń użytkownika / połączenia itp.

Wyświetl wszystkie polecenia wywołane przez danego użytkownika ...

Przeszukaj dzienniki rachunkowości według nazwy polecenia: $ lastcomm rm $ lastcomm passwd

i tak dalej, aby uzyskać więcej informacji, odwiedź powyższy link ..

Med Ali Difallah
źródło
3
W pytaniu powiedziano: „acct nie wyszczególnia kompletnych poleceń”.
Putnik