GNU/Linux >> Znalost Linux >  >> Linux

Jak číst protokol auditu v Linuxu

V tomto příspěvku uvidíme, jak číst protokoly auditu a co jednotlivé řádky a pole znamenají.

Například soubor audit.log zaznamenal 4 řádky takto:

type=SYSCALL msg=audit(1640033159.053:177988798): arch=c000003e syscall=2 success=no exit=-13 a0=7ffc736c18a0 a1=0 a2=1b6 a3=24 items=1 ppid=130071 pid=130082 auid=1001 uid=1001 gid=1002 euid=1001 suid=1001 fsuid=1001 egid=1002 sgid=1002 fsgid=1002 tty=(none) ses=318813 comm="pidstat" exe="/usr/bin/pidstat" key="access"
type=PROCTITLE msg=audit(1640033159.053:177988797): proctitle=70696473746174002D727564002D6800310033
type=CWD msg=audit(1640033159.053:177988798): cwd="/u01/app/oracle/oracle.ahf/data/repository/suptools/rac01/oswbb/oracle/oswbb"
type=PATH msg=audit(1640033159.053:177988798): item=0 name="/proc/674/io" inode=12022 dev=00:04 mode=0100400 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL

Výše uvedená událost se skládá ze čtyř záznamů, které sdílejí stejné časové razítko a sériové číslo ( 1640033159.053:177988797 ). Záznamy vždy začínají type= klíčové slovo. Každý záznam se skládá z několika párů jméno=hodnota oddělených mezerou nebo čárkou. Následuje podrobná analýza výše uvedené události:

První záznam

type=SYSCALL

Pole typ obsahuje typ záznamu. V tomto příkladu hodnota SYSCALL udává, že tento záznam byl spuštěn systémovým voláním jádra. Seznam všech možných hodnot typů a jejich vysvětlení naleznete v části Typy záznamů auditu.

msg=audit(1640033159.053:177988798)

Pole msg zaznamenává:časové razítko a jedinečné ID záznamu ve tvaru audit(time_stamp:ID). Více záznamů může sdílet stejné časové razítko a ID, pokud byly vygenerovány jako součást stejné auditní události. Časové razítko používá formát času Unix – sekundy od 00:00:00 UTC 1. ledna 1970. různé páry jméno=hodnota specifické pro událost poskytované aplikací jádra nebo uživatelského prostoru.

arch=c000003e

Pole oblouku obsahuje informace o architektuře CPU systému. Hodnota c000003e je zakódována v šestnáctkové soustavě. Při prohledávání záznamů auditu pomocí příkazu ausearch použijte volbu -i nebo –interpret k automatickému převodu hexadecimálních hodnot na jejich ekvivalenty čitelné pro člověka. Hodnota c000003e je interpretována jako x86_64.

syscall=2

Pole syscall zaznamenává typ systémového volání, které bylo odesláno do jádra. Hodnotu 2 lze porovnat s ekvivalentem čitelným pro člověka v souboru /usr/include/asm/unistd_64.h. V tomto případě je 2 otevřené systémové volání. Všimněte si, že obslužný program ausyscall vám umožňuje převést systémová telefonní čísla na jejich ekvivalenty čitelné pro člověka. Pomocí příkazu ausyscall –dump zobrazíte seznam všech systémových volání spolu s jejich čísly. Více informací naleznete na manuálové stránce ausyscall(8).

úspěch=ne

Pole úspěchu zaznamenává, zda bylo systémové volání zaznamenané v této konkrétní události úspěšné nebo neúspěšné. V tomto případě se volání nezdařilo.

exit=-13

Výstupní pole obsahuje hodnotu, která určuje kód ukončení vrácený systémovým voláním. Tato hodnota se u různých systémových volání liší. Hodnotu můžete interpretovat jako ekvivalent čitelný pro člověka pomocí následujícího příkazu:

a0=7ffc736c18a0 a1=0 a2=1b6 a3=24

Pole a0 až a3 zaznamenávají první čtyři argumenty zakódované v hexadecimálním zápisu systémového volání v této události. Tyto argumenty závisí na použitém systémovém volání; mohou být interpretovány nástrojem ausearch.

položky=1

Pole položek obsahuje počet pomocných záznamů PATH, které následují za záznamem syscall.

ppid=130071 pid=130082

Pole ppid/pid zaznamenává ID nadřazeného procesu a ID procesu.

auid=1001 uid=1001 gid=1002 euid=1001 suid=1001 fsuid=1001 egid=1002 sgid=1002 fsgid=1002

Pole auid zaznamenává ID uživatele auditu, ID uživatele, ID skupiny, ID efektivního uživatele, ID uživatele, ID uživatele souborového systému, ID efektivní skupiny, ID skupiny, ID skupiny souborového systému.

tty=(žádné) ses=318813

Pole tty a session zaznamenává terminál, ze kterého byl vyvolán analyzovaný proces.

comm=”pidstat”

Pole comm zaznamenává název příkazu příkazového řádku, který byl použit k vyvolání analyzovaného procesu. V tomto případě byl ke spuštění této auditní události použit příkaz cat.

exe=”/usr/bin/pidstat”

Pole exe zaznamenává cestu ke spustitelnému souboru, který byl použit k vyvolání analyzovaného procesu.

key=”access”

Pole klíče zaznamenává řetězec definovaný správcem přidružený k pravidlu, které vygenerovalo tuto událost, do protokolu auditu.

Druhý záznam

type=PROCTITLE

Pole typ obsahuje typ záznamu. V tomto příkladu hodnota PROCTITLE určuje, že tento záznam poskytuje úplný příkazový řádek, který spustil tuto událost auditu, spuštěnou systémovým voláním jádra.

proctitle=70696473746174002D727564002D6800310033

Pole proctitle zaznamenává celý příkazový řádek příkazu, který byl použit k vyvolání analyzovaného procesu. Pole je zakódováno v hexadecimálním zápisu, aby uživatel nemohl ovlivnit analyzátor protokolu auditu. Text se dekóduje na příkaz, který spustil tuto událost auditu. Při prohledávání záznamů auditu pomocí příkazu ausearch použijte volbu -i nebo –interpret k automatickému převodu hexadecimálních hodnot na jejich lidsky čitelné ekvivalenty.

Třetí záznam

type=CWD

Ve druhém záznamu je hodnota pole typu CWD — aktuální pracovní adresář. Tento typ se používá k záznamu pracovního adresáře, ze kterého byl proveden proces, který vyvolal systémové volání uvedené v prvním záznamu. Účelem tohoto záznamu je zaznamenat polohu aktuálního procesu pro případ, že by se relativní cesta zachytila ​​v souvisejícím záznamu PATH. Tímto způsobem lze rekonstruovat absolutní cestu.

msg=audit(1640033159.053:177988798)

Pole msg obsahuje stejné časové razítko a hodnotu ID jako hodnota v prvním záznamu. Časové razítko používá formát času Unix – sekundy od 00:00:00 UTC dne 1. ledna 1970.

cwd=”/u01/app/oracle/oracle.ahf/data/repository/suptools/rac01/oswbb/oracle/oswbb”

Pole cwd obsahuje cestu k adresáři, ve kterém bylo vyvoláno systémové volání.

Čtvrtý záznam

type=PATH

V tomto záznamu je hodnota pole typu PATH. Událost Audit obsahuje záznam typu PATH pro každou cestu, která je předána systémovému volání jako argument.

msg=audit(1640033159.053:177988798)

Pole msg obsahuje stejné časové razítko a hodnotu ID jako hodnota v prvním a druhém záznamu.

položka=0

Pole položky udává, která položka z celkového počtu položek odkazovaných v záznamu typu SYSCALL je aktuální záznam. Toto číslo je založeno na nule; hodnota 0 znamená, že jde o první položku.

name=”/proc/674/io”

Pole názvu zaznamenává cestu k souboru nebo adresáři, který byl předán systémovému volání jako argument. V tomto případě to byl soubor /proc/674/io.

inode=12022

Pole inode obsahuje číslo inodu spojené se souborem nebo adresářem zaznamenaným v této události. Následující příkaz zobrazí soubor nebo adresář, který je přidružen k číslu inodu 409248:

dev=00:04

Pole dev specifikuje vedlejší a hlavní ID zařízení, které obsahuje soubor nebo adresář zaznamenaný v této události.

režim=0100400

Pole mode zaznamenává oprávnění k souboru nebo adresáři, zakódovaná v číselném zápisu, jak je vrácen příkazem stat v poli st_mode. Více informací naleznete na manuálové stránce stat(2). V tomto případě lze 0100600 interpretovat jako -r——–, což znamená, že pouze uživatel root má oprávnění ke čtení pro /proc/674/io.

ouid=0

Pole ouid zaznamenává ID uživatele vlastníka objektu.

ogid=0

Pole ogid zaznamenává ID skupiny vlastníka objektu.

rdev=00:00

Pole rdev obsahuje zaznamenaný identifikátor zařízení pouze pro speciální soubory. V tomto případě se nepoužije, protože nahraný soubor je běžný soubor.

nametype=NORMAL

Pole objtype zaznamenává záměr operace každého záznamu cesty v kontextu daného syscall.


Linux
  1. Jak změnit cestu k souboru protokolu auditu /var/log/audit/audit.log

  2. Jak auditovat přístup k souborům v systému Linux

  3. Jak číst manuálové stránky Linuxu?

  1. Jak spravovat soubory protokolu pomocí Logrotate v Linuxu

  2. Jak číst odezvu websocket v linuxovém shellu

  3. Jak vytisknout výstup příkazu Linuxu do souboru?

  1. Jak zapisovat soubory protokolu do RAM pomocí Log2ram v Linuxu

  2. Linux – spouštění versus čtení bit. Jak fungují adresářová oprávnění v Linuxu?

  3. Jak vyprázdnit soubor protokolu v Linuxu