Clamav Verzeichnis scannen
Version vom 30. September 2026, 17:44 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=Grundsätzliches= *ClamAV ist ein freier Virenscanner, gepflegt von Cisco Talos. *Unter Linux wird er vor allem dort eingesetzt, wo Dateien für andere System…“)
Grundsätzliches
- ClamAV ist ein freier Virenscanner, gepflegt von Cisco Talos.
- Unter Linux wird er vor allem dort eingesetzt, wo Dateien für andere Systeme abgelegt werden: Mailserver, Samba-Freigaben, Upload-Verzeichnisse von Webservern.
- ClamAV arbeitet signaturbasiert. Er erkennt bekannte Schadsoftware, aber keine Rootkits auf dem eigenen System.
- Die Bestandteile
- freshclam
- Lädt die Signaturen herunter und hält sie aktuell.
- clamscan
- Scanner für die Kommandozeile. Lädt bei jedem Aufruf alle Signaturen neu und ist deshalb langsam im Start.
- clamd
- Daemon, der die Signaturen einmal in den Speicher lädt und Scan-Aufträge entgegennimmt.
- clamdscan
- Kommandozeilen-Client für clamd. Schnell, weil die Signaturen schon geladen sind.
- clamonacc
- On-Access-Scanner. Lässt Dateien beim Zugriff von clamd prüfen und kann den Zugriff auf infizierte Dateien blockieren.
Installation
- apt install clamav clamav-daemon
- Nach der Installation lädt der Dienst clamav-freshclam die Signaturen automatisch herunter. Das dauert je nach Leitung ein paar Minuten.
- Kontrolle, ob die Signaturen da sind:
ls -l /var/lib/clamav -rw-r--r-- 1 clamav clamav 282624 ... bytecode.cvd -rw-r--r-- 1 clamav clamav 23252480 ... daily.cld -rw-r--r-- 1 clamav clamav 170479789 ... main.cvd
- clamd startet erst, wenn die Signaturen vorhanden sind. Danach ggf. neu starten:
systemctl restart clamav-daemon systemctl status clamav-daemon
- Hinweis zum Speicher
- clamd hält alle Signaturen im RAM und braucht dafür rund 1 bis 2 GB. Kleine VMs brauchen entsprechend Speicher, sonst wird clamd vom Kernel beendet.
Signaturen aktualisieren
- clamav-freshclam läuft als Dienst und prüft regelmäßig auf neue Signaturen. Normalerweise ist nichts zu tun.
- Manuelle Aktualisierung (der Dienst muss dafür kurz angehalten werden, da er die Datenbank sperrt):
systemctl stop clamav-freshclam freshclam systemctl start clamav-freshclam
Manueller Scan
- Mit clamscan
- clamscan -r -i /home
- -r: rekursiv
- -i: nur infizierte Dateien ausgeben
- Am Ende steht eine Zusammenfassung (gescannte Dateien, Funde, Dauer).
- Mit clamdscan
- clamdscan --fdpass /home
- Nutzt den laufenden clamd, startet daher sofort. Verzeichnisse werden automatisch rekursiv durchsucht.
- --fdpass: Die Datei wird geöffnet an clamd übergeben. clamd läuft als Benutzer clamav und könnte sonst Dateien ohne Leserechte für clamav nicht prüfen.
Testdatei EICAR
- Die EICAR-Datei ist ein harmloser Text, den alle Virenscanner als Testvirus erkennen.
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/eicar.txt clamscan /tmp/eicar.txt
/tmp/eicar.txt: Win.Test.EICAR_HDB-1 FOUND
- Aufräumen:
rm /tmp/eicar.txt
On-Access-Scan
Funktionsweise
- clamonacc läuft als root und meldet sich über fanotify beim Kernel an.
- Greift ein Prozess auf eine Datei im überwachten Verzeichnis zu, hält der Kernel den Zugriff an und fragt clamonacc.
- clamonacc lässt die Datei von clamd prüfen. Ist sie sauber, wird der Zugriff erlaubt, sonst verweigert.
- Das Paket clamav-daemon bringt dafür bereits die Unit clamav-clamonacc.service mit. Sie verschiebt gefundene Dateien nach /root/quarantine und schreibt ein Log nach /var/log/clamav/clamonacc.log.
Verzeichnisse anlegen
mkdir -p /srv/daten /root/quarantine
Konfiguration
- Am Ende von /etc/clamav/clamd.conf ergänzen:
OnAccessIncludePath /srv/daten OnAccessPrevention yes OnAccessExcludeUname clamav
- OnAccessIncludePath
- Dieses Verzeichnis samt Unterverzeichnissen wird überwacht. Die Zeile kann mehrfach vorkommen.
- OnAccessPrevention yes
- Der Zugriff auf infizierte Dateien wird verweigert. Ohne diese Option wird nur geloggt.
- OnAccessExcludeUname clamav
- Nimmt den Benutzer aus, unter dem clamd läuft. Sonst würde clamd beim Scannen seine eigenen Zugriffe wieder prüfen lassen und sich im Kreis drehen.
- clamd neu starten:
systemctl restart clamav-daemon
--fdpass ergänzen
- Die mitgelieferte Unit ruft clamonacc ohne --fdpass auf. Aus demselben Grund wie bei clamdscan wird die Option ergänzt:
systemctl edit clamav-clamonacc
[Service] ExecStart= ExecStart=/usr/sbin/clamonacc -F --fdpass --log=/var/log/clamav/clamonacc.log --move=/root/quarantine
- Die leere Zeile ExecStart= ist notwendig, sie löscht den ursprünglichen Aufruf.
Starten
systemctl enable --now clamav-clamonacc systemctl status clamav-clamonacc
Test
- Log in einem zweiten Terminal mitlesen:
tail -f /var/log/clamav/clamonacc.log
- EICAR im überwachten Verzeichnis anlegen und lesen:
cd /srv/daten echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > eicar.txt cat eicar.txt
cat: eicar.txt: Operation not permitted
- Die Datei ist aus dem Verzeichnis verschwunden und liegt in der Quarantäne:
ls /srv/daten ls /root/quarantine
- Im Log steht der Fund:
/srv/daten/eicar.txt: Win.Test.EICAR_HDB-1 FOUND
- Aufräumen:
rm /root/quarantine/eicar.txt
Grenzen
- Nicht / überwachen, sondern nur gezielt Verzeichnisse wie Freigaben, Upload-Ordner oder /home. Jeder Dateizugriff läuft sonst über clamd und bremst das System spürbar.
- Bei sehr großen Verzeichnisbäumen kann das Limit fs.inotify.max_user_watches erreicht werden, clamonacc meldet das im Log.
- ClamAV erkennt nur, was in den Signaturen steht. Neue oder gezielt angepasste Schadsoftware bleibt unerkannt.
- Gegen Rootkits hilft ClamAV nicht. Dafür siehe die Integritätsprüfung mit debsums bzw. rpm -V.