Jak používat poslední příkaz v systému Linux

Photo of author

By etechblogcz

Kdo, kdy a odkud? Bezpečnostní principy doporučují znát, kdo měl přístup k vašemu linuxovému systému. Ukážeme si, jak toho dosáhnout.

Protokol wtmp

Operační systémy Linux a podobné Unixové systémy, například MacOS, jsou známé svým detailním protokolováním. Hluboko uvnitř systému se skrývají záznamy téměř o všem. Zajímat nás bude konkrétně soubor protokolu s názvem wtmp. Písmeno „w“ by mohlo znamenat „kdy“ nebo „kdo“, názory se různí. Část „tmp“ s největší pravděpodobností znamená „dočasné“, ale může odkazovat i na „časové razítko“.

Záznamy v wtmp zachycují každou událost přihlášení a odhlášení. Kontrola těchto dat je důležitá pro správce systému z hlediska bezpečnosti. U běžného domácího počítače to nemusí být bezpečnostně kritické, ale je užitečné sledovat, jakým způsobem se počítač používá.

Wtmp je na rozdíl od mnoha textových protokolů v Linuxu binární soubor. Pro přístup k datům v něm je nutné použít specializovaný nástroj.

Tímto nástrojem je příkaz `last`.

Příkaz `last`

Příkaz `last` extrahuje data z protokolu wtmp a zobrazí je v terminálu.

Pokud zadáte `last` a stisknete Enter, zobrazí se všechny položky z logu.

last

Každá položka z wtmp se objeví v terminálovém okně.

Zleva doprava každý řádek obsahuje:

Jméno uživatele, který se přihlásil.
Terminál, ke kterému byl připojen. Záznam :0 znamená, že se přihlásil přímo u linuxového počítače.
IP adresa počítače, ze kterého byl připojen.
Časové razítko přihlášení.
Délka trvání relace.

Poslední řádek obsahuje datum a čas první zaznamenané relace v protokolu.

Při každém startu počítače se do protokolu přidá záznam o přihlášení fiktivního uživatele „reboot“. V poli terminálu je uvedena verze jádra. Doba trvání relace zde reprezentuje dobu, po kterou byl počítač v provozu.

Zobrazení určitého počtu řádků

Samotný příkaz `last` zobrazí celý protokol, z něhož většinu okamžitě prolistujeme. Vidět tak zůstanou nejstarší data, což nejspíš není to, co jste chtěli.

Můžete příkazu `last` určit, kolik řádků výstupu chcete. Uděláte to zadáním čísla na příkazovém řádku. Důležitá je pomlčka. Pro zobrazení pěti řádků použijte `-5`, nikoli `5`:

last -5

Zobrazí se prvních pět řádků protokolu, tedy nejnovější záznamy.

Zobrazení síťových názvů pro vzdálené uživatele

Volba `-d` (Domain Name System) říká příkazu `last`, aby se pokusil přeložit IP adresy vzdálených uživatelů na jména počítačů nebo sítě.

last -d

Překlad IP adresy na síťový název není vždy možný, ale příkaz to udělá, pokud je to proveditelné.

Skrytí IP adres a síťových názvů

Pokud vás IP adresy ani síťové názvy nezajímají, můžete je potlačit pomocí volby `-R` (bez hostitelského názvu).

Tato volba se používá v následujících příkladech, protože zjednodušuje výstup a zabraňuje ošklivému zalomení řádků. V případě, že chcete identifikovat podezřelou aktivitu, byste tuto volbu ale neměli používat.

Výběr záznamů podle data

Volbou `-s` (od) můžete omezit výstup tak, aby zobrazoval jen události přihlášení, které proběhly od zadaného data.

Chcete-li zobrazit události přihlášení od 26. května 2019, použijete následující příkaz:

last -R -s 2019-05-26

Výstup obsahuje záznamy o přihlášení od půlnoci zadaného dne až po nejnovější záznamy v logu.

Hledání do data ukončení

Pro nastavení koncového data můžete použít volbu `-t` (do). Zobrazí tak přihlašovací záznamy mezi dvěma zvolenými daty.

Tento příkaz zobrazí záznamy od půlnoci 26. do půlnoci 27. Tím se seznam omezí jen na relace přihlášené 26.

Formáty času a data

S volbami `-s` a `-t` můžete používat data i časy.

Možné formáty data a času pro `last` (údajně) jsou:

YYYYMMDDhhmmss
YYYY-MM-DD hh:mm:ss
YYYY-MM-DD hh:mm – sekundy se nastaví na 00
YYYY-MM-DD – čas se nastaví na 00:00:00
hh:mm:ss – datum se nastaví na dnešek
hh:mm – datum se nastaví na dnešek, sekundy na 00
Nyní
včera – čas se nastaví na 00:00:00
dnes – čas se nastaví na 00:00:00
zítra – čas se nastaví na 00:00:00
+ 5 min
-5 dní

Proč „údajně“?

Během výzkumu se druhý a třetí formát v seznamu neosvědčil. Příkazy byly testovány na distribucích Ubuntu, Fedora a Manjaro, které jsou založeny na Debainu, RedHatu a Archu, tedy na všech hlavních rodinách distribucí Linuxu.

last -R -s 2019-05-26 11:00 -t 2019-05-27 13:00

Jak vidíte, příkaz nevrátil žádné záznamy.

Použitím prvního formátu datumu a času se stejnými hodnotami se záznamy zobrazí:

last -R -s 20190526110000 -t 20190527130000

Vyhledávání podle relativních jednotek

Časové úseky můžete zadat i v minutách nebo dnech vzhledem k aktuálnímu datu a času. Zde požadujeme záznamy od dvou dnů zpět do jednoho dne zpět.

last -R -s -2days -t -1days

Včera, dnes a teď

Jako zkratku pro včerejší a dnešní datum lze použít slova `yesterday` a `today`.

last -R -s yesterday -t today

To, že se nezobrazí žádné dnešní záznamy je očekávané chování. Příkaz požaduje záznamy od počátečního data do koncového, nezahrnuje tedy záznamy z koncového data.

Volba `now` je zkratkou pro „dnes v aktuálním čase“. Pro zobrazení přihlášení, která proběhla od půlnoci do zadání příkazu použijte:

last -R -s today -t now

Zobrazí se všechna přihlášení do současné doby, včetně těch, která jsou stále aktivní.

Volba současnosti

Volba `-p` (současnost) vám umožňuje zjistit, kdo byl přihlášen v určitý okamžik.

Nezáleží na tom, kdy se přihlásili nebo odhlásili, ale pokud byli v zadaném okamžiku přihlášeni, objeví se ve výpisu.

Pokud zadáte čas bez data, bude se předpokládat „dnes“.

last -R -p 09:30

Lidé, kteří jsou stále přihlášeni, samozřejmě nemají uvedený čas odhlášení a jsou označeni jako „stále přihlášeni“. Pokud od zadaného okamžiku nebyl počítač restartován, bude označen jako „stále v chodu“.

Pokud použijete `now` s volbou `-p`, zjistíte, kdo je přihlášen v okamžiku zadání příkazu.

last -R -p now

Je to poněkud složitý způsob, jak zjistit to, co umí příkaz `who`.

Příkaz `lastb`

Příkaz `lastb` si zaslouží zmínku. Zpracovává data z protokolu s názvem btmp. U názvu tohoto logu existuje větší shoda. Písmeno „b“ značí špatné (bad), ale význam „tmp“ je stále diskutabilní.

`lastb` vypisuje špatné (neúspěšné) pokusy o přihlášení. Používá stejné volby jako `last`. Protože se jednalo o neúspěšné pokusy, všechny záznamy budou mít délku trvání 00:00.

Příkaz `lastb` vyžaduje oprávnění sudo.

sudo lastb -R

Závěrem

Mít přehled o tom, kdo, kdy a odkud se přihlásil k vašemu linuxovému počítači, je velmi užitečné. V kombinaci se záznamy o neúspěšných pokusech o přihlášení je to první krok při vyšetřování podezřelé aktivity.