Clamav Verzeichnis scannen

Aus Xinux Wiki
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…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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.

Links