Ve čtvrtém díle našeho seriálu se budeme věnovat podrobněji na příkazy využívající logy daemona auditd
Auditd a pokročilé nástroje SELinuxu
Tyto nástroje mohou vyřešit i problémy se SELinuxem, které nejsou řešitelné pomocí booleans ani změnou bezpečnostních kontextů příkazem semanage.
Daemon auditd implicitně generuje log /var/log/audit/audit.log a s ním budeme pracovat.
Příkazy audit2allow a audit2why
Audit2why je vlastně alias k příkazu audit2allow s parametrem -w. Příkaz:
# audit2allow -w -a
vám parsuje soubor audit.log a upozorňuje na potřebné akce.
Příkaz audit2allow má ale mnohem širší využití. Příkaz :
# audit2allow -a
vám vypíše pravidla potřebná k eliminaci zamítavých akcí zaznamenaných v souboru audit.log. Příkaz:
# audit2allow -a -M test
vám vytvoří dva soubory: test.te a test.pp. Dále vypíše hlášení o způsobu zavedení modulu do jádra:
# semodule -i test.pp
V souboru test.te najdete v textové podobě realizovaná pravidla. Tento postup ale nemusí vždy vyhovovat. Ne všechny akce, které jsou zanamenány jako zakázané vždy chcete opravdu povolit. Pokud například zprovozňujete spolupráci antiviru ClamAV s poštovním serverem Postfix, nebudete chtít povolovat akce pro DNS server.
Vhodnější je příkazem:
# audit2allow -a -m test > test.te
vytvořit pouze konfigurační soubor test.te. Ten lze otevřít ve vašem oblíbeném editoru a nežádoucí akce odstranit.
Příkazy checkmodule a semodule_package
Poté použijeme příkazu checkmodule zkompilujeme modul:
$ checkmodule -M -m test.te -o test.mod
Následně příkazem semodule_package z modulu připravíme zaveditelný balíček:
$ semodule_package -o test.pp -m test.mod
Přikaz semodule
Příkazem semodule zavedeme balíček do jádra:
# semodule -i test.pp
A přesvědčíme se, že se korektně zavedl:
# semodule -l |grep test
test 1.0
Pokud modul chceme odstranit, provedeme to příkazem:
# semodule -r test
Závěr z praxe
Samozřejmě, po zavedení modulu je nutné prověřit, jestli pomocí něho problém vyřešen. V praxi velice často nebude. Pokud je SELinux v Enforcing módu, zakázáním akcí dojde k chybě a ukončení dříve, než je akce dokončena. Po zavedení modulu již akce částečně projdou, ale zastaví se na dalších bezpečnostních pravidlech. Potom je třeba celý výše uvedený proces několikrát opakovat. S každým opakováním můžete pozorovat, jak množství povolených akcí v konfiguračním souboru přibývá. Opakování může ale být hodně, klidně i více jak deset.
Aktuálně doporučený postup je použít příkaz:
# semodule -BD
Parametr -D zakáže pravidla dontaudit (která při zákazu nejsou zaznamenávána do souboru audit.log) a -B pravidla překompiluje. Nedojde tak k případu, kdy zakázané akce se nelogují. Původní stav je třeba vrátit příkazem:
# semodule -B
To je prozatím vše. Miniseriál končí. Pokud budete mít dotazy, pokusím se na ně odpovědět ve volně navazujících článcích.
Všem, kteří vyrželi až do konce děkuji. Přeji vám všem, ať se na vaše linuxové servery zlí hoši nikdy nedostanou. 🙂
Literatura:
Uživatelský manuál pro SELinux RHEL 6
SELinux na RHEL a CentOS prakticky III.
SELinux na RHEL a CentOS prakticky II.
SELinux na RHEL a CentOS prakticky I.