Es gibt keine Viren unter Linux – leider stimmt die Aussage schon seit Jahren nicht mehr, sodass auch Linux-Systeme einen Malware-Schutz vertragen. Dieser Artikel stöbert in der Softwarekiste nach brauchbaren Produkten, die ohne großen Aufwand und Kosten den Virenschutz verbessern. Dabei gehen wir sowohl auf Klassiker wie ClamAV als auch auf kommerzielle Produkte ein.
Die Programmierer von Schadsoftware erreichen deutlich mehr potenzielle Opfer, wenn sie ihre Produkte für Windows entwickeln und vertreiben. Entsprechend findet sich im Testbericht der Stiftung Warentest aus der Ausgabe März 2024 kein einziges Antivirenprodukt für Linux. Damit ist das freie Betriebssystem aber nicht automatisch sicher – Viren, Würmer und Trojaner sind unter Linux zwar weniger verbreitet als unter Windows, stellen aber dennoch eine Gefahr dar.
Auf den folgenden Seiten stellen wir deshalb Projekte vor, die mit wenig Aufwand den eigenen Linux-Server mit einem Basisschutz gegen Malware ausstatten. Wenn dieser Server als File- oder Mailserver fungiert, erstreckt sich der Schutz indirekt sogar auf die angeschlossenen (Windows-)Clients. Wer seine Linux-Boxen bereits mit dem Basisschutz ausstattet, kann sie mit einem Security-Scanner zusätzlich noch auf Schwachstellen abchecken. Und für Umgebungen mit hohem Sicherheitsniveau darf ein "Security Information and Event Management"-System nicht fehlen, das einer der folgenden Abschnitte kurz anschneidet.
Server mit ClamAV schützen
Der Virenscannern ClamAV [1] ist wohl jedem Linux-Admin ein Begriff. Die Software existiert seit 2001 und schützt Linux- und Windows-Computer. Seit 2013 gehört der Klassiker zum kommerziellen Netzwerkausrüster Cisco, was dem quelloffenen Charakter des Projekts aber nicht geschadet hat.
Die Programmierer von Schadsoftware erreichen deutlich mehr potenzielle Opfer, wenn sie ihre Produkte für Windows entwickeln und vertreiben. Entsprechend findet sich im Testbericht der Stiftung Warentest aus der Ausgabe März 2024 kein einziges Antivirenprodukt für Linux. Damit ist das freie Betriebssystem aber nicht automatisch sicher – Viren, Würmer und Trojaner sind unter Linux zwar weniger verbreitet als unter Windows, stellen aber dennoch eine Gefahr dar.
Auf den folgenden Seiten stellen wir deshalb Projekte vor, die mit wenig Aufwand den eigenen Linux-Server mit einem Basisschutz gegen Malware ausstatten. Wenn dieser Server als File- oder Mailserver fungiert, erstreckt sich der Schutz indirekt sogar auf die angeschlossenen (Windows-)Clients. Wer seine Linux-Boxen bereits mit dem Basisschutz ausstattet, kann sie mit einem Security-Scanner zusätzlich noch auf Schwachstellen abchecken. Und für Umgebungen mit hohem Sicherheitsniveau darf ein "Security Information and Event Management"-System nicht fehlen, das einer der folgenden Abschnitte kurz anschneidet.
Server mit ClamAV schützen
Der Virenscannern ClamAV [1] ist wohl jedem Linux-Admin ein Begriff. Die Software existiert seit 2001 und schützt Linux- und Windows-Computer. Seit 2013 gehört der Klassiker zum kommerziellen Netzwerkausrüster Cisco, was dem quelloffenen Charakter des Projekts aber nicht geschadet hat.
Die Installation und Bedienung sind einfach erklärt: Software über die Paketverwaltung installieren, Signaturen laden und die Festplatte scannen. Am Beispiel von Rocky Linux 9 ist dies in drei Zeilen erledigt:
dnf install clamd clamav
freshclam
clamscan /home
Für die Einrichtung von ClamAV gibt es zahlreiche Tutorials im Internet. Als Goodie gibt es mit ClamTk (Bild 1) und ClamWin sogar grafische Frontends. Richten wir die Aufmerksamkeit auf zwei wenig genutzte Features: inoffizielle Signaturen und Echtzeitschutz.
Aktuelle Signaturen beziehen
Das freshclam-Kommando aus dem letzten Listing greift auf vordefinierte Signaturserver zu und holt die letzten Änderungen in die lokale Datenbank. Dies ist jedoch nicht die einzige Quelle für Virenmuster. Anbieter wie URLhaus und Sanesecurity bieten zusätzliche Signaturen an. Wer nicht von Hand die verschiedenen Provider abklappern möchte, greift auf das etwas angestaubte Paket ClamAV Unofficial Signature Updater [2] oder das Tool Fangfrisch [3] zurück, die sich genau darauf spezialisiert haben. Fangfrisch holt die Community-Signaturen und verfüttert sie an freshclam, wo sie letztendlich ClamAV erreichen.
Der Dienst kommt über PIP, den Paket-Installer von Python, auf den eigenen Linux-Rechner. Per Konfigurationsdatei aus Listing 1 erfährt Fangfrisch, in welchem Anbieterozean es fischen soll. Anschließend erfährt freshclam noch, dass es eine neue Pattern-Quelle gibt:
Nicht alle Anbieter von AV-Signaturen sind kostenlos. Beispielsweise erwartet SecuriteInfo für seine Mühe einen jährlichen Obolus. Der kostenlose Basis-Account rückt die Signaturen nur zeitverzögert heraus.
In Echtzeit auf Virensuche
Mit allen Virenmustern im Bauch kann ClamAV den Datenbestand sogar in Echtzeit überprüfen. Das Feature nennt sich On-Access-Scanning und der Name ist Programm: Beim lokalen Zugriff auf eine Datei muss ClamAV vorher seine Zustimmung geben. Erst danach lässt sich die Datei öffnen.
Für die Implementierung des Realtime-Schutzes gibt es zwei Pfade: den Clamonacc-Scanner und das ClamFS-Dateisystem. Beide Tools arbeiten eng mit dem Dienst Clamd zusammen. Clamd hält die Virendefinitionen und prüft alles, was Clamonacc und ClamFS ihm vorwerfen.
Clamonacc hält Kontakt zum Kernel und wartet auf Informationen über gewünschte Dateizugriffe. Die beiden Dienste kommunizieren über einen Unix-Socket oder über eine TCP/IP-Verbindung.
Für die Konfiguration sind zwei Punkte entscheidend: Nehmen Sie unbedingt den ClamAV-User vom Scan aus, um Endlosschleifen zu vermeiden, und scannen Sie nur ausgewählte Bereiche und nicht alles unterhalb des ”/”-Verzeichnisses.
Beide Dienste nutzen die gleiche Konfigurationsdatei "/etc/clamd.d/scan.conf". Mit den folgenden Settings überwacht ClamAV die Home-Verzeichnisse der User und verhindert bei einem Virenverdacht den Zugriff:
LocalSocket /run/clamd.scan/clamd.sock
OnAccessExcludeUname clamscan/
OnAccessIncludePath /home
OnAccessPrevention yes
Starten Sie beide Dienste neu, wobei Clamd einige Sekunden benötigt, um alle AV-Signaturen in den Arbeitsspeicher zu laden:
systemctl restart clamd@scan
systemctl restart clamonacc
ClamFS ist ein Dateisystem im User-Space und arbeitet etwas anders als Clamonacc. Alle Zugriffe auf das von ClamFS gemountete Dateisystem gehen zuerst durch den Virenscanner, der seine Zustimmung geben muss.
Die Konfiguration im XML-Format benötigt den Socket zu clamd, ein Quellverzeichnis (root) und ein Verzeichnis, in dem das Quellverzeichnis mit AV-Schutz in das Dateisystem eingehängt werden soll (mountpoint). Eine minimale Konfigurationsdatei "demo.xml" entnehmen Sie Listing 2. Zugriffe auf Dateien im mountpoint-Verzeichnis stehen nach dem Start von "clamfs demo.xml" unter dem Schutz von ClamAV. Dies gilt jedoch nicht für den root-Ordner, der keinen Virenschutz genießt.
Listing 2: Konfigurationsdatei für ClamFS
<clamfs>
<clamd socket="/run/clamd.scan/clamd.sock" />
<filesystem root="/store/upload" />
<filesystem mountpoint="/var/www/upload/" />
</clamfs>
Ein abschließender Test darf natürlich nicht fehlen. Laden Sie als regulärer Linux-Anwender die Eicar-Testdatei und platzieren Sie sie für clamonacc in Ihr Home-Verzeichnis oder für ClamFS unter "/var/www/upload" ab:
wget --output-document=~/eicar.txt \
https://secure.eicar.org/ eicar.com.txt
Der Download sollte anstandslos funktionieren und die Datei im Home-Verzeichnis ablegen. Erst beim Zugriff darauf wird ClamAV oder ClamFS aktiv und verhindert die Leseoperation mit einem schlichten "Operation not permitted". Gleichzeitig erfolgt ein Eintrag im Journal, dass die Eicar-Signatur angeschlagen hat. Dieses Verhalten unterscheidet sich von dem anderer Virenscanner, die beim leisesten Verdacht sofort alles löschen oder unter Quarantäne stellen.
Da ClamAV in den allermeisten Repositories verfügbar ist, ist der Basisschutz über den Paketmanager mit wenigen Befehlen eingerichtet und wirksam. Die jahrzehntelange Entwicklung von Malware hat allerdings noch weitere Schadprogramme wie Rootkits hervorgebracht.
Bild 1: Der grafische Aufsatz "ClamTk Virus Scanner" ist minimalistisch, enthält aber die wichtigsten Funktionen.
Keine Angst vor Rootkits
Rootkits sind kleine Softwareschnipsel, die sich unbemerkt im System verstecken und Prozesse oder Dateien verbergen. Beispielsweise kann ein Rootkit den ps-Befehl so verändern, dass er bestimmte Einträge aus der Prozessliste verschleiert. In einfacher Form lässt sich dieses Rootkit mit einem Alias konstruieren:
Das Alias-Kommando filtert die Ausgabe und entfernt jede Zeile, die das Wort "virus" enthält. Im Hintergrund läuft der Virenprozess unbemerkt weiter und treibt sein Unwesen.
Das ps-Rootkit ist nicht sehr wirksam, da es sich mit Befehlen wie "top" oder einem Blick in das ”/proc”-Dateisystem leicht umgehen lässt. Geschickte Rootkits platzieren sich im Kernel und verbergen dort die Existenz des Virenprozesses.
Hier kommt der Rootkit-Hunter [4] ins Spiel und durchstöbert den Linux-Rechner nach etwa 80 verschiedenen Rootkits und Auffälligkeiten in den vorhandenen Systemkommandos. So bringen Sie den Jäger auf das System:
dnf install rkhunter
rkhunter --update
rkhunter --check --skip-keypress
In unserem Beispiel hat rkhunter angeschlagen und "Opyum kit component" gefunden. Ein Blick in die Logdatei verrät sogleich, dass es sich um die Datei "/bin/i" handelt. Leider ist für rkhunter schon die Existenz dieser Datei einen Alarm wert, auch wenn es sich in diesem Fall nur um einen Softlink zu "/bin/grep" handelt.
Rkhunter verfügt zwar nicht über einen Echtzeitschutz, dafür aber eine cron-Funktion. Beim Aufruf von rkhunter --cronjob verzichtet das Tool auf jegliche Eingabe sowie Farbgestaltung und schickt die Ausgabe in die Logdatei. Die letzten zwanzig Zeilen enthalten die Zusammenfassung und berichten bei "Possible rootkits", ob das System infiziert ist.
Mittelweg Linux Malware Detect
Einen Mittelweg zwischen Rootkit und Antivirus geht "Linux Malware Detect" (LMD) [5]. Das Projekt sammelt Informationen von verschiedenen Intrusion-Detection-Systemen und baut daraus eine Signaturdatenbank auf. Die Software liegt in kaum einem Repository als fertiges Paket vor, sodass der Tarball von GitHub zur Installation herhalten muss.
Da LMD nur aus Bash- und Perl-Skripten besteht, bedarf es keines Compilers:
Der systemctl-Befehl startet den Monitor-Modus, der den angemeldeten Benutzern auf die Finger schaut. Ein prüfender Blick ins Dateisystem gelingt mit maldet --scan-all /. Nach dem Start gibt sich der Scanprozess die niedrigste CPU- und I/O-Priorität, um das System nicht auszubremsen.
Der Vorgang ist erstaunlich schnell abgeschlossen, da LMD nur Dateien prüft, die nicht dem root-User gehören. Wer alle Dateien abchecken möchte, kann in der Konfigurationsdatei "conf.maldet" den Schalter "scan_ignore_root" auf null setzen und so den gesamten Datenbestand prüfen.
Beim Scannen großer Bereiche des Dateisystems fällt auf, dass der maldet-Prozess eher langsam vorankommt. Für ein beschleunigtes Verfahren kann LMD mit ClamAV zusammenarbeiten. Dazu übergibt Maldet seine Signaturen an freshclam und beauftragt den Clamscan-Prozess oder den Clamd-Server mit der Dateiprüfung. Die notwendigen Settings sind in der Konfigurationsdatei gut dokumentiert. Der AV-Scan verschnellert sich allerdings nur, wenn der Clamd-Server über ausreichend CPU-Leistung und Arbeitsspeicher verfügt.
In Bild 2 hat LMD eine Malware im Verzeichnis des Webservers entdeckt. Standardmäßig gibt es nur einen Alarm und den Hinweis, wie diese Datei in die Quarantäne wandern könnte.
Bild 2: Linux Malware Detect hat eine Schadsoftware entdeckt und gibt direkt den Hinweis, die Datei in die Quarantäne zu verschieben.
Kommerzieller Schutz: ServerProtect
Abseits der quelloffenen Software springt Trend Micro ein und liefert mit dem "ServerProtect for Linux" einen AV-Scanner mit Echtzeitschutz. Neugierige erhalten kostenlos eine einmonatige Lizenz zum Ausprobieren. Für die Konfiguration ist automatisch ein Webserver dabei, der sich ohne viel Einarbeitung bedienen lässt. Alle Aktionen des Tools lassen sich per Web-UI und per Kommandozeile triggern.
Der Scheduled-Scan überprüft periodisch ausgewählte Ordner, und der Manual-Scan springt bei Bedarf ein. Für den Real-Time-Scan liefert Trend Micro ein Kernelmodul mit, das für die Distributionen von Red Hat und SuSE vorkompiliert ist. Da die fertigen Module eher ältere Kernel bedienen, muss bei einem aktuellen Linux der Compiler ran. Prinzipiell funktioniert das mit jedem Kernel, aber praktisch klemmt es an verschiedenen Stellen: Entweder wird die Distribution nicht erkannt oder dubiose Compilerfehler versperren den Weg zum Kernelmodul. Und bei aktiviertem Secure-Boot erwartet der Kernel auch noch eine kryptografische Signatur des Moduls, bevor der Echtzeit-Scan beginnen kann.
Wer den Weg zum funktionierenden Kernelmodul durchläuft, wird mit dem Real-Time-Scanner belohnt. Für alle anderen bleiben immer noch der Scheduled Scan und der Manual Scan (Bild 3). Ein Signatur-Update ist unkompliziert und verläuft entspannt im Hintergrund. Bei der Dokumentation macht ServerProtect aber einen eher altbackenen Eindruck: Die Installationsschritte benutzen die Befehle chkconfig und initd, die viele Linux-Distributionen schon vor mehr als einem Jahrzehnt durch systemd ersetzt haben. Und Informationen über Signaturen eines Kernelmoduls sucht man vergebens.
Bild 3: Trend Micro ServerProtect richtet sich an zahlende Kunden und lässt sich bequem per Web-GUI konfigurieren.
Die Zielgruppe sind offensichtlich nicht einzelne Desktopcomputer, sondern Server. Wer den Virenschutz seiner Serverfarm zentral verwalten möchte, kann die ServerProtect-Instanzen mit dem "Control Manager" oder "Apex Central" verwalten. Ironischerweise sind diese Softwareprodukte nur für Windows verfügbar.
Trend Micro lässt sich seinen Schutz ordentlich bezahlen, bietet dafür aber eine solide Virenabwehr mit einer komfortablen Webseite zur Konfiguration. Bei den Kosten hält sich der Hersteller zurück und überlässt die Preisgestaltung seinen Partnern.
Noch mehr Sicherheit
Die Liste spannender Projekte ist noch lange nicht zu Ende, aber ihre Wirkungsbereiche überschneiden sich teilweise. Da wären die Tools zur Integritätsprüfung von Dateien: Tripwire, Integrit und AIDE. Sie erstellen von jeder Systemdatei eine Prüfsumme und speichern diese in einer Datenbank. In regelmäßigen Abständen wiederholen sie den Vorgang und vergleichen die aktuelle Prüfsumme mit der vorherigen. Stimmen die Werte nicht überein, dann hat sich etwas am Dateiinhalt geändert. Ob es sich dabei um Malware oder ein Update handelt, muss der Admin beurteilen.Einen anderen Weg gehen Security-Auditoren wie Lynis, Trivy oder OpenVAS. Sie vergleichen Softwarestände und Einstellungen des vorliegenden Linux-Systems mit Best Practices und melden Abweichungen. Lynis ist nach seinem Scan so hilfreich und gibt konkrete Empfehlungen wie beispielsweise: Determine if protocol 'rds' is really needed on this system.
Wazuh als Open-Source-SIEM
Mit Wazuh endet das Mal-eben-installieren-Prinzip, denn hierbei handelt es sich um eine ausgewachsene "Security Information and Event Management"-Plattform. Die Grundidee: Auf jedem Endgerät läuft ein Agent, der an den Wazuh-Server berichtet. Der Server analysiert die Informationen, erstellt daraus eine Übersicht und kann die Sicherheitslage der Infrastruktur beurteilen.
Für einen ersten Eindruck oder eine kleine Umgebung stellt Wazuh eine virtuelle Maschine zur Verfügung [6]. Diese enthält alle Dienste und präsentiert sich nach dem Bootvorgang unter "https://<Server-IP-Adresse>/”. Ohne Agenten sind die Webseiten jedoch weitgehend leer. Die Schaltfläche "Deploy new agent" zeigt für verschiedene Betriebssysteme und Distributionen, wie die Agentensoftware auf die Clients gelangt.
Nach dem Ausrollen der Agenten passiert zunächst nichts. Die Nutzung von Wazuh erfordert Geduld, da die Agenten zeitgesteuert ihre Malware- und Integritätsprüfungen durchführen. Nach und nach füllen sich die Dashboards auf der Wazuh-Webseite und liefern Hinweise zum Gesundheitszustand. In Bild 4 hat der Agent einige Schwachstellen erkannt und gemeldet.
Bild 4: Wazuh sammelt die Berichte aller Agenten und erhält so einen Gesamteindruck der Sicherheitslage.
Wazuh bezeichnet sich selbst als "The Open Source Security Platform" und geht weit über den Basisschutz hinaus. Der Fokus von Wazuh liegt auf der ganzheitlichen Betrachtung aller Endgeräte und nicht auf dem Malwareschutz eines einzelnen Rechners.
Antimalware-Tools für Linux
ClamAV
Linux Malware Detect
rkhunter
Trend Micro Server Protect
Untersuchte Version
1.4.0
1.6.5
1.4.6
3.0
Verfügbar seit
2001
2009
2006
2005
Geschrieben in
C/C++
Shell/Perl
Shell/Perl
-
Komplexität bei der Installation
einfach
gering
einfach
hoch
Komplexität bei der Nutzung
einfach
mittel
mittel
einfach
Echtzeitscan
✓
✓
—
✓
Dokumentation
+
+
+
++
Open Source
GPLv2
GPLv2
GPLv2
nein
Native / Docker
✓ / ✓
✓ / —
✓ / —
✓ / —
Kommerzieller Support
✓
—
—
✓
Fazit
Auch wenn die fiesen Viren hauptsächlich Microsoft-Systeme angreifen, ist Linux damit nicht automatisch aus dem Schneider. Die geringere Anzahl an Malware passt zur überschaubaren Auswahl an AV-Produkten. Die erste Anlaufstelle ist ClamAV. Es ist für praktisch jede Distribution erhältlich und beschnüffelt seit über 20 Jahren den lokalen Datenbestand. Wer sich vor Rootkits schützen will, lässt den Rootkit-Hunter oder Linux Malware Detect regelmäßig seine Systeme durchforsten. Der nächste Schritt ist ein einheitliches Schutzniveau auf allen Rechnern mit einer Sicherheitsplattform wie beispielsweise Wazuh.