Kto, kiedy i skąd? Dobre praktyki bezpieczeństwa mówią, że powinieneś wiedzieć, kto uzyskuje dostęp do twojego komputera z Linuksem. Pokażemy Ci, jak to zrobić.
Plik wtmp
Linux i inne systemy operacyjne typu Unix, takie jak MacOS, są bardzo dobre w rejestrowaniu. Gdzieś w trzewiach systemu znajduje się dziennik zawierający prawie wszystko, o czym możesz pomyśleć. Plik dziennika, który nas interesuje, nazywa się wtmp. „W” może oznaczać „kiedy” lub „kto” – nikt się z tym nie zgadza. Część „tmp” prawdopodobnie oznacza „tymczasowy”, ale może też oznaczać „znacznik czasu”.
Wiemy, że wtmp to dziennik, który przechwytuje i rejestruje każde zdarzenie logowania i wylogowania. Przeglądanie danych w dzienniku wtmp jest podstawowym krokiem w podejmowaniu bezpiecznych podejść do obowiązków administratora systemu. W przypadku typowego komputera rodzinnego może to nie być tak krytyczne z punktu widzenia bezpieczeństwa, ale warto przejrzeć wspólne wykorzystanie komputera.
W przeciwieństwie do wielu tekstowych plików dziennika w systemie Linux wtmp jest plikiem binarnym. Aby uzyskać dostęp do zawartych w nim danych, musimy użyć narzędzia zaprojektowanego do tego zadania.
To narzędzie jest ostatnim poleceniem.
Ostatnia komenda
Ostatnie polecenie odczytuje dane z dziennika wtmp i wyświetla je w oknie terminala.
Jeśli wpiszesz ostatni i naciśniesz Enter wyświetlić wszystkie rekordy z pliku dziennika.
last
Każdy rekord z wtmp jest wyświetlany w oknie terminala.
Od lewej do prawej każdy wiersz zawiera:
Nazwa użytkownika zalogowanej osoby.
Terminal, do którego byli zalogowani. Wpis terminala: 0 oznacza, że byli zalogowani na samym komputerze z systemem Linux.
Adres IP komputera, na którym byli zalogowani.
Data i godzina logowania.
Czas trwania sesji.
Ostatnia linia podaje nam datę i godzinę najwcześniejszej zarejestrowanej sesji w dzienniku.
Wpis logowania do „ponownego uruchomienia” fikcyjnego użytkownika jest wprowadzany do dziennika przy każdym uruchomieniu komputera. Pole terminala zostanie zastąpione wersją jądra. Czas trwania sesji zalogowania dla tych wpisów reprezentuje czas działania komputera.
Wyświetlanie określonej liczby wierszy
Użycie ostatniego polecenia samodzielnie tworzy zrzut całego dziennika, przy czym większość z niego przeskakuje przez okno terminala. Część, która pozostaje widoczna, to najwcześniejsze dane w dzienniku. To prawdopodobnie nie to, co chciałeś zobaczyć.
Możesz powiedzieć ostatniemu, aby uzyskać określoną liczbę wierszy wyniku. Zrób to, podając liczbę linii, które chcesz w wierszu poleceń. Zwróć uwagę na myślnik. Aby zobaczyć pięć linii, musisz wpisać -5, a nie 5:
last -5
Daje to pierwsze pięć wierszy z dziennika, czyli najnowsze dane.
Wyświetlanie nazw sieci dla użytkowników zdalnych
Opcja -d (Domain Name System) informuje ostatnią, że należy spróbować przekształcić adresy IP użytkowników zdalnych w nazwę komputera lub sieci.
last -d
Ostateczna konwersja adresu IP na nazwę sieci nie zawsze jest możliwa, ale polecenie zrobi to, gdy będzie to możliwe.
Ukrywanie adresów IP i nazw sieciowych
Jeśli nie interesuje Cię adres IP lub nazwa sieci, użyj opcji -R (brak nazwy hosta), aby pominąć to pole.
Ponieważ daje to ładniejszy wynik bez brzydkich zawijania, ta opcja została użyta we wszystkich poniższych przykładach. Gdybyś używał ostatniego do próby zidentyfikowania nietypowej lub podejrzanej aktywności, nie pomijałbyś tego pola.
Wybieranie rekordów według daty
Możesz użyć opcji -s (od), aby ograniczyć dane wyjściowe do wyświetlania tylko zdarzeń logowania, które miały miejsce od określonej daty.
Jeśli chcesz zobaczyć tylko zdarzenia logowania, które miały miejsce od 26 maja 2019 r., Użyj następującego polecenia:
last -R -s 2019-05-26
Dane wyjściowe zawierają rekordy ze zdarzeniami logowania, które miały miejsce od godziny 00:00 określonego dnia do najnowszych rekordów w pliku dziennika.
Wyszukiwanie do daty zakończenia
Możesz użyć opcji -t (do), aby określić datę zakończenia. Pozwala to na wybranie zestawu rekordów logowania, które miały miejsce między dwoma interesującymi nas datami.
To polecenie żąda od ostatniego pobrania i wyświetlenia zapisów logowania od 00:00 (świt) 26 dnia do godziny 00:00 (świt) 27 dnia. To zawęża listę do sesji logowania, które miały miejsce tylko 26 dnia.
Formaty czasu i daty
Możesz używać zarówno dat, jak i godzin z opcjami -s i -t.
Różne formaty czasu, których można używać z ostatnimi opcjami używającymi dat i godzin, to (rzekomo):
RRRRMMDDhhmmss
RRRR-MM-DD gg: mm: ss
RRRR-MM-DD hh: mm – sekundy są ustawione na 00
RRRR-MM-DD – czas ustawiony na 00:00:00
gg: mm: ss – data jest ustawiona na dzisiaj
hh: mm – data zostanie ustawiona na dzisiaj, sekundy na 00
teraz
wczoraj – czas jest ustawiony na 00:00:00
dzisiaj – godzina jest ustawiona na 00:00:00
jutro – godzina jest ustawiona na 00:00:00
+ 5min
-5 dni
Dlaczego „rzekomo”?
Drugi i trzeci format na liście nie działały podczas badania do tego artykułu. Te polecenia zostały przetestowane w dystrybucjach Ubuntu, Fedora i Manjaro. Są to odpowiednio pochodne dystrybucji Debian, RedHat i Arch. To obejmuje wszystkie główne rodziny dystrybucji Linuksa.
last -R -s 2019-05-26 11:00 -t 2019-05-27 13:00
Jak widać, polecenie nie zwróciło żadnych rekordów.
Użycie pierwszego formatu daty i godziny z listy z tą samą datą i godziną co poprzednie polecenie powoduje zwrócenie rekordów:
last -R -s 20190526110000 -t 20190527130000
Wyszukiwanie według jednostek względnych
Możesz również określić okresy, które są mierzone w minutach lub dniach w stosunku do bieżącej daty i godziny. Tutaj prosimy o nagrania sprzed dwóch dni aż do jednego dnia.
last -R -s -2days -t -1days
Wczoraj, dziś i teraz
Możesz użyć wczoraj i jutro jako skrótu dla wczorajszej i dzisiejszej daty.
last -R -s yesterday -t today
Nie, żeby to nie obejmowało żadnych zapisów na dziś. To jest oczekiwane zachowanie. Polecenie prosi o rekordy od daty rozpoczęcia do daty zakończenia. Nie obejmuje rekordów z daty zakończenia.
Opcja „teraz” to skrót od „dzisiaj, w chwili obecnej”. Aby zobaczyć zdarzenia logowania, które miały miejsce od 00:00 (świtu) do czasu wydania polecenia, użyj tego polecenia:
last -R -s today -t now
Spowoduje to wyświetlenie wszystkich zdarzeń logowania do chwili obecnej, w tym tych, które są nadal zalogowane.
Obecna opcja
Opcja -p (obecna) umożliwia sprawdzenie, kto był zalogowany w danym momencie.
Nie ma znaczenia, kiedy się zalogowali lub wylogowali, ale jeśli byli zalogowani na komputerze w określonym przez Ciebie czasie, zostaną uwzględnieni na liście.
Jeśli określisz czas bez daty ostatniej, zakładasz, że masz na myśli „dzisiaj”.
last -R -p 09:30
Osoby, które są nadal zalogowane (oczywiście), nie mają czasu na wylogowanie; są opisywane jako nadal zalogowane. Jeśli komputer nie został ponownie uruchomiony od określonego czasu, będzie wyświetlany jako nadal uruchomiony.
Jeśli użyjesz skrótu now z opcją -p (obecny), możesz dowiedzieć się, kto jest zalogowany w momencie, gdy wydajesz polecenie.
last -R -p now
To dość skomplikowany sposób na osiągnięcie tego, co można osiągnąć za pomocą polecenia who.
Polecenie lastb
Polecenie lastb zasługuje na wzmiankę. Odczytuje dane z dziennika o nazwie btmp. Istnieje nieco większa zgoda co do tej nazwy dziennika. „B” oznacza zły, ale część „tmp” jest nadal przedmiotem dyskusji.
lastb wyświetla złe (nieudane) próby logowania. Akceptuje te same opcje, co ostatnia. Ponieważ były to nieudane próby logowania, wszystkie wpisy będą miały czas trwania 00:00.
Musisz użyć sudo z lastb.
sudo lastb -R
Ostatnie słowo w tej sprawie
Wiedza o tym, kto zalogował się do komputera z systemem Linux oraz kiedy i skąd jest przydatna. Połączenie tego ze szczegółami nieudanych prób logowania zapewnia pierwsze kroki w badaniu podejrzanego zachowania.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.