Viry na Linuxu?
Diskuze o tom, zda na Linuxu existují viry a ostatní malware a zda představují reálné nebezpečí, se vyskytují poměrně často. Faktem je, že nějaké viry pro Linux tu máme. Ale hlavně: Linux se často používá pro poštovní, souborové a další servery, sloužící uživatelům Windows. Proto se v Linuxu můžeme se škodlivým softwarem setkat poměrně často, byť systému samotnému nebezpečí nehrozí.
Ze stejného důvodu mají na Linuxu svůj smysl i antivirové programy. Většina jejich tvůrců poskytuje nějakou linuxovou verzi svého produktu, i když třeba ne v celé škále funkcí. Jedním z takových programů je ClamAV - pravděpodobně jediný aktivně vyvíjený a dlouhodobě udržovaný svobodný antivirový program. Podívejme se na něj blíže, jeho autoři totiž na svých webových stránkách slibují věci patřící téměř do říše snů.
ClamAV se představuje
Antivirový program ClamAV vyvíjí tým lidí z různých evropských států. Že svému programu věnují velkou péči, je vidět i na tom, že aktualizace virové báze vydávají i několikrát denně. Všechny součásti produktu jsou poskytovány pod licencí GNU GPL verze 2.
ClamAV se skládá z několik částí. Především je to knihovna LibClamAV, která zajišťuje vlastní kontrolní činnost a kterou lze použít v libovolném programu, samozřejmě pod podmínkou dodržení licence. Dalšími komponentami jsou skenovací program clamscan
, démon clamd
, klientská aplikace clamdscan
, "on-access" skener clamuko
, aktualizátor freshclam
a poštovní filtr clamav-milter
(pro poštovní server sendmail).
Existuje i verze pro Windows, kde lze používat také grafické uživatelské rozhraní ClamWin, ale nejsou zde k dispozici všechny funkce programu. Ani uživatelé Mac OS X nepřijdou zkrátka, ClamAV lze používat i zde. Co se týká Linuxu, také tady jsou pro snazší ovládání k dispozici grafická rozhraní (KlamAV, ClamTk).
Detekční schopnosti
ClamAV není jen antivirovým programem, má ve své databázi kromě škodlivého softwaru také vzorky phishingových e-mailových zpráv. To naznačuje, že jednou z hlavních oblastí použití je právě kontrola pošty. Databáze aktuálně obsahuje cca 470 tisíc vzorků, proběhlo již víc než 8700 malých ("denních") a téměř 50 velkých aktualizací.
Důležité samozřejmě není, kolik virů a další havěti program zná, nýbrž jak se osvědčuje při jejich detekci v reálné praxi - včetně toho, jak brzy je schopen detekovat nový škodlivý kód, jak často se vyskytuje planý poplach atd. Se zjištěním, jak si ClamAV stojí, je trochu problém - při testech antivirových programů nebývá zahrnut, takže neexistují prakticky žádné důvěryhodné výsledky.
Na druhou stranu je fakt, že je ClamAV například standardní součástí produktu Mac OS X Server nebo řešení IBM Power Systems, takže lze předpokládat, že si dodavatelé nějaké testy dělali a ohodnotili ClamAV jako dostatečně způsobilý pro takové nasazení.
Co se týká schopnosti detekce v souborech, ClamAV je schopen pracovat s různými druhy spustitelných souborů a dokumentů, s různými formáty e-mailových úložišť a dokáže kontrolovat i archivy (pro některé - např. ZIP nebo RAR - ovšem potřebuje externí podporu), a to i rekurzivně.
Kontrola pošty
Jedním z hlavních úkolů pro ClamAV bývá kontrola e-mailového provozu na serveru. Typicky to funguje tak, že SMTP server přijme zprávu, tu nechá zkontrolovat programem ClamAV na případnou přítomnost virů, a pak s ní nějak dál naloží. Pokud je oním SMTP serverem sendmail, lze využít filtr clamav-milter. Obecně se ale většinou používá řešení založené na programu AMaViS (typicky amavisd-new), který rozebere každou zprávu na jednotlivé součásti a ty pak předkládá k virové (zde ClamAV) a spamové (např. Spamassassin) kontrole.
Poštu lze kontrolovat v zásadě dvojím způsobem. Buď běží démon clamd
a tomu se data předkládají ke kontrole, anebo lze spouštět skenovací program (clamscan
) vždy na jednotlivé zprávy. Kromě výjimečných případů je vhodnější metoda první, protože není potřeba pokaždé znovu načítat obsáhlou virovou databázi.
V linuxových distribucích to bývá běžně tak, že není potřeba se starat o kooperaci mezi programy AMaViS a ClamAV, konfigurační soubory AMaViSu jsou již připravené pro různé antivirové programy, stačí jen případně změnit parametry, je-li třeba.
Ruční kontrola souborů
Ruční kontrola je nejsnazším způsobem použití programu ClamAV. Jednou z možností je použít grafické rozhraní (např. KlamAV), ale i z příkazové řádky se program ovládá velmi jednoduše. Tady je pár příkladů:
clamscan clamscan divnyprogram.exe clamscan /home/franta generator | clamscan -
První příkaz zkontroluje všechny soubory v aktuálním adresáři. Druhý provede kontrolu určeného souboru a třetí kontrolu souborů v zadaném adresáři (pouze v něm, ne v podadresářích). Konečně čtvrtý příkaz znamená, že clamscan
bude přijímat data ze standardního vstupu, kam půjdou přes rouru z programu generator
. Všechny tyto příkazy provedou standardní kontrolu, tedy s výchozím nastavením.
Pokud potřebujete ovlivnit chování skeneru, je k dispozici řada parametrů, kterými toho lze dosáhnout - například takto:
clamscan -r /home/franta clamscan --move=/tmp/viry clamscan -i --bell
Na prvním řádku je mírná modifikace příkazu pro kontrolu určeného adresáře - v tomto případě bude kontrola rekurzivní, tedy včetně podadresářů. Druhý příkaz přesune infikované soubory do adresáře /tmp/viry, třetí pak hlásí jen infikované soubory (jinak se hlásí výsledek kontroly každého souboru) a navíc ještě při nálezu infekce pípne.
Kromě použití skeneru clamscan
máte také možnost předávat soubory ke kontrole běžícímu démonu scand
, což značně urychluje skenování. Démon ale samozřejmě musí běžet, navíc nelze používat externí programy pro rozebírání archivů a některé parametry nelze nastavovat (démon pracuje podle své konfigurace, uložené obvykle v souboru /etc/clamd.conf). Takto to vypadá:
clamdscan clamdscan divnyprogram.exe clamdscan /home/franta clamdscan -m /home/franta
Jde o obdobu prvních tří příkazů ukázaných u skeneru clamscan
. Opět se kontroluje aktuální adresář, resp. zadaný soubor a zadaný adresář. Ovšem pozor - v tomto případě se adresář skenuje vždy rekurzivně. Poslední příkaz ukazuje drobnou modifikaci kontroly. Démon totiž rozlišuje několik různých režimů. V tomto případě se použije tzv. multiscan, což znamená, že se kontrola paralelizuje do více vláken (vhodné na systémech s více procesory či procesorovými jádry).
Automatická (plánovaná) kontrola
Automatická kontrola podle plánu se prakticky nijak neliší od kontroly ruční. Lze opět použít buď clamscan
nebo démon clamdscan
. Je každopádně žádoucí provádět kontrolu (ať už kterýmkoli způsobem) se sníženou prioritou procesu, vzhledem k procesorové náročnosti, a případně (pokud to jde) též s nižší I/O prioritou.
Samotné spouštění může probíhat prostřednictvím démonu cron
nebo anacron
, případně z plánovacího nástroje grafického prostředí. Lze si představit také automatickou kontrolu všech nově vznikajících souborů v určitém adresáři (třeba při FTP uploadu), spouštěnou například programem incron
.
Kontrola při přístupu k souboru
Antivirové programy se mnohdy používají tak, že kontrolují soubor v okamžiku, kdy ho někdo otvírá (tzv. "on-access" kontrola) - tak mohou zachytit nebezpečný kód dříve, než se stihne spustit. Toto umí i ClamAV, byť to není úplně triviální.
Problém je totiž v tom, že přístup k souborům řeší jádro, kdežto ClamAV je běžný aplikační program. Řešeno je to tedy tak, že je v jádře speciální modul (Dazuko - původně vyvinutý firmou Avira právě pro účely virové kontroly), který umožňuje antivirovému programu získat řízení v okamžiku, kdy se někdo snaží otevřít soubor. Pak lze provést kontrolu a případně otevření souboru zabránit.
Modul dazuko
komunikuje s programem ClamAV tak, že vytvoří speciální zařízení, které si ClamAV otevře. Na straně ClamAV se o toto stará komponenta Clamuko, která vytvoří zvláštní vlákno v rámci clamd
.
Tento přístup má bohužel své nevýhody. Jednak je potřeba dbát na čisté ukončování démonu clamd
, navíc autoři ClamAV přímo varují před použitím tohoto řešení na produkčních systémech. Jako vhodnější náhradu doporučují použít na serverech Samba (což bude typický způsob využití takové kontroly) jiné řešení, založené na modulu samba-vscan, kdy se vše provádí v uživatelském prostoru, bez nutnosti něco provádět v jádře.
Existují ještě další zajímavé metody antivirové kontroly při přístupu. Patří mezi ně například mod_clamav (antivirový modul do HTTP serveru Apache) nebo Avfs (An On-Access Anti-Virus File System - souborový systém určený pro antivirovou kontrolu).
Grafická uživatelská rozhraní
Pro ClamAV existují dvě grafická uživatelská rozhraní pro Linux: KlamAV a ClamTk. První z nich je určeno pro desktopové prostředí KDE, druhé pro GNOME a další prostředí založená na GTK+. Při přítomnosti příslušných knihoven lze programy samozřejmě spouštět i v "cizích" prostředích.
Program KlamAV lze označit za komplexní řešení. Je v něm totiž prakticky vše, co je při antivirové kontrole potřeba - různé ruční kontroly, automatické testy, kontrola pošty (pro klientský program, např. KMail), správa karantény, aktualizace atd. Všechno se dá snadno "naklikat", možnosti jsou skutečně rozsáhlé. Kdo si rád nastavuje věci podle svého, určitě program KlamAV ocení. Z pohledu českého uživatele je trochu nepříjemné, že je přeložen do češtiny pouze částečně.
Naproti tomu program ClamTk je velmi jednoduchý - umí pouze ručně spouštěné testy a správu karantény, nic víc. Na jednu stranu je to určité omezení, pro rychlé použití (a pro toho, kdo se nerad proklikává složitým GUI) je to ale výhoda. Po stránce českého překladu je na tom přibližně stejně (špatně) jako KlamAV.
Rychlost kontroly
Několikrát jsem se tohoto problému už trochu dotkl. ClamAV je zkrátka pomalý - v porovnání s běžnými antivirovými programy (např. AVG, Avast!, NOD32) až desetkrát. Z toho vyplývají i některá doporučení související s použitím ClamAV.
Pomalost jednak snižuje použitelnost pro on-access kontrolu. Zejména na pomalejších systémech by takové nasazení znamenalo dlouhé čekání při otevírání každého kontrolovaného souboru. Při automatické i ruční kontrole je pak výhodnější kontrolovat co nejvíce souborů najednou, případně využít služeb démonu - zdaleka nejpomalejší (jednotky až desítky sekund) je totiž načítání virové databáze, proto je žádoucí tuto operaci co nejvíc eliminovat.
Svobodný, použitelný, schopný, ale pomalý
Antivirový program ClamAV je vynikající už tím, že je to svobodný software, který nikoho neomezuje v používání. Odpadá tak nutnost hlídat, zda není vyčerpán počet licencovaných e-mailových schránek či zda se za týden nepřestane aktualizovat virová databáze kvůli vypršení zaplaceného období.
Spolupráce s e-mailovým klientem
Kvalitu detekce je vzhledem k chybějícím informacím těžké posuzovat. Na základě vlastních zkušeností z tříletého nasazení na poštovním serveru mohu říct, že nevím o jediné infikované zprávě (počítám jen běžný malware, nikoli phishing), která by prošla skrz filtr - současně vím o případech zpráv, které ClamAV správně zachytil jako infikované, zatímco většina ostatních antivirových programů je ještě neznala a propustila je. Někdo jiný může mít samozřejmě zkušenosti odlišné. Pomohly by objektivní testy, pokud by je někdo udělal (resp. do běžných testů ClamAV zahrnul).
Hlavní pole působnosti programu ClamAV bude právě u kontroly pošty, kde mnohdy nevadí pomalost, resp. je více než bohatě vykoupena přínosy ClamAV. Též není problém používat ClamAV pro plánované kontroly souborů, u který také nevadí, když budou trvat poněkud déle. Naopak, kdo by rád používal kontrolu při přístupu, měl by se raději poohlédnout jinde - ClamAV se pro tento úkol příliš nehodí.