Zaloguj wszystkie działania roota przy użyciu oryginalnej nazwy użytkownika, który su'd / sudoed do rootowania

11

Jaka jest preferowana metoda śledzenia, kto działa jako root w logach, gdy logowanie roota jest wyłączone (SSH), ale użytkownicy mogą działać sudo -ilub su -zostać rootem? Chciałbym również śledzić każde polecenie z oryginalną nazwą użytkownika. RHEL 6 lub dowolny rsyslog systemu Linux itp.

Gregg Leventhal
źródło

Odpowiedzi:

7

Wydaje się, że najbardziej niezawodne metody są kontrolowane:

http://blog.ptsecurity.com/2010/11/requirement-10-track-and-monitor-all.html

Auditd zasadniczo przechwytuje wszystkie wywołania systemowe i sprawdza je pod kątem zestawu reguł. Więc w twoim /etc/audit/audit.rulespliku miałbyś coś takiego:

# This file contains the auditctl rules that are loaded
# whenever the audit daemon is started via the initscripts.
# The rules are simply the parameters that would be passed
# to auditctl.

# First rule - delete all
-D

# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 320

# Feel free to add below this line. See auditctl man page
-a always,exit -F euid=0 -F perm=wxa -k ROOT_ACTION

Ostatnia reguła jest jedyną regułą inną niż domyślna.

Główną wadą tego podejścia (i powodem, dla którego znalazłem to pytanie, szukając alternatyw) jest to, że nieprzetworzone pliki dziennika są dość tajemnicze i są pomocne tylko po uruchomieniu programu do wysyłania zapytań na surowym pliku dziennika: ausearch

Przykładowym zapytaniem dla tej reguły byłoby:

ausearch -ts today -k ROOT_ACTION -f audit_me | aureport -i -f

Rozsądnym rozwiązaniem byłoby prawdopodobnie utworzenie crona, który przeszuka surowe dzienniki audytujące, a następnie wyśle ​​je do rozwiązania rejestrującego.

freb
źródło
Jeśli szukasz czegoś, co zastąpi auditd i wykona korelację surowych zdarzeń dla Ciebie, sprawdź: github.com/slackhq/go-audit
freb
3

W dystrybucjach Red Hat zwykle używasz /var/log/securedziennika, aby zidentyfikować, kto się loguje lub korzysta z sudosystemu Fedora / CentOS / RHEL.

Przykłady

przykład sudo
$ sudo -Es

wynik dziennika:

1 września 19:32:51 greeneggs sudo: saml: TTY = pts / 2; PWD = / home / saml; USER = root; POLECENIE = / bin / bash

przykład su
$ su -

wynik dziennika:

1 września 19:34:49 greeneggs su: pam_unix (su-l: session): sesja otwarta dla użytkownika root przez saml (uid = 1000)

slm
źródło
3

Jeśli masz współpracujących użytkowników, możesz skonfigurować rootsha, aby rejestrował wszystkie typy użytkowników root w syslog.

http://linux.die.net/man/1/rootsh

rpms rootsha są dostępne w EPEL.

Wersja sudo na RHEL6 może również rejestrować standardowe wyjście do pliku dla każdej sesji sudo. Zajrzyj na stronę podręcznika sudo_plugins.

Żadne z tych podejść nie jest całkowicie kuloodporne.

Fred the Magic Wonder Dog
źródło