Rejestrowanie aktywności „osób” w systemie Linux

11

Przeczytałem wiele związanych z tym postów i po prostu wymyśliłem więcej niż wcześniej. Istnieją rekomendacje dla różnych narzędzi, w tym ttyrec, snoopy, acct, rootsh, sudosh, ttyrpld, audytowanie unix i wiele innych.

W moim przypadku chcę mieć możliwość rejestrowania wszystkich poleceń wykonanych w systemie (np. Historii z włączonymi znacznikami czasu), ale chcę również wiedzieć, kto co zrobił? Jednak wszyscy logujemy się przez ssh do tego samego małego podzbioru kont użytkowników (w zależności od tego, co robimy). Jak mogę uzyskać dziennik poleceń, w tym informacje, które przekaże mi „kto” (dotyczące połączenia), dzięki czemu mogę prześledzić akcję konkretnej osoby jako zwykłego „użytkownika”?

Ashimema
źródło
Snoopy powinien być w stanie to zrobić i prawdopodobnie wiele innych alternatyw.
3molo
2
Wywołania systemowe, sudo, historia powłoki, zmiany w systemie plików? Nie wszystkie procesy użytkownika są koniecznie uruchamiane z powłok logowania.

Odpowiedzi:

9

auditdPakiet jest przeznaczony do tego, można użyć PAM przypisać każdym logowaniu identyfikator sesji, dzięki czemu można śledzić aktywność na odwrocie rachunku do pierwotnego login (a następnie sprawdzić dziennik logowania się ustalić, gdzie ta osoba zalogowany z) oraz wykorzystanie ausearchpolecenie, aby zlokalizować wydarzenia jesteś zainteresowany. Możesz przeczytać dość obszerny przewodnik tutaj, chociaż niektóre szczegóły drobniejsze będą musiały zostać zmienione, aby dopasować swoją dystrybucję. RedHat ma strony z FAQ i niektórych innych docs tutaj .

Ponieważ nie polega to na logowaniu poleceń wpisanych w powłokach lub zapisywaniu historii poleceń użytkowników, powinien rejestrować takie rzeczy, jak otwieranie vi (które może być wykonane przez X lub in screen), pisanie skryptu (może jeden znak na czas za pomocą komend vi do wycinania / wklejania i kilku serii, :.!/usr/games/fortuneaby uzyskać dane źródłowe, których rejestrowanie może nie być możliwe), a następnie uruchomienie :%!/bin/bashkomendy.

DerfK
źródło
To jest najbardziej obiecująca odpowiedź ... Audyt umożliwia spójne śledzenie działań użytkownika od momentu zalogowania do wylogowania, bez względu na to, jakie tożsamości ten użytkownik może przyjąć za pomocą identyfikatorów kontroli, które są tworzone podczas logowania i przekazywane do dowolnego procesu potomnego oryginalny proces logowania. Jeszcze trochę lektury z mojej strony, aby dowiedzieć się, jak ją właściwie wdrożyć. Dziękujemy za zawężenie wyboru!
Ashimema
Przepraszam, że oznaczenie tej odpowiedzi jako tak długo trwało tak długo… Próbowałem! Działa marzenie .. Na zdrowie!
Ashimema
4

Masz do dyspozycji wiele narzędzi, na które twoje pytanie (i te odpowiedzi) wskazują, jak historia, snoopy, audyty, logi sudo itp., Ale jeśli masz „podzbiór kont”, z których korzystają ludzie, jest nie ma sposobu, aby serwer powiedział, kto co zrobił. Jedynym sposobem, w jaki możesz wyraźnie powiedzieć, kto to zrobił, jest to, że użytkownicy mają własne komputery, których używają i używają keyloggerów, aby powiedzieć, co fizycznie piszą na tej klawiaturze.

Za każdym razem, gdy udostępniasz konta, nie możesz powiedzieć, co się właściwie dzieje, ponieważ potrzebujesz dodatkowego dowodu, kto korzystał z twojego konta root lub konta bob lub cokolwiek robili Twoi ludzie. Jeśli próbujesz zbadać, co wydarzyło się w konkretnym incydencie, może być konieczne przejrzenie zasad i procedur dostępu, procedur odzyskiwania oraz oceny pracowników i / lub zaangażowania się w przekwalifikowanie, jeśli to konieczne (lub ich wiarygodność w przypadku kont wrażliwych) niż bezpośrednio skupić się na wytropieniu osoby, która coś zrobiła, ponieważ może to pochłonąć więcej zasobów niż jesteś w stanie znaleźć w osobie, która to zrobiła.

W przeciwnym razie możesz przyjrzeć się technikom kryminalistycznym w celu śledzenia tego, co się stało (obrazowanie dysku, śledzenie dziennika itp.) Jeśli nie badasz incydentu, przejrzyj swoje zasady i wdrożyć lepsze śledzenie i weryfikację konta (tylko Ty masz root, tylko Bob używa swojego konta za pomocą sudo, aby uzyskać dostęp do wyższych uprawnień, instalować i monitorować audyty itp.) i uważaj, aby twój zaufany krąg nie czuł się tak, jakby był trzymany pod mikroskopem lub możesz zrazić ludzi próbujących wykonywać swoje zadania (lub utrudniać im wykonywanie pracy).

Bart Silverstrim
źródło
2

Linux auditd ( http://people.redhat.com/sgrubb/audit/ ) da ci największą moc obserwowania, kto co zrobił. Masz więcej na ten temat w odpowiedzi DerfK.

Nic jednak nie powie ci, kto zalogował się jako webadmin, jeśli n osób ma dostęp do konta webadmin. Sugerowałbym użycie nazwanych kont dla każdego użytkownika, a następnie użycie su - lub sudo do uruchamiania poleceń z konta „funkcyjnego”.

Paweł Brodacki
źródło