Nextcloud Antivirus mit ClamAV ein Leitfaden für Administratoren

Nextcloud Antivirus mit ClamAV: Ein Praxisleitfaden für Administratoren

Ein einziger Upload kann reichen, um eine komplette Cloud-Umgebung in ein Verteilzentrum für Schadsoftware zu verwandeln. Wer eine Nextcloud-Instanz produktiv betreibt, sollte sich deshalb frühzeitig damit beschäftigen, auf welche Weise die eigenen Dateien geprüft werden. Die gute Nachricht: Mit ClamAV existiert eine ausgereifte, quelloffene Virenschutz-Lösung, die sich direkt in Nextcloud integrieren lässt. Die schlechte Nachricht: Die Einbindung ist nicht immer so unkompliziert, wie man sich das wünscht, und erfordert ein solides Grundverständnis der zugrunde liegenden Dienste.

Nextcloud selbst ist ein Dateisystem mit Web-Interface, synchronisierbar über Clients, mit geteilter Verantwortung. Oft wird es in Unternehmen als selbstgehostete Alternative zu Dropbox, Google Drive oder Microsoft OneDrive betrieben. Doch der Server gleicht einem Archiv, das die Inhalte verwaltet ohne sie zu prüfen. Ein E-Mail-Server hat meist ein Gateway zur Virenprüfung; ein Nextcloud-Server hat standardmäßig keine solche Instanz.

Was Nextcloud ohne Antivirus bedeutet

Nextcloud ist eine Kollaborationsplattform, keine Sicherheitsappliance. Dateien, die über die Weboberfläche, den Desktop-Sync oder die Mobile-App hochgeladen werden, landen im Storage des Servers, ohne dass deren Inhalt analysiert wird. Ein Nutzer, der unwissentlich eine mit einem Makrovirus infizierte Office-Datei im Firmenordner ablegt, verteilt sie damit an alle Kolleginnen und Kollegen, die Zugriff auf diesen Ordner haben. Ein Virenscanner kann dieses Risiko zumindest reduzieren.

Es ist ein Trugschluss zu glauben, dass Linux-Server gegen Malware immun seien. Zwar sind klassische Linux-Viren selten, aber Nextcloud ist plattformunabhängig: Auf dem Server liegen neben normalen Dokumenten auch Windows-Programme, PDFs und ZIP-Archive. Genau diese Dateien sind das Einfallstor. Wer einmal erlebt hat, wie eine kleine, unauffällige Datei eine Ransomware-Kampagne auslöst, wird den Wert eines serverseitigen Scanners plötzlich ganz anders einschätzen.

Die wichtigsten ClamAV-Komponenten

ClamAV ist kein einzelnes Programm, sondern ein Verbund aus mehreren Werkzeugen. Der Daemon clamd hält die Virensignaturen im Arbeitsspeicher, entpackt Dateien soweit möglich und nimmt Scan-Aufträge über einen Socket oder TCP entgegen. Er ist die erste Wahl für den Betrieb mit Nextcloud. Daneben gibt es das Kommandozeilenprogramm clamscan, das für jede Datei einen neuen Prozess startet und die Datenbank bei jedem Aufruf erneut lädt. Das ist langsam und eher für Tests oder manuelle Scans geeignet.

Die dritte wichtige Komponente ist freshclam. Sie lädt regelmäßig neue Virensignaturen von den Servern des ClamAV-Projekts. Ohne dieses Update-Tool verliert der Scanner schnell seine Aktualität. Wer eine Nextcloud-Instanz mit ClamAV betreibt, muss also nicht nur den Daemon am Laufen halten, sondern auch dafür sorgen, dass die Signaturdatenbank aktuell bleibt. Auf Debian und Ubuntu erledigen die bereits vorhandenen Systemd-Services clamav-daemon und clamav-freshclam einen Großteil dieser Arbeit.

Die Konfigurationsdateien liegen in der Regel unter /etc/clamav/clamd.conf und /etc/clamav/freshclam.conf. Ein Blick in die Datei lohnt sich, denn Parameter wie LocalSocket, TCPSocket, User und StreamMaxLength entscheiden darüber, ob die spätere Anbindung an Nextcloud funktioniert. Insbesondere StreamMaxLength begrenzt die Größe der Datenströme, die clamd über die Netzwerk- oder Socket-Schnittstelle annimmt. Ist der Wert zu niedrig, scheitern große Uploads oder werden ohne Scannen durchgereicht.

Die offizielle Antivirus-App von Nextcloud

In Nextcloud lässt sich die Antivirus-Funktion über eine offizielle App ergänzen. Sie heißt in der App-Verwaltung schlicht „Antivirus“, das interne Paket lautet files_antivirus. Nach der Installation findet sich die Konfiguration im Adminbereich unter dem Punkt Sicherheit. Die Bedienoberfläche ist überschaubar: Man wählt zwischen dem Executable-Modus, der clamscan verwendet, und dem Daemon-Modus, der auf clamd zugreift. Dazu kommen Angaben zum Socket oder zur TCP-Adresse sowie das Verhalten im Fall eines Virenfunds.

Der Executable-Modus wirkt auf den ersten Blick sympathisch, weil er keine laufenden Zusatzdienste voraussetzt. Doch der Schein trügt. Jeder einzelne Scan startet einen eigenen clamscan-Prozess, der die komplette Virendatenbank in den Speicher laden muss. Bei kontinuierlichem Betrieb oder mehreren Uploads gleichzeitig leidet die Performance spürbar. Der Daemon-Modus ist die saubere Lösung, denn clamd hält die Signaturdatenbank bereits geladen und bearbeitet Anfragen parallel.

Was beim Virenfund geschieht, hängt von der gewählten Aktion ab. Die App kann infizierte Dateien löschen, den Zugriff verweigern oder den Fund nur protokollieren. Eine Quarantäne, also das Verschieben in einen geschützten Bereich, ist in einigen Versionen vorhanden, aber nicht überall. Aus dokumentarischer Sicht ist das ein Manko: Ein automatisiertes Löschen zerstört mögliche Spuren und erschwert die Nacharbeit. Ein Fund sollte deshalb so protokolliert sein, dass man später zumindest den Dateinamen, den Speicherort und den Zeitpunkt nachvollziehen kann.

Installation der App und Konfiguration für clamd

Die Installation der App ist in wenigen Minuten erledigt. Auf dem Server muss zuvor ClamAV laufen. Bei einer Debian- oder Ubuntu-Installation genügt der Befehl apt install clamav clamav-daemon und ein Start der Dienste per systemctl enable --now clamav-daemon clamav-freshclam. Danach lässt sich clamd über den Unix-Socket /run/clamav/clamd.ctl erreichen. Genau diesen Pfad trägt man in der Nextcloud-App ein, wenn der Daemon auf demselben Host läuft.

Die App verlangt in ihrer Konfiguration die Angabe des Sockets. Für die alltägliche Nutzung ist das ungewohnt, weil die meisten Anwender mit TCP-Ports vertraut sind. Socket-Dateien sind aber nichts anderes als „Telefonhörer“ des Systems: Ein Prozess lauscht an einer Datei, und ein anderer Prozess kann dort Kontakt aufnehmen. Das ist deutlich sicherer als ein offener Netzwerkport, denn fremde Rechner können diesen Weg nicht nutzen.

Wer ClamAV auf einem separaten Server betreibt, muss dagegen auf TCP umstellen. In der clamd.conf muss der Wert TCPSocket 3310 gesetzt werden, und der Daemon lauscht dann auf Port 3310. In Nextcloud trägt man die IP-Adresse des ClamAV-Servers ein. Wichtig: Diese Verbindung ist unverschlüsselt. Die Dateien werden im Klartext übertragen, und jeder, der Zugriff auf das Netzwerk hat, könnte sie mitlesen. Man sollte den Port deshalb nicht ungefiltert ins Internet hängen, sondern nur in einem abgeschirmten Netzwerk oder einer VPN-Umgebung verwenden.

Docker, Container und Netzwerk-Kopplung

Nextcloud wird in modernen Umgebungen häufig als Docker-Container betrieben. Das ist bequem und gut wartbar, bringt aber eine Besonderheit mit sich: Der Container ist von der Außenwelt abgeschnitten, solange man keine Verbindungen erlaubt. Für die Anbindung an ClamAV gibt es zwei Wege. Die erste Variante nutzt einen gemeinsamen Unix-Socket. Man legt ein Volume an, in dem die Socket-Datei abgelegt wird und sowohl der Nextcloud-Container als auch der ClamAV-Container darauf zugreifen können. Diese Methode ist sicher, führt allerdings zu einer zusätzlichen Abhängigkeit: Der Socket muss von beiden Containern beschreibbar beziehungsweise lesbar sein, was in Docker häufig zu Berechtigungsproblemen führt.

Die zweite Variante ist ein TCP-Socket im internen Docker-Netzwerk. Der ClamAV-Container startet etwa mit dem Parameter -p 3310:3310, und die Nextcloud-App bekommt die Container-ID oder den Dienstnamen als Host. In einem Docker-Compose-Setup kann man den ClamAV-Service einfach als clamav bezeichnen und die App auf clamav:3310 verweisen. Das funktioniert zuverlässig, hat aber den erwähnten Sicherheitsnachteil: Jeder andere Container im selben Netzwerk kann den Scanner ebenfalls ansprechen. In einer gut segmentierten Umgebung ist das vertretbar, in einem offenen Laufzeitnetzwerk sollte man die Zugriffe einschränken.

Gewöhnen muss man sich auch daran, dass der ClamAV-Container ein vollwertiger Dienst ist, der starten und betankt werden will. Beim ersten Start lädt clamd die Virensignaturen aus dem Netz. Je nach Internetanbindung und Größe der Datenbank kann das ein paar Minuten dauern. Wer die Container per Compose hochzieht und sofort testet, bekommt unter Umständen eine Fehlermeldung, weil der Daemon noch nicht bereit ist. Geduld beim ersten Start ist also angebracht – oder ein Healthcheck im Container, der den Zustand überwacht.

Stolpersteine und Fehlerursachen

Die häufigsten Probleme mit Nextcloud und ClamAV sind keine Viren, sondern Verbindungsfehler. Ein Klassiker ist die Meldung „No such file or directory“ beim Versuch, den Unix-Socket zu öffnen. Ursache ist fast immer ein falscher Pfad. Auf manchen Systemen liegt der Socket unter /var/run/clamav/clamd.ctl, auf anderen unter /run/clamav/clamd.ctl. Es lohnt sich, die Datei vorher mit ls zu suchen und den echten Pfad in die App einzutragen.

Daneben spielen Berechtigungen eine große Rolle. Der Socket gehört dem Benutzer clamav, während der Webserver-Prozess von Nextcloud als www-data läuft. Ohne passende Rechte kann der Webserver den Socket nicht öffnen, auch wenn der Pfad korrekt ist. Ein simples chgrp oder chmod auf den Socket löst das Problem, doch die Änderung muss nach einem Neustart von clamd nicht überleben. Schöner ist es, in der clamd.conf die Gruppe des Sockets anzupassen oder dem Nextcloud-Systembenutzer Mitglied der clamav-Gruppe zu machen.

Ein weiterer häufiger Fehler ist die falsche Konfiguration des Modus in der Nextcloud-App. Wenn man versehentlich „Executable“ statt „Daemon“ wählt und der Pfad zu clamscan nicht stimmt, bricht der Scan ab. Die App meldet dann keinen klaren Hinweis wie „Virenscan nicht möglich“, sondern der Upload läuft in einen Timeout. Gerade bei größeren Dateien ist das verwirrend, weil es sich zunächst wie ein Speicher-Problem anfühlt.

Nicht zuletzt sollte man an die Systemd-Unit von clamd denken. Wenn der Daemon während eines Updates der Virensignaturen neu startet, können laufende Scans abbrechen. Das ist kein Konfigurationsfehler, aber es erklärt manche Aussetzer. Wer solchen Schwankungen vorbeugen möchte, reserviert ClamAV eine eigene Zeitspanne für Updates oder setzt die Intervalle von freshclam so großzügig, dass der Update-Prozess nicht mit dem Tagesgeschäft kollidiert.

Leistung, Ressourcen und Skalierung

ClamAV ist ein anspruchsvoller Endpoint in Sachen Ressourcen. Der Speicherverbrauch von clamd kann schnell bei einem bis zwei Gigabyte liegen, denn die Signaturdatenbank wird komplett in den Arbeitsspeicher geladen. Dazu kommt die CPU-Last beim Entpacken und Untersuchen von Archiven. Auf einem schmalen Server, auf dem auch noch die Nextcloud-Datenbank und der Webserver laufen, macht sich das sofort bemerkbar. Wer das produktiv betreibt, sollte ClamAV auf einem eigenen Host oder zumindest in einem eigenen Container mit begrenzten Ressourcen isolieren.

Für den Betrieb mehrerer Nextcloud-Instanzen oder einer großen Instanz mit vielen parallelen Zugriffen empfiehlt sich eine eigene ClamAV-Instanz mit mehreren Threads. In der clamd.conf lässt sich mit Threads die Zahl der parallelen Scan-Aktivitäten erhöhen. Das kostet Speicher, führt aber zu einer besseren Auslastung der CPU-Kerne. Wer noch größer skaliert, kann hinter einem Load-Balancer mehrere clamd-Dienste auf verschiedenen Servern betreiben. Die Nextcloud-App kann dabei immer nur einen Endpunkt ansprechen, aber man kann die Last über verschiedene Nextcloud-Applikationsserver verteilen. Das wird allerdings nur in komplexeren Setup mit verteilten Diensten relevant.

Die Zugriffszeit auf Dateien steigt messbar, wenn jeder Upload gescannt wird. Das ist der Preis für die Sicherheit. Ein Vergleich: Ein Bild mit 2 MB Größe wird von clamd üblicherweise in wenigen Millisekunden geprüft. Bei einem 2 GB großen Video-Archiv kann die Prüfung dagegen mehrere Sekunden dauern. Gerade bei Uploads über die Weboberfläche kommt dabei das Gefühl auf, der Server hänge. In einigen Fällen ist es sinnvoll, sehr große Dateien von der Prüfung auszunehmen – sofern das Sicherheitskonzept das hergibt. Die App beziehungsweise clamd bieten dafür Größenlimits an.

Wartung, Monitoring und Virendefinitionen

Ein Virenscanner arbeitet im Verborgenen. Wenn er richtig funktioniert, fällt er gar nicht auf. Wenn er scheitert, äußert sich das oft nur in langsamen Uploads oder unscheinbaren Fehlermeldungen. Deshalb sollte man die Protokolle des ClamAV- Dienstes aktiv beobachten. Unter /var/log/clamav liegen die Logdateien von clamd und freshclam. Ein Blick hinein zeigt nicht nur Virenfunde, sondern auch abgebrochene Scans, falsche Socket-Pfade oder fehlgeschlagene Updates. Diese Dateien lassen sich nahtlos an eine zentrale Logverwaltung wie syslog-ng oder Grafana-Loki anbinden.

Freshclam aktualisiert die Signaturdatenbank standardmäßig mehrfach pro Tag. Das geschieht automatisch, aber man sollte das Ergebnis gelegentlich kontrollieren. Auf dem Prüfstand steht die Zeile Database updated in der freshclam.log oder eine Meldung über die aktuelle Signaturversion. Wenn dieser Update-Prozess nicht läuft, wird der Scanner von Tag zu Tag blinder, ohne dass es ein unmittelbares Alarmsignal gibt.

Für abgeschottete Netzwerke gibt es die Möglichkeit, eine eigene Signaturquelle aufzubauen. Ein zentraler Server lädt die Virendefinitionen per freshclam herunter, und die anderen Systeme beziehen sie von dort. Das reduziert die Last auf die öffentlichen ClamAV-Server und sorgt dafür, dass alle Instanzen denselben Datenbank-Stand haben. In Containern muss man dafür ein Volume aus dem zentralen Update-Verzeichnis einhängen oder die Konfiguration von freshclam entsprechend anpassen.

Ein interessanter Aspekt ist die Rolle der Nextcloud-eigenen Cron-Laufzeitumgebung. Die Antivirus-App arbeitet mit Background Jobs. Wenn Nextcloud in den Einstellungen auf den AJAX- oder Webcron-Modus gestellt ist, werden diese Jobs nicht immer vollständig abgearbeitet. Am Ende skippt das System den Virenscan bei manchen Dateien. In der Praxis sollte man also sicherstellen, dass Nextcloud über den System-Cron läuft. Das ist eine der einfachsten und wirkungsvollsten Optimierungen für ein verlässliches Antivirus-Fundament.

Die Grenzen von ClamAV

ClamAV ist ein hervorragender, beständig gepflegter Virenscanner für die Cloud. Aber er ist weder eine Echtzeit-Lösung noch ein Ersatz für einen Client-Virenscanner. Seine Stärke ist die Erkennung bekannter Schädlinge anhand von Signaturen und heuristischen Mustern. Sehr neue, gezielt entwickelte Malware kann er oft nicht abwehren. Auch verschleierte Dateien, die ihren Code erst nach dem Öffnen entfalten, sind für serverbasiertes Scannen schwierig zu erkennen. Die berüchtigten Office-Makroviren, die sich erst beim Dokumentenaufruf im Client aktivieren, lassen sich nicht allein durch ein serverseitiges Antivirenprogramm stoppen.

Wer eine Nextcloud-Instanz im Unternehmen betreibt, sollte deshalb weitere Ebenen einziehen: regelmäßige Sicherheitsupdates für den Server, eine Firewall, Fail2Ban gegen Brute-Force-Angriffe, eine strikte Vergabe von Zugriffsrechten und – wenn möglich – eine Endpoint-Security auf den Clients. Der Virenscanner auf dem Server ist eine sinnvolle, aber keine vollständige Lösung. Er funktioniert am besten, wenn ihn alle anderen Sicherheitsmaßnahmen unterstützen.

Dazu kommt die Frage des Timings. Die App prüft Dateien, wenn sie in die Cloud gelangen. Schon vorhandene Daten sind von dieser Prüfung ausgenommen, bis sie geändert oder erneut hochgeladen werden. Eine nachträgliche Infektion einer bereits abgelegten Datei – etwa durch einen Client mit Malware – bleibt unentdeckt. Für eine vollständige Virenprüfung des gesamten Datenbestands muss man entweder einen externen Cron-Job einrichten, der die Dateien nachträglich scannt, oder auf eine spezielle Enterprise-Lösung zurückgreifen.

Nextcloud Enterprise und Support-Fragen

Für Unternehmen, die auf einen geregelten Betrieb angewiesen sind, bietet die Nextcloud GmbH eine Enterprise-Edition mit erweitertem Support an. Die Antivirus-App ist in den unterstützten Paketen enthalten. Wer das offizielle Abo erwirbt, erhält Antworten auf Konfigurationsfragen und auf Probleme mit ClamAV aus erster Hand. Die Open-Source-Gemeinschaft kann dieses Angebot nicht vollständig ersetzen, auch wenn die Doku zu files_antivirus inzwischen recht ausführlich ist.

Die Entscheidung zwischen Community-Edition und Enterprise-Edition ist nicht nur eine Frage des Geldes. Wer selbst über das nötige Wissen im Betrieb verfügt, kommt mit der freien Version meist ebenso weit. Wer dagegen Compliance-Anforderungen erfüllen muss, zum Beispiel im Zusammenhang mit ISO-27001 oder der DSGVO, findet in einer unterstützten Version eine belastbare Grundlage. Der Virenscanner allein erfüllt keine Compliance, aber er ist ein Baustein, der bei Prüfungen erwartet wird.

Ein Blick auf die Alternativen

Open-Source-Anwender haben nicht viele praktikable Alternativen zu ClamAV. Andere Virenscanner, die unter Linux als Server-Variante verfügbar sind, stammen meist aus dem kommerziellen Bereich und erfordern Lizenzgebühren. Nextcloud selbst unterstützt offiziell keine andere Antivirus-Engine. Es gibt zwar Schnittstellen zu ICAP-Servern, die auch mit ClamAV arbeiten können, aber das ist ein eher exotischer Umweg. In der Praxis bleibt ClamAV die erste Wahl, wenn man eine selbstgehostete Nextcloud-Instanz mit offenen Werkzeugen betreibt.

Das bedeutet nicht, dass man auf eine weitere Schutzschicht verzichten muss. Ein Reverse-Proxy wie nginx kann zusätzlich HTTP-Anfragen auf schädliche Muster prüfen, eine Web Application Firewall kann Angriffe auf Anwendungsebene abwehren, und regelmäßige Backups schützen vor den Auswirkungen von Ransomware. Ein gut konfigurierter Virenscanner ergänzt diese Maßnahmen, ersetzt sie aber nicht. Wer sich dieser Reihenfolge bewusst ist, trifft die richtige Sicherheitsentscheidung für seine Cloud.

Fazit

Nextcloud und ClamAV sind eine solide, kosmetische und in der Praxis bewährte Kombination. Die Einrichtung erfordert anfangs etwas Geduld, aber sie lässt sich mit einfachen Linux-Mitteln bewerkstelligen und bringt eine spürbare Sicherheitsverbesserung für alle, die Dateien über die Cloud teilen. Die wichtigsten Voraussetzungen sind ein sauber konfigurierter clamd, die richtige Socket- oder TCP-Verbindung und ein Auge auf die Virendefinitionen. Dann arbeitet der Scanner zuverlässig im Hintergrund – genauso, wie man es von einem guten Schutzwall erwartet.

Wer an dieser Stelle mit dem Baukasten beginnt, erlebt vielleicht eine kleine Überraschung: Eine Open-Source-Cloud, die ihre Dateien selbst prüft, fühlt sich einem kommerziellen Angebot in nichts nach. Im Gegenteil: Die Transparenz darüber, wer wann welchen Datenstrom prüft, ist ein Wert, den man von einem proprietären Service kaum bekommt. ClamAV mag nicht perfekt sein, aber es ist ein ehrbarer und effektiver Begleiter für alle, die ihre Nextcloud um einen Virenscanner erweitern wollen.