Jak możesz zapisać każde wpisane polecenie

24

Jak możesz zapisać każde polecenie, które ktoś wprowadził do powłoki?

Pytam zarówno na podstawie ochrony siebie, czy jesteś zalogowany na czyimś serwerze i coś się psuje, czy też ktoś inny jest zalogowany na twoim serwerze (celowo lub złośliwie).

Nawet początkujący mogą historia bypass z unset historylub utworzyć nową powłokę, aby ukryć swoje ślady.

Jestem ciekawy, jak starsi administratorzy Linuksa śledzą, jakie polecenia zostały wprowadzone / zmiany w systemie.

Spuder
źródło

Odpowiedzi:

29

Sprawdź audytd . Jeśli dodasz

-a exit,always -F arch=b64 -S execve
-a exit,always -F arch=b32 -S execve

do /etc/audit/audit.ruleskażdego wykonanego polecenia zostaną zarejestrowane. Zobacz: http://whmcr.com/2011/10/14/auditd-logging-all-commands/

Następnie wyślij go do serwera syslog.

Kamień
źródło
Z pewnością execvenie jest to jedyny system, który musisz zalogować. Dlaczego nie execvptak dobrze? Czy execl? itp.
2rs2ts
W rzeczywistości zauważyłem, że na stronie podręcznika execnapisano, że „ exec() Rodzina funkcji zastępuje bieżący obraz procesu nowym obrazem procesu. Funkcje opisane na tej stronie podręcznika są przeznaczone dla frontonów execve(2)”. Chociaż nie jestem pewien, czy execveatmogę być pewny execrodziny.
2rs2ts
5

Możesz użyć polecenia skryptu . To polecenie nie jest zawarte w POSIX, ale przydatne będzie przechowywanie w pliku wszystkich naciśnięć klawiszy oraz komunikatów wyjściowych i błędów. Możesz później wyświetlić plik. Jeśli wykonujesz ważną pracę i chcesz prowadzić dziennik wszystkich swoich działań, powinieneś wywołać to polecenie natychmiast po zalogowaniu:

$ script
Skrypt uruchomiony, plik ma maszynopis
$ _ Zauważ, że jest to kolejna powłoka - potomek powłoki logowania

Podpowiedź powraca, a wszystkie naciśnięcia klawiszy (w tym ten użyty do cofania), które teraz tu wprowadzasz, są zapisywane w pliku „maszynopisie”. Po zakończeniu nagrywania możesz zakończyć sesję, wprowadzając polecenie exit .
Uwaga: Jeśli wpiszesz nazwę pliku skryptu , sesja zostanie zapisana w nazwie pliku, a nie w maszynie , tzn. Maszynopis jest domyślny, jeśli nie określono konkretnej nazwy pliku.

Możesz teraz użyć nazwy pliku kota lub maszynopisu kota , w zależności od przypadku, aby wyświetlić nagraną sesję.

Jeśli chcesz dołączyć nową sesję do starego pliku, użyj: skrypt -a Dołącza nową sesję do maszynopisu, tutaj również obowiązuje ta sama domyślna reguła

Jest to jeden ze sposobów, w jaki administrator systemu może śledzić sesje. Mam nadzieję, że to było pouczające i przydatne. Twoje zdrowie!

znak
źródło