Vyhledávání na webu

Naučte se auditování systému Linux pomocí nástroje Auditd na CentOS/RHEL


Systémový audit jednoduše odkazuje na hloubkovou analýzu konkrétního cíleného systému: audit se skládá z prověřování různých částí, které tento systém tvoří, s kritickým hodnocením (a v případě potřeby testováním) v různých oblastech zájmu.

Přečtěte si také: Lynis – nástroj pro auditování a skenování zabezpečení pro systémy Linux

Jeden z kritických subsystémů RHEL/CentOS v systému Linux auditu běžně známý jako auditd. Implementuje prostředky pro sledování informací souvisejících se zabezpečením v systému: používá předem nakonfigurovaná pravidla ke shromažďování obrovského množství informací o událostech, které se dějí v systému, a zaznamenává je do souboru protokolu, čímž vytváří auditní zkoušku.

Může zaznamenávat informace, jako je datum a čas, typ a výsledek události; uživatelé, kteří událost způsobili, jakékoli změny provedené v souborech/databázích; použití mechanismů systémové autentizace, jako je PAM, LDAP, SSH a další.

Auditd také registruje veškeré změny provedené v konfiguračních souborech auditu nebo jakékoli pokusy o přístup k souborům protokolu auditu a veškeré snahy o import nebo export informací do nebo ze systému a mnoho dalších informací souvisejících se zabezpečením.

Proč je systém auditu Linux důležitý?

  1. Nevyžaduje žádné externí programy nebo procesy ke spuštění v systému, takže je soběstačný.
  2. Je vysoce konfigurovatelný, a proto vám umožňuje zobrazit jakékoli operace systému, které chcete.
  3. Pomáhá při odhalování nebo analýze potenciálních kompromisů systému.
  4. Je schopen pracovat jako nezávislý detekční systém.
  5. Může spolupracovat se systémy detekce narušení a umožnit detekci narušení.
  6. Je to zásadní nástroj pro auditování forenzních vyšetřování.

Komponenty systému auditu Linux

Auditní systém má dvě základní složky, a to:

  • aplikace a nástroje/nástroje v uživatelském prostoru a
  • Zpracování systémových volání na straně jádra – přijímá systémová volání z aplikací v uživatelském prostoru a prochází je třemi typy filtrů, konkrétně: uživatel, úloha, konec< nebo vyloučit.

Nejdůležitější částí je démon auditu user-space (auditd), který shromažďuje informace na základě předem nakonfigurovaných pravidel z jádra a generuje záznamy v souboru protokolu: výchozí protokol je /var/log/audit/audit.log.

Navíc audispd (audit dispatcher daemon) je multiplexor událostí, který spolupracuje s auditd a odesílá události do jiných programů, které chtějí provádět v reálném čase zpracování událostí.

Existuje řada nástrojů v uživatelském prostoru pro správu a získávání informací z auditního systému:

  • auditctl – nástroj pro ovládání auditního systému jádra.
  • ausearch – nástroj pro vyhledávání souborů protokolu auditu pro konkrétní události.
  • aureport – utilita pro vytváření zpráv o zaznamenaných událostech.

Jak nainstalovat a nakonfigurovat Audit Tool v RHEL/CentOS/Fedora

Nejprve se ujistěte, že je auditní nástroj nainstalován ve vašem systému pomocí příkazu rpm a obslužného programu grep následovně:

rpm -qa | grep audit

Pokud nemáte nainstalované výše uvedené balíčky, spusťte tento příkaz jako uživatel root a nainstalujte je.

yum install audit

Dále zkontrolujte, zda je auditd povolen a spuštěn, zadejte na terminálu níže uvedené příkazy systemctl.

--------------- On CentOS/RHEL 7 --------------- 
systemctl is-enabled auditd
systemctl status auditd
systemctl start auditd   [Start]
systemctl enable auditd  [Enable]

--------------- On CentOS/RHEL 6 --------------- 
service auditd status
service auditd start     [Start]
chkconfig auditd on      [Enable]

Nyní uvidíme, jak nakonfigurovat auditd pomocí hlavního konfiguračního souboru /etc/audit/auditd.conf. Parametry zde umožňují řídit, jak služba běží, jako je definování umístění souboru protokolu, maximálního počtu souborů protokolu, formátu protokolu, jak se vypořádat s plnými disky, rotace protokolů a mnoho dalších možností.

vi /etc/audit/auditd.conf

Z níže uvedeného ukázkového výstupu jsou parametry samozřejmé.

Pochopení pravidel auditu

Jak jsme již zmínili dříve, auditd používá pravidla ke shromažďování konkrétních informací z jádra. Tato pravidla jsou v podstatě možnosti auditctl (viz manuálová stránka), které můžete předem nakonfigurovat v souboru /etc/audit/rules.d/audit.rules (v systému CentOS 6, použijte soubor /etc/audit/audit.rules), aby byly načteny při spuštění.

Existují tři druhy pravidel auditu, která můžete definovat:

  • Kontrolní pravidla – umožňují modifikovat chování auditního systému a několik jeho konfigurací.
  • Pravidla systému souborů (také označovaná jako sledování souborů) – umožňují auditování přístupu k určitému souboru nebo adresáři.
  • Pravidla systémových volání – umožňuje protokolování systémových volání uskutečněných libovolným programem.

Nyní otevřete hlavní konfigurační soubor pro úpravy:

vi /etc/audit/rules.d/audit.rules

Pamatujte, že první část tohoto souboru musí obsahovat pravidla kontroly. Poté přidejte svá pravidla auditu (sledování souborů a pravidla systémových volání) do prostřední části a nakonec poslední část obsahuje nastavení neměnnosti, což jsou také kontrolní pravidla.

Příklady pravidel auditované kontroly

-D		#removes all previous rules
-b  3074	#define buffer size
-f 4		#panic on failure 
-r 120		#create at most 120 audit messages per second

Příklady pravidel auditovaného souborového systému

Sledování souborů můžete definovat pomocí této syntaxe:

-w /path/to/file/or/directory -p permissions -k key_name

Kde je možnost:

  • w – používá se k určení souboru nebo adresáře, který se má sledovat.
  • p – oprávnění k protokolování, r – přístup pro čtení, w – přístup pro zápis, x – pro spustit přístup a a – pro změnu atributu souboru nebo adresáře.
  • -k – umožňuje nastavit volitelný řetězec pro identifikaci, které pravidlo (nebo sada pravidel) vytvořilo konkrétní položku protokolu.

Tato pravidla umožňují auditu sledovat události, které mění tyto důležité systémové soubory.

-w /etc/passwd -p wa -k passwd_changes
-w /etc/group -p wa -k group_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes

Příklady pravidel auditovaného systémového volání

Pravidlo systémového volání můžete nastavit pomocí formuláře níže:

-a action,filter -S system_call -F field=value -k key_name

kde:

  • action – má dvě možné hodnoty: vždy nebo nikdy.
  • filtr – určuje, že se na událost použije filtr shody pravidel jádra (úloha, ukončení, uživatel a vyloučení).
  • systémové volání – název systémového volání.
  • pole – určuje další možnosti, jako je architektura, PID, GID atd. pro úpravu pravidla.

Zde jsou některá pravidla, která můžete definovat.

-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
-a always,exit -S sethostname -S setdomainname -k system_locale

Nakonec přidejte nastavení neměnnosti na konec souboru, například:

-e 1	#enable auditing
-e 2	#make the configuration immutable -- reboot is required to change audit rules
Vzorový konfigurační soubor auditovaných pravidel

Jak nastavit auditovaná pravidla pomocí auditctl Utility

Případně odešlete možnosti do auditd, když je spuštěn, pomocí auditctl jako v následujících příkladech. Tyto příkazy mohou přepsat pravidla v konfiguračním souboru.

Chcete-li zobrazit všechna aktuálně načtená pravidla auditu, předejte příznak -l:

auditctl -l

Dále zkuste přidat několik pravidel:

auditctl -w /etc/passwd -p wa -k passwd_changes
auditctl -w /etc/group -p wa -k group_changes
auditctl -w /etc/sudoers -p wa -k sudoers_changes
auditctl -l

Pochopení auditovaných souborů protokolu

Všechny auditní zprávy se ve výchozím nastavení zaznamenávají do souboru /var/log/audit/audit.log. Abychom porozuměli formátu záznamu protokolu, načteme pravidlo a zkontrolujeme záznam protokolu vygenerovaný po události odpovídající pravidlu.

Za předpokladu, že máme tajný adresář záloh, toto pravidlo auditu zaznamená všechny pokusy o přístup nebo úpravu tohoto adresáře:

auditctl -w /backups/secret_files/ -p rwa -k secret_backup

Nyní se pomocí jiného systémového účtu zkuste přesunout do výše uvedeného adresáře a spusťte příkaz ls:

cd /backups/secret_files/
ls

Záznam protokolu bude vypadat takto.

Výše uvedená událost se skládá ze tří typů auditních záznamů. První je type=SYSCALL:

type=SYSCALL msg=audit(1505784331.849:444): arch=c000003e syscall=257 success=yes exit=3 a0=ffffffffffffff9c a1=8ad5c0 a2=90800 a3=0 items=1 ppid=2191 pid=2680 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts1 ses=3 comm="ls" exe="/usr/bin/ls" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="secret_backup"

Druhý je type=CWD.

type=CWD msg=audit(1505784331.849:444):  cwd="/backups/secret_files"

A poslední je type=PATH:

type=PATH msg=audit(1505784331.849:444): item=0 name="." inode=261635 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:default_t:s0 objtype=NORMAL

Kompletní seznam všech polí událostí (jako je msg, arch, ses atd..) a jejich význam naleznete v Referenční příručce systému auditu.

To je prozatím vše. V příštím článku se podíváme na to, jak používat ausearch k dotazování na soubory protokolu auditu: vysvětlíme si, jak hledat konkrétní informace z protokolů auditu. Pokud máte nějaké dotazy, kontaktujte nás prostřednictvím sekce komentářů níže.