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”?
Odpowiedzi:
auditd
Pakiet 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 wykorzystanieausearch
polecenie, 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/fortune
aby uzyskać dane źródłowe, których rejestrowanie może nie być możliwe), a następnie uruchomienie:%!/bin/bash
komendy.źródło
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).
źródło
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”.
źródło