# 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.

Source: https://www.jpkc.com/db/cheatsheets/security/clamav/

<!-- PROSE:intro -->
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.
<!-- PROSE:intro:end -->

## Signatur-Updates (freshclam)

`freshclam` — Aktualisiert die Virensignatur-Datenbank.

```bash
sudo freshclam
```

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

```bash
sudo freshclam --check 12
```

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

```bash
sudo freshclam --show-progress
```

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

```bash
sudo freshclam --datadir /opt/clamav/db
```

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

```bash
sudo freshclam -d
```

## On-Demand-Scans (clamscan)

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

```bash
clamscan suspicious-file.zip
```

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

```bash
clamscan -r /home/user/Downloads
```

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

```bash
clamscan -r -i /var/www
```

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

```bash
clamscan -r --remove /tmp/uploads
```

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

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

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

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

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

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

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

```bash
clamscan --bell -r /home/user
```

## Scan-Optionen

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

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

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

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

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

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

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

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

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

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

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

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

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

```bash
clamscan --no-summary -r /tmp
```

## Daemon-Scans (clamdscan)

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

```bash
clamdscan suspicious-file.zip
```

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

```bash
clamdscan -r /var/www
```

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

```bash
clamdscan --multiscan -r /home
```

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

```bash
clamdscan --fdpass /root/file.bin
```

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

```bash
clamdscan --stream suspicious-file.zip
```

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

```bash
clamdscan -V
```

## Daemon-Verwaltung (clamd)

`clamd` — Startet den ClamAV-Daemon.

```bash
sudo clamd
```

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

```bash
clamdtop
```

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

```bash
clamconf
```

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

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

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

```bash
sudo systemctl status clamav-daemon
```

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

```bash
sudo systemctl restart clamav-daemon
```

## Datenbank-Infos

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

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

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

```bash
sigtool --list-sigs | wc -l
```

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

```bash
sigtool --find-sigs Eicar
```

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

```bash
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.

```bash
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.

```bash
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.

```bash
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.

```bash
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.

```bash
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.

```bash
clamscan /tmp/eicar.txt
```

<!-- PROSE:outro -->
## 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.

## Weiterführende Links

- [ClamAV – offizielle Dokumentation](https://docs.clamav.net/) – Handbuch und Referenz (englisch)
- [ClamAV – Projektseite](https://www.clamav.net/) – Downloads, Signaturen und News (englisch)
- [Clam AntiVirus – Wikipedia](https://de.wikipedia.org/wiki/Clam_AntiVirus) – Hintergrund und Geschichte
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [age](https://www.jpkc.com/db/cheatsheets/security/age/) – Dateien einfach und modern verschlüsseln
- [fail2ban](https://www.jpkc.com/db/cheatsheets/security/fail2ban/) – Brute-Force-Angriffe per Log-Analyse aussperren
- [firewalld](https://www.jpkc.com/db/cheatsheets/security/firewalld/) – dynamische Firewall-Regeln verwalten

