ClamAV ist ein Open-Source-Antivirenprogramm, das sich unauffällig im Hintergrund installiert und Ihren Server vor Viren, Trojanern und Malware schützt. Es wird hauptsächlich unter Linux eingesetzt – beispielsweise unter Debian, CentOS und RHEL – insbesondere, wenn Sie einen schlanken Scanner für Benutzerverzeichnisse über FTP, Samba, Websites oder E-Mail-Server benötigen. Die Einrichtung kann anfangs etwas kompliziert erscheinen, da Sie EPEL-Repositories verwalten, Konfigurationsdateien anpassen und einige Befehle im Terminal ausführen müssen. Ist dies jedoch erledigt, verfügen Sie über ein zuverlässiges Tool, das Dateien prüft, im Hintergrund läuft und Ihren Server überwacht.
Wer schon einmal versucht hat, ein Antivirenprogramm unter Linux zu installieren, weiß, dass es nicht so einfach ist, wie nur auf „Weiter“ zu klicken, oder? Man muss zusätzliche Paketquellen hinzufügen, systemd-Dienste einrichten und Updates manuell planen. Die gute Nachricht: Nach der Konfiguration läuft es in der Regel recht stabil, und Scans oder Updates lassen sich problemlos automatisieren. Allerdings kann es bei manchen Konfigurationen vorkommen, dass das erste Update oder der erste Scan hängen bleibt oder Fehler ausgibt – das ist völlig normal. Linux und seine Paketquellen sind nicht immer optimal synchronisiert, daher sind Geduld und etwas Ausprobieren oft Teil des Prozesses.
Installation und Konfiguration von ClamAV auf CentOS/RHEL
Installation der ClamAV-Pakete
Hier wird es etwas knifflig. ClamAV ist nicht im Standard-Repository enthalten, daher müssen Sie zuerst das EPEL-Repository hinzufügen. Das liegt daran, dass CentOS und RHEL die Basis-Repositories recht schlank halten und ClamAV in EPEL (Extra Packages for Enterprise Linux) enthalten ist. Führen Sie dazu folgenden Befehl aus:
# yum install epel-release -y
Sobald das installiert ist, können Sie mit der eigentlichen ClamAV-Konfiguration fortfahren. Anstatt nur das Hauptpaket zu installieren, benötigen Sie einige weitere Pakete, damit alles reibungslos funktioniert, insbesondere wenn Sie Systemd-Dienste und andere Prozesse im Hintergrund ausführen möchten. Der Befehl lautet wie folgt:
# yum -y install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd
Unter CentOS 8 oder neueren Versionen ist möglicherweise die Verwendung dnfvon anstelle von vorzuziehen yum. Gleiches Prinzip, nur anderer Befehl.
ClamAV konfigurieren
Nach der Installation müssen Sie die Standardkonfigurationen anpassen. Neuinstallationen enthalten standardmäßig Beispielkonfigurationen, die nur wenig Funktion bieten. Diese müssen Sie daher bereinigen. Löschen oder kommentieren Sie beispielsweise die Zeile „Example “ in der Datei „/etc/clamd.d/scan.conf “ aus.
# sed -i -e "s/^Example/#Example/" /etc/clamd.d/scan.conf
Öffnen Sie anschließend diese Datei mit Ihrem bevorzugten Editor ( nanoz. B.vi ) und suchen Sie nach dieser Zeile:
LocalSocket /run/clamd.scan/clamd.sock
Entfernen Sie das Kommentarzeichen ( # ), sodass es so aussieht. Es mag etwas ungewöhnlich erscheinen, aber über diese Socket-Datei kommuniziert der Daemon mit dem restlichen System. In manchen Konfigurationen möchten Sie möglicherweise auch die Protokollierung, die maximale Anzahl an Verbindungen oder auszuschließende Verzeichnisse festlegen. Die Beschreibung in der Konfigurationsdatei selbst ist recht detailliert; schauen Sie sich also dort um, falls Sie weitere Einstellungen anpassen müssen.
Virensignaturen auf dem neuesten Stand halten
ClamAV ist wenig nützlich, wenn die Virendefinitionen veraltet sind. Der Befehl `freshclam` aktualisiert die Datenbanken und sollte regelmäßig ausgeführt werden. Sichern Sie zunächst die ursprüngliche Konfiguration:
# cp /etc/freshclam.conf /etc/freshclam.conf.bak
Entfernen Sie anschließend alle Beispielzeilen auf ähnliche Weise:
# sed -i -e "s/^Example/#Example/" /etc/freshclam.conf
Führen Sie das Update manuell als Startschritt aus oder planen Sie es später per Cronjob ein:
# freshclam
Oder, falls es alle paar Stunden im Hintergrund laufen soll, starten Sie es als Daemon:
# freshclam -d
Der eigentliche Trick besteht jedoch darin, einen systemd-Dienst für freshclam zu erstellen. Dadurch wird automatisch nach neuen Updates gesucht. Speichern Sie diese Datei unter /usr/lib/systemd/system/freshclam.service mit folgendem Inhalt:
[Unit] Description=FreshClam Daemon After=network.target [Service] Type=simple ExecStart=/usr/bin/freshclam -d -c 4 Restart=on-failure PrivateTmp=true RestartSec=10s [Install] WantedBy=multi-user.target
Laden Sie anschließend systemd neu und starten Sie diesen Daemon:
# systemctl daemon-reload # systemctl start freshclam.service # systemctl enable freshclam.service # systemctl status freshclam.service
Gleiches gilt für den Haupt-ClamAV-Daemon – Sie benötigen einen systemd-Dienst, damit er beim Neustart automatisch startet. Wahrscheinlich möchten Sie ihn aktivieren, damit er nach dem Serverstart aktiv wird.
# systemctl start clamd.service # systemctl enable clamd.service
Virenscans ausführen
Nachdem alles installiert und betriebsbereit ist, können Sie nun tatsächlich Scans durchführen. Um das Verzeichnis Ihrer Website oder einen beliebigen Ordner zu überprüfen, führen Sie einfach folgenden Befehl aus:
# clamscan --infected --remove --recursive /var/www/
Dadurch wird rekursiv gescannt, infizierte Dateien werden gelöscht und die gefundenen Dateien werden angezeigt. Falls das Löschen zu aggressiv ist, können verdächtige Dateien stattdessen an einen anderen Ort verschoben werden.
# clamscan --infected --recursive --move=/tmp/clamscan /var/www
Verdächtige Dateien werden nach /tmp/clamscan verschoben. Scan-Details können Sie mit der Option –log protokollieren.
# clamscan --infected --recursive --move=/tmp/clamscan --log=/var/log/clamscan.log /var/www
Wenn Sie bestimmte Verzeichnisse ausschließen möchten – beispielsweise das Admin-Panel – können Sie –exclude-dir verwenden :
# clamscan -i --recursive --move=/tmp/clamscan --log=/var/log/clamscan.log --exclude-dir="/var/www/administrator" /var/www
Und ehrlich gesagt, ist es gar nicht so schwer, einen Cronjob für diese Scans einzurichten – ein, zwei Zeilen in der Datei `/etc/crontab` genügen. Wer lieber mit grafischen Oberflächen arbeitet, kann Winhance verwenden. Aber ja, für die meisten Administratoren reicht das Scannen über die Kommandozeile völlig aus.
Ach ja, und es gibt auch eine grafische Benutzeroberfläche namens ClamTk, falls Ihnen das Klicken auf Schaltflächen anstelle von Terminalbefehlen eher zusagt.