ClamAV — Viren und Malware auf der Kommandozeile aufspüren

Praxis-Guide zu ClamAV — Dateien scannen, Signaturen mit freshclam aktualisieren und Bedrohungen über den clamd-Daemon aufspüren.

ClamAV ist die bekannteste quelloffene Antiviren-Engine für Unix-Systeme – vom Mail-Gateway über Datei-Server bis zum Web-Hosting. Mit clamscan startest du On-Demand-Scans, clamdscan reicht Dateien an den schnellen Hintergrund-Daemon clamd weiter, und freshclam hält die Signatur-Datenbank aktuell. Dieser Guide führt dich von den Signatur-Updates über rekursive Scans und Quarantäne bis zur Daemon-Verwaltung. Achte darauf, freshclam regelmäßig laufen zu lassen – mit veralteten Signaturen findet selbst der beste Scanner neue Schädlinge nicht.

Signatur-Updates (freshclam)

freshclam — Aktualisiert die Virensignatur-Datenbank.

sudo freshclam

freshclam --check <n> — Prüft im Daemon-Modus n-mal pro Tag auf Updates.

sudo freshclam --check 12

freshclam --show-progress — Aktualisiert die Signaturen mit Anzeige des Download-Fortschritts.

sudo freshclam --show-progress

freshclam --datadir <path> — Nutzt ein eigenes Verzeichnis für die Signatur-Datenbanken.

sudo freshclam --datadir /opt/clamav/db

freshclam -d — Lässt freshclam als Daemon für automatische Updates laufen.

sudo freshclam -d

On-Demand-Scans (clamscan)

clamscan <file> — Scannt eine einzelne Datei auf Bedrohungen.

clamscan suspicious-file.zip

clamscan -r <dir> — Scannt ein Verzeichnis und alle Unterverzeichnisse rekursiv.

clamscan -r /home/user/Downloads

clamscan -r -i <dir> — Scannt rekursiv und zeigt nur infizierte Dateien an.

clamscan -r -i /var/www

clamscan -r --remove <dir> — Scannt und löscht infizierte Dateien automatisch (unwiderruflich – mit Vorsicht einsetzen).

clamscan -r --remove /tmp/uploads

clamscan -r --move <quarantine> <dir> — Scannt und verschiebt infizierte Dateien in ein Quarantäne-Verzeichnis.

clamscan -r --move /quarantine /home/user

clamscan -r --copy <quarantine> <dir> — Scannt und kopiert infizierte Dateien in die Quarantäne (Originale bleiben erhalten).

clamscan -r --copy /quarantine /var/www

clamscan -r -l <logfile> <dir> — Scannt und schreibt die Ergebnisse in eine Log-Datei.

clamscan -r -l /var/log/clamav/scan.log /home

clamscan --bell <dir> — Gibt einen Signalton aus, wenn ein Virus gefunden wird.

clamscan --bell -r /home/user

Scan-Optionen

clamscan --max-filesize=<size> <dir> — Legt die maximale Dateigröße fest, die gescannt wird (Standard 100M).

clamscan --max-filesize=500M -r /data

clamscan --max-scansize=<size> <dir> — Legt die maximale pro Datei gescannte Datenmenge fest (für Archive).

clamscan --max-scansize=1G -r /uploads

clamscan --max-recursion=<n> <dir> — Legt die maximale Entpack-Tiefe für Archive fest (Standard 17).

clamscan --max-recursion=10 -r /tmp

clamscan --exclude=<regex> -r <dir> — Schließt Dateien aus, die auf ein Regex-Muster passen.

clamscan --exclude='\.log$' -r /var

clamscan --exclude-dir=<regex> -r <dir> — Schließt Verzeichnisse aus, die auf ein Regex-Muster passen.

clamscan --exclude-dir='node_modules' -r /home/user/projects

clamscan --include=<regex> -r <dir> — Scannt nur Dateien, die auf ein Regex-Muster passen.

clamscan --include='\.php$' -r /var/www

clamscan --no-summary <file> — Unterdrückt die Zusammenfassung am Ende des Scans.

clamscan --no-summary -r /tmp

Daemon-Scans (clamdscan)

clamdscan <file> — Scannt über den clamd-Daemon (deutlich schneller als clamscan).

clamdscan suspicious-file.zip

clamdscan -r <dir> — Scannt rekursiv über den Daemon.

clamdscan -r /var/www

clamdscan --multiscan -r <dir> — Paralleler Scan über mehrere Daemon-Threads.

clamdscan --multiscan -r /home

clamdscan --fdpass <file> — Übergibt den Datei-Deskriptor an clamd (vermeidet Berechtigungsprobleme).

clamdscan --fdpass /root/file.bin

clamdscan --stream <file> — Streamt die Datei über das Netzwerk an clamd (für Remote-Scans).

clamdscan --stream suspicious-file.zip

clamdscan -V — Zeigt die clamd-Version und Datenbank-Infos an.

clamdscan -V

Daemon-Verwaltung (clamd)

clamd — Startet den ClamAV-Daemon.

sudo clamd

clamdtop — Überwacht die clamd-Leistung in Echtzeit (wie top).

clamdtop

clamconf — Zeigt die ClamAV-Konfiguration und Datenbank-Infos an.

clamconf

clamconf --generate-config=clamd.conf — Erzeugt eine Beispiel-Konfigurationsdatei clamd.conf.

clamconf --generate-config=clamd.conf > /etc/clamav/clamd.conf

systemctl status clamav-daemon — Prüft den Status des clamd-systemd-Dienstes.

sudo systemctl status clamav-daemon

systemctl restart clamav-daemon — Startet den clamd-Daemon neu.

sudo systemctl restart clamav-daemon

Datenbank-Infos

sigtool --info <cvd> — Zeigt Informationen zu einer Signatur-Datenbankdatei an.

sigtool --info /var/lib/clamav/main.cvd

sigtool --list-sigs — Listet alle Signaturen der geladenen Datenbanken auf.

sigtool --list-sigs | wc -l

sigtool --find-sigs <name> — Sucht eine bestimmte Signatur anhand ihres Namens.

sigtool --find-sigs Eicar

clamscan --debug 2>&1 | grep 'loaded' — Zeigt die Anzahl der geladenen Signaturen an.

clamscan --debug 2>&1 | grep 'loaded'

Praxis-Beispiele

clamscan -r -i --move=/quarantine / — Komplett-Scan des Systems, nur Infektionen anzeigen, Bedrohungen in Quarantäne verschieben.

sudo clamscan -r -i --move=/quarantine /

clamscan -r -i /var/www -l /var/log/clamav/www-scan.log — Scannt das Web-Verzeichnis und protokolliert die Ergebnisse zur Auswertung.

sudo clamscan -r -i /var/www -l /var/log/clamav/www-scan.log

find /uploads -mtime -1 -type f -exec clamscan {} + — Scannt nur Dateien, die in den letzten 24 Stunden geändert wurden.

find /var/www/uploads -mtime -1 -type f -exec clamscan {} +

clamscan -r --exclude-dir='^\.git' --include='\.(php|js|html)$' <dir> — Scannt nur web-relevante Dateien und überspringt .git-Verzeichnisse.

clamscan -r --exclude-dir='^\.git' --include='\.(php|js|html)$' /var/www

freshclam && clamscan -r -i /home — Aktualisiert zuerst die Signaturen und scannt dann die Home-Verzeichnisse.

sudo freshclam && sudo clamscan -r -i /home

echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/eicar.txt && clamscan /tmp/eicar.txt — Legt eine EICAR-Testdatei an und prüft, ob ClamAV sie erkennt.

clamscan /tmp/eicar.txt

Fazit

ClamAV ist kein Echtzeit-Wächter wie kommerzielle Desktop-Suiten, sondern glänzt dort, wo Dateien kontrolliert durchlaufen: an Mail-Gateways, in Upload-Verzeichnissen und bei geplanten Scans per Cronjob. Kombiniere es mit freshclam für aktuelle Signaturen und setze --remove nur mit Bedacht ein – die Quarantäne über --move ist fast immer die sicherere Wahl, weil du Fehlalarme so noch zurückholen kannst.

Verwandte Kommandos

  • age – Dateien einfach und modern verschlüsseln
  • fail2ban – Brute-Force-Angriffe per Log-Analyse aussperren
  • firewalld – dynamische Firewall-Regeln verwalten