ClamAV na VPS — antywirus open-source dla Linuksa
Opublikowano: 9 kwietnia 2026 · Kategoria: Bezpieczeństwo
ClamAV to darmowy, open-sourcowy silnik antywirusowy od Cisco Talos. Nie chroni Linuksa przed wirusami Windows w tym sensie, że nie są one dla niego egzekwowalne — ale skanuje pliki przychodzące pocztą, uploady na WordPressie, archiwa FTP i udziały Samba po to, aby nie przekazywać złośliwego kodu dalej, do klientów końcowych. Na serwerach pocztowych i hostingach współdzielonych ClamAV jest często wymogiem regulacyjnym. Ten artykuł pokazuje instalację, konfigurację freshclam, uruchomienie on-access scannera i integrację z Postfixem.
Instalacja na Ubuntu/Debian i RHEL
# Ubuntu / Debian sudo apt update sudo apt install clamav clamav-daemon clamav-freshclam clamav-docs -y # RHEL / Rocky / AlmaLinux / CentOS Stream sudo dnf install epel-release -y sudo dnf install clamav clamav-update clamd -y # Pierwsza aktualizacja bazy wirusow (moze potrwac 5-10 minut) sudo systemctl stop clamav-freshclam sudo freshclam sudo systemctl start clamav-freshclam # Uruchomienie daemona clamd sudo systemctl enable --now clamav-daemon # Sprawdzenie wersji i statusu clamscan --version sudo systemctl status clamav-freshclam clamav-daemon
freshclam — automatyczna aktualizacja sygnatur
freshclam pobiera nowe definicje wirusów z mirrorów ClamAV (db.XX.clamav.net). Bazy wirusów
są spore — główny plik daily.cvd ma ponad 300 MB. Domyślnie freshclam sprawdza aktualizacje
12 razy dziennie (co 2 godziny). Konfiguracja:
# /etc/clamav/freshclam.conf (Debian/Ubuntu) # /etc/freshclam.conf (RHEL) DatabaseDirectory /var/lib/clamav UpdateLogFile /var/log/clamav/freshclam.log LogRotate yes DatabaseMirror db.pl.clamav.net DatabaseMirror database.clamav.net Checks 24 NotifyClamd /etc/clamav/clamd.conf # Recznie wymusz update: sudo freshclam # Sprawdz wersje baz sudo sigtool --info /var/lib/clamav/daily.cvd sudo sigtool --info /var/lib/clamav/main.cvd
Skanowanie on-demand i uploadów WordPress
Dla WordPressa z uploadami najlepiej ustawić cron, który co noc skanuje
wp-content/uploads i wysyła raport na email admina. Używaj
clamdscan (wysyła do działającego daemona — szybkie) zamiast
clamscan (ładuje bazę za każdym razem — wolne).
# Skanowanie jednorazowe katalogu (on-demand) sudo clamdscan -r /var/www/html/wp-content/uploads/ # Cron w /etc/cron.d/clamav-wp 0 3 * * * root /usr/bin/clamdscan -r --fdpass \ --log=/var/log/clamav/wp-uploads.log \ /var/www/html/wp-content/uploads/ || \ echo "ClamAV alert" | mail -s "[VPS] ClamAV detected malware" [email protected] # Skanowanie z wykluczeniami (np. pomin duze filmy) clamdscan -r --fdpass \ --exclude-dir="^/proc|^/sys" \ --exclude=".*\.(mp4|mkv|iso)$" \ /var/www/ # Raport z liczba zeskanowanych plikow clamdscan -r --fdpass --summary /home/
clamonacc — skanowanie on-access przez fanotify
clamonacc to watchdog, który używa mechanizmu fanotify w jądrze Linux do monitorowania
operacji na plikach w czasie rzeczywistym. Kiedy użytkownik zapisuje plik w monitorowanym katalogu,
clamonacc wysyła ścieżkę do clamd, a clamd skanuje plik — przed tym jak ktokolwiek zdąży go otworzyć.
Jeśli plik jest zainfekowany, fanotify może zablokować operację.
# /etc/clamav/clamd.conf - wlacz on-access OnAccessMountPath /var/www OnAccessIncludePath /var/www/html/wp-content/uploads OnAccessExcludeUname clamav OnAccessPrevention yes # blokuj dostep jesli wirus OnAccessExtraScanning yes # Restart clamd i start clamonacc sudo systemctl restart clamav-daemon sudo clamonacc -F --fdpass & # Test - zapisz plik testowy EICAR cd /var/www/html/wp-content/uploads/ echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > eicar.txt cat eicar.txt # Powinno zostac zablokowane z Permission denied # Status clamonacc sudo tail -f /var/log/clamav/clamav.log
Integracja z Postfixem przez amavis
Najpopularniejszy sposób skanowania poczty to wpięcie amavis-new między Postfix a skrzynkę. amavisd-new jest content filterem, który dostaje mail z Postfixa, przekazuje go do ClamAV (przez clamd socket) i SpamAssassina, po czym zwraca do Postfixa. Poniższa tabela porównuje typowe konfiguracje serwera mailowego.
| Konfiguracja | Zasoby (RAM) | Wydajność | Zastosowanie |
|---|---|---|---|
| Postfix + amavis + ClamAV | ~800 MB | ~50 mails/s | Klasyczne stack mailowe, łatwa integracja |
| Postfix + Rspamd + ClamAV | ~400 MB | ~150 mails/s | Nowsze, wydajniejsze, lepsze anti-spam |
| Postfix + MailScanner + ClamAV | ~600 MB | ~80 mails/s | Alternatywa dla amavis, prosty config |
| Mailcow (gotowy stack) | ~2 GB | ~100 mails/s | Docker, out-of-the-box ClamAV + Rspamd |
| Sam clamdscan w cron | ~1 GB | N/A (offline) | Tylko skany uploadów FTP, nie maili |
Optymalizacja i false positives
ClamAV potrafi zjeść 1-2 GB RAM-u sam w sobie (bazy + cache). Na VPS z 2 GB RAM to dużo. Najważniejsze techniki optymalizacji:
- Wyłącz nieużywane sygnatury —
ExcludeSigw clamd.conf dla baz, które nie są potrzebne (np. Macro dla Office, jeśli nie hostujesz dokumentów). - Nie skanuj plików >25 MB —
MaxFileSize 25Mw clamd.conf. Większe zwykle nie zawierają wirusów skompresowanych. - Limit głębokości archiwów —
MaxRecursion 10,MaxFiles 10000. Chroni przed zip bombs. - Biała lista dla false positives — plik
signatures.ign2z nazwami sygnatur, które są FP dla twoich aplikacji (często .exe generowane przez twoich developerów). - Nie używaj clamscan w produkcji — za każdym razem ładuje bazę (5-10s, ~1 GB RAM). Używaj clamdscan z uruchomionym clamd.