W świecie informatyki istnieje powszechne przekonanie, że systemy operacyjne oparte na Linuxie są odporne na wirusy i złośliwe oprogramowanie, co prowadzi do błędnego wniosku, że nie potrzebują one żadnych dodatkowych zabezpieczeń antywirusowych. Niestety, jest to mit, który może mieć poważne konsekwencje dla bezpieczeństwa danych i integralności systemów. Linux, mimo swojej reputacji jako systemu bardziej bezpiecznego niż Windows, nie jest całkowicie odporny na zagrożenia. Chociaż architektura Linuxa, z jego wielopoziomowym systemem uprawnień i otwartością kodu źródłowego, rzeczywiście może utrudniać życie twórcom złośliwego oprogramowania, nie oznacza to, że takie zagrożenia nie istnieją. Wręcz przeciwnie, w miarę jak popularność Linuxa rośnie, rośnie też zainteresowanie cyberprzestępców atakowaniem tego systemu.  

Serwery, urządzenia IoT, a nawet komputery osobiste działające na Linuxie stają się celem zaawansowanych ataków, które mogą obejmować wirusy, ransomware, rootkity, trojany i inne formy złośliwego oprogramowania. Co więcej, wiele instytucji używa systemów Linux do hostowania krytycznych aplikacji i przechowywania wrażliwych danych, co czyni je atrakcyjnym celem.  

Nawet jeśli użytkownik domowy może czuć się bezpieczny, to w kontekście korporacyjnym i serwerowym, gdzie konsekwencje udanego ataku mogą być katastrofalne, posiadanie skanera antywirusowego staje się koniecznością. Skanery antywirusowe dla Linuxa oferują nie tylko ochronę przed znanym złośliwym oprogramowaniem, ale również narzędzia do monitorowania systemu, wykrywania anomalii i przeprowadzania regularnych audytów bezpieczeństwa, co znacząco podnosi poziom ochrony. Ignorowanie potrzeby posiadania oprogramowania antywirusowego w systemach Linux to ryzyko, którego żadna odpowiedzialna osoba ani firma nie powinna podejmować.  

W tym artykule przedstawimy możliwości co do darmowego i skutecznego antywirusa na system Linux. Niestety w świecie oprogramowania antywirusowego dla systemów Linux, dostępność darmowych i skutecznych rozwiązań znacznie się zmniejszyła. Wiele znanych projektów, takich jak Sophos, F-Secure czy ESET, są obecnie dostępne tylko jako płatne wersje lub całkowicie zakończyły swoją działalność na platformie Linux. W obliczu tego zmieniającego się krajobrazu, ClamAV pozostaje jedyną niezawodną i darmową opcją ochrony antywirusowej dla użytkowników Linuxa.  

Clamav wciąż jest jedyny

ClamAV (Clam AntiVirus) to darmowy i najbardziej znany, otwartoźródłowy skaner antywirusowy dla systemów Unix/Linux, znany ze swojej skuteczności i elastyczności. ClamAV oferuje wiele funkcji, w tym skanowanie w czasie rzeczywistym, skanowanie na żądanie oraz wykrywanie wirusów, trojanów, malware i innych zagrożeń. Posiada także mechanizm automatycznych aktualizacji definicji wirusów, co zapewnia ochronę przed najnowszymi zagrożeniami.

Instalacja:

apt-get update 

apt-get install clamav clamav-daemon 

Skanowanie na żądanie (np. katalogu domowego użytkowników): 

clamscan -r /home 

Aktualizacja definicji wirusów: 

freshclam 

Skanowanie „OnAccess” czyli skanujemy każdy wrzucany, zapisywany czy używany plik. 

Od jakiegoś czasu funkcjonuje już pełna funkcjonalność skanowania w trakcie dostępu do pliku tzn., że wtedy, kiedy wrzucamy plik, otwieramy czy zapisujemy Clamav może je skanować tak jak to robią antywirusy w systemach Windows. Dlatego właśnie na tym się nieco mocniej skupimy, dlatego, że pozostałe funkcje niewiele się zmieniły na przestrzeni lat. 

Konfiguracja On Access 

OnAccessMaxFileSize 10M
Nie skanuj plików większych niż zdefiniowany rozmiar. 

OnAccessMaxThreads 10 
Maksymalna liczba wątków skanowania do przydzielenia na potrzeby puli wątków OnAccess podczas uruchamiania. Te wątki są odpowiedzialne za tworzenie połączenia z demonem i inicjowanie skanowania po przetworzeniu zdarzenia. Aby zapobiec zużyciu wszystkich zasobów clamd przez clamonacc, utrzymuj to poniżej maksymalnej liczby wątków clamd. 

OnAccessCurlTimeout 10000 
Maksymalny czas (w milisekundach), jaki klient OnAccess powinien spędzić na każdym połączeniu, wysyłaniu i odbieraniu próby podczas komunikacji z clamd za pomocą curl. 

OnAccessDisableDDD yes 
Przełącza dynamiczne określanie katalogu. Pozwala na rekursywne monitorowanie ścieżek dołączonych. 

OnAccessIncludePath /home 
OnAccessIncludePath /arek 
Ustaw ścieżki gdzie wszystkie pliki wewnątrz będą skanowane. Możesz mieć wiele dyrektyw OnAccessIncludePath, ale każdy katalog musi być dodany w oddzielnej linii. 

OnAccessExcludePath /home/ktoś 
Ustaw ścieżki wykluczane. Wszystkie podkatalogi również są wykluczane. 

OnAccessPrevention yes 
Modyfikuje zachowanie blokowania fanotify podczas obsługi zdarzeń uprawnień. Jeśli wyłączone, fanotify będzie powiadamiać tylko wtedy, gdy skanowany plik jest wirusem, i nie wykonywać żadnego blokowania. 

OnAccessMountPath /
OnAccessMountPath /home/ktoś 
Ustawia punkt montowania do skanowania. Określony punkt montowania lub punkt montowania zawierający określony katalog będą monitorowane. Jeśli określone są jakiekolwiek katalogi, ta opcja wyprze (wyłączy i zignoruje wszystkie opcje związane z) system DDD.  

OnAccessExcludeRootUID no 
Dzięki tej opcji możesz wykluczyć root UID (0). Procesy uruchomione pod root będą mogły uzyskać dostęp do wszystkich plików bez wywoływania skanów lub zdarzeń odmowy uprawnień.  

OnAccessExcludeUID -1
Dzięki tej opcji możemy wykluczyć określone UIDs. Procesy z tymi UIDs będą mogły uzyskać dostęp do wszystkich plików bez wywoływania skanów lub zdarzeń odmowy uprawnień.

OnAccessExcludeUname clamav 
Ta opcja pozwala na wykluczenia według nazw użytkowników podczas korzystania z klienta skanowania na żądanie.  

Po wszystkim restartujemy demona dla aplikacji clamav: 

systemctl start clamav-daemon 

oraz uruchomienie on access scan: 

clamonacc 

I sprawdzenie czy działają: 

Jak widać w tym przypadku wszystkie aplikacje są uruchomione i działają prawidłowo. 

Tak samo poprzez analogię możemy wywoływać Clamav’a poprzez zadania cron wraz z poleceniami. Dla przykładu przeskanujmy w nocy zawsze katalog /home 

Wpis do crontaba: 

0 2 * * * /usr/bin/freshclam && /usr/bin/clamscan -r /home

Przykładowy plik konfiguracyjny: 

User clamav 
ScanMail true 
ScanArchive true 
ArchiveBlockEncrypted false 
MaxDirectoryRecursion 15 
FollowDirectorySymlinks false 
FollowFileSymlinks false 
ReadTimeout 180 
MaxThreads 12 
MaxConnectionQueueLength 15 
LogSyslog false 
LogRotate true 
LogFacility LOG_LOCAL6 
LogClean false 
LogVerbose false 
PreludeEnable no 
PreludeAnalyzerName ClamAV 
DatabaseDirectory /var/lib/clamav 
OfficialDatabaseOnly false 
SelfCheck 3600 
Foreground false 
Debug false 
ScanPE true 
MaxEmbeddedPE 10M 
ScanOLE2 true 
ScanPDF true 
ScanHTML true 
ScanImage yes 
MaxHTMLNormalize 10M 
MaxHTMLNoTags 2M 
MaxScriptNormalize 5M 
MaxZipTypeRcg 1M 
ScanSWF true 
ExitOnOOM false 
LeaveTemporaryFiles false 
AlgorithmicDetection true 
ScanELF true 
IdleTimeout 30 
CrossFilesystems true 
PhishingSignatures true 
PhishingScanURLs true 
PhishingAlwaysBlockSSLMismatch false 
PhishingAlwaysBlockCloak false 
PartitionIntersection false 
DetectPUA false 
ScanPartialMessages false 
HeuristicScanPrecedence false 
StructuredDataDetection false 
CommandReadTimeout 30 
SendBufTimeout 200 
MaxQueue 100 
ExtendedDetectionInfo true 
OLE2BlockMacros false 
AllowAllMatchScan true 
ForceToDisk false 
DisableCertCheck false 
DisableCache false 
MaxScanTime 120000 
MaxScanSize 100M 
MaxFileSize 25M 
MaxRecursion 16 
MaxFiles 10000 
MaxPartitions 50 
MaxIconsPE 100 
PCREMatchLimit 10000 
PCRERecMatchLimit 5000 
PCREMaxFileSize 25M 
ScanXMLDOCS true 
ScanHWP3 true 
MaxRecHWP3 16 
StreamMaxLength 25M 
LogFile /var/log/clamav/clamav.log 
LogTime true 
LogFileUnlock false 
LogFileMaxSize 0 
Bytecode true 
BytecodeSecurity TrustSigned 
BytecodeTimeout 60000 
OnAccessMaxFileSize 5M 
OnAccessIncludePath /home 
OnAccessExcludePath /home/user1 
OnAccessExcludePath /home/user2 
OnAccessExcludeUname clamav