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ý?
- Nevyžaduje žádné externí programy nebo procesy ke spuštění v systému, takže je soběstačný.
- Je vysoce konfigurovatelný, a proto vám umožňuje zobrazit jakékoli operace systému, které chcete.
- Pomáhá při odhalování nebo analýze potenciálních kompromisů systému.
- Je schopen pracovat jako nezávislý detekční systém.
- Může spolupracovat se systémy detekce narušení a umožnit detekci narušení.
- 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.