Manuálová stránka ZONER Antivirus – libzavld
JMÉNO
libzavld – Zoner AntiVirus LD_PRELOAD knihovna
POUŽITÍ
Libzavld je LD_PRELOAD knihovna dodávaná k Zoner AntiVirus démonu (ZAVd), která poskytuje on-access ochranu orientovanou na procesy.
Tuto knihovnu lze připojit k jakémukoli dynamicky linkovanému programu pomocí proměnné prostředí LD_PRELOAD nebo pomocí konfigurace v /etc/ld.so.preload. Knihovna odchytává (hookuje) všechna přímá volání (tedy nikoli volání funckí v dynamicky linkovaných knihoven, které jsou připojeny později) funkcí close() nebo fclose() a byl-li deskriptor souboru otevřen pro zápis do běžného souboru, odešle se k oskenování procesu ZAVd.
Aby se zajistilo, že deskriptor bude čitelný, také všechna volání open(), open64(), creat(), creat64(), fopen(), fopen64(), freopen() a freopen64() jsou odchycena a příznak čtení je vynucen. Toto chování můžete potlačit definováním proměnné prostředí ZAVLD_NOFORCE.
Máte-li problémy s použitím knihovny, můžete zapnout informativní mód (použitelný pouze pro aldění, protože zapisuje na stadardní výstup a standardní chybový výstup) definováním proměnné prostředí ZAVLD_VERBOSE na 1 (vypisuje chyby) nebo 2 (vypisuje informativní hlášení).
Knihovna pouze zasílá deskriptory souborů, které byly po otevření pro zápis uzavřeny. Výběr souborů, které se mají oskenovat podle jména se provádí na straně ZAVd.
ZAVd je kontaktováno pomocí UNIX socketu. Adresa socketu se zjišťuje z konfiguračního souboru. libzavld zkouší výchozí umístění, ale můžete přímo určit konfigurační adresář pomocí proměnné prostředí ZAVD_ETCPATH.
Kromě deskriptoru se posílá i PID, který se loguje a straně ZAVd. Ve výchozím nastavení se posílá PID procesu, který vyvolal uzavření deskriptoru. Někdy je však vhodnější použít PID procesu, který byl spuštěn s proměnnou LD_PRELOAD (např. webové nebo ftp servery, které používají pracovní procesy). Toto chování můžete vynutit pomocí proměnné prostředí ZAVLD_ROOTPID.
PŘÍKLADY
Základní použití:
LD_PRELOAD=/opt/zav/lib/libzavld.so program <args>
Použití bez vynucení přístupu pro čtení (může zabránit oskenování na straně ZAVd):
ZAVLD_NOFORCE=1 LD_PRELOAD=/opt/zav/lib/libzavld.so program <args>
Použití s výpisem chyb:
ZAVLD_DEBUG=1 LD_PRELOAD=/opt/zav/lib/libzavld.so program <args>
INIT SKRIPTY
Chcete-li použít knihovnu libzavld s démony, kteří se startují pomocí initskriptů, musíte, tyto skripty editovat. V případě běžných initskriptů využijte stejnou techniku jako je popsána výše.
start-stop-daemon initskripty je potřeba upravit přidáním parametru –env, např. start-stop-daemon –start –env LD_PRELOAD=/opt/zav/lib/libzavld.so –exec program.
OMEZENÍ
Knihovna se k ZAVd připojuje při inicializaci. Dojde-li k restartu ZAVd, je potřeba se připojit znovu, ale procesy uvnitř chrootu se připojit nemohou. Takové programy je pak potřeba restartovat. V některých případech (např. některá FTP) se chroot používá pouze pro synovské procesy pro jednotlivá spojení, takže k připojení dojde pro následující klienty.
Na straně ZAVd je potřeba mít přístup do adresáře /proc, ale kvůli chybě v jádrech <2.6.22, je tento adresář nepřístupný pro programy, které používají setuid(). Buďto budete muset použít novější jádro nebo nainstalovat ZAVd pod cílovým uživatelem a neměnit nastavení user:group.
ZDROJOVÝ KÓD
Kompletní zdrojový kód knihovny libzavld.so naleznete v adresáři doc/ (/opt/zav/doc/ pro výchozí instalaci). Knihovnu přeložíte příkazem gcc -std=c99 -ldl -fPIC -shared -o libzavld.so zavld.c.