$ sudo clamscan -r -i -l clamscanreport.txt eicar.com
Anschließend finden Sie die Meldungen von Clamscan sowohl in der Reportdatei clamscanreport.txt als auch im Terminal. Generell kennzeichnet der Report eine infizierte Datei mit dem String FOUND. Zeigt der Test dieses Ergebnis, funktioniert der Scanner wie erwartet.
Clamd
Das Paket clamav-daemon enthält das Programm clamdscan, das mit Clamscan aus dem Client-Paket zusammenarbeitet. Die Konfiguration des Daemons erfolgt über die Datei /etc/clamav/clamd.conf. Hinweise dazu finden Sie via man clamd.conf. Der Clam-Daemon lässt sich derzeit nicht auf dem RasPi 1 installieren, da dieser zu wenig Hauptspeicher mitbringt: Der Daemon lädt beim Booten die Virendatenbank ins RAM, was für einen erheblich schnelleren Scan-Prozess sorgt.
Ein Virenscan mit dem Kommandozeilentool clamdscan starten Sie mit clamdscan -l clamdscanreport.txt eicar.com. Das Tool führt den Scan als Nutzer clamav aus, der in der Konfigurationsdatei /etc/clamav/clamd.conf hinterlegt ist. Der Nachteil: Die Software kann deswegen viele Dateien wegen fehlender Rechte nicht prüfen.
SSH-Konfiguration
Ein zentrales Element für die Funktion des hier vorgestellten Konstrukts ist die SSH-Konfiguration. Wie beschrieben dient der Benutzer clamavsc für die Virenscans. Der RasPi initiiert diese aus der Crontab dieses Users. Da die Skripte die Scans remote auf den Clients starten, benötigen sie ein Login ohne Passwort. Dazu kommt eine Public-Key-Authentifizierung zum Einsatz.
Für den Benutzer clamavsc generieren Sie auf dem RasPi öffentliche Schlüssel für das Login ohne Passwort auf den Clients; der Kasten “SSH-Public-Key” beschreibt die notwendigen Schritte im Detail. Aufgrund der unterschiedlichen Dateirechte auf den Clients und Servern kann der Benutzer clamavsc nicht alle Dateien lesen. Ein “Fullscan” benötigt einen privilegierten Benutzer. Eine Verteilung der Public Keys für den Nutzer root wäre zwar denkbar, stellt jedoch ein Sicherheitsrisiko dar.
Eine weitere Möglichkeit, Dateien trotz fehlender Rechte zu lesen, bietet das Verteilen des Public Keys von clamavsc in die Datei authorized_keys des jeweiligen Nutzers. Das ermöglicht clamavsc einen SSH-Login über den gewünschten Account ohne Passwortabfrage – eine Grundbedingung für den unbeaufsichtigten Batch-Betrieb. In den Konfigurationsdateien, wie etwa in der clammailscan.conf, geben Sie als Parameter für den Benutzer dann nicht clamavsc an, sondern den Nutzer, für den ein Scan bestimmter Verzeichnisse ausgeführt werden soll.
SSH-Public-Key
Um einen SSH-Public-Key zu generieren und auf die Systeme zu verteilen, tippen Sie als Nutzer clamavsc zunächst einmal ssh-keygen -t rsa ein. Die folgenden Abfragen bestätigen Sie mit der Eingabetaste. Unter ~/.ssh/ finden Sie danach die Datei id_rsa.pub. Diese gilt es, auf allen Clients zu verteilen, auf denen Sie die Virenscan-Skripte einsetzen möchten (Listing 5, Zeile 2). @KL:Danach schreiben Sie auf dem Client den übertragenen Public Key in die Datei authorized_keys (Zeile 4). Prüfen Sie anschließend, ob ein Login vom RasPi auf dem Client ohne Passwort funktioniert (Zeile 6). Treten dabei Probleme auf, wiederholen Sie den Versuch mit aktiviertem Verbose-Mode (Zeile 7). Der SSH-Client gibt damit genaue Auskunft über die Gründe des Scheiterns.
Für das korrekte Funktionieren der Virenskripte im Batch-Betrieb gilt es, eine weitere Anpassung in der Datei /etc/ssh/ssh_config auf allen Clients vorzunehmen. Setzen Sie darin den Parameter StrictHostKeyChecking auf no. Diese Änderung unterdrückt den Abfrage-Prompt, der ansonsten den Batch-Betrieb im Hintergrund verhindern würde.
Listing 5
### RasPi: id_rsa.pub an Clients verteilen $ scp /home/clamavsc/.ssh/id_rsa.pub clamavsc@AV-Client: /home/clamavsc/.ssh/id_rsa_PI.pub ### Client: Public Key in die authorized_keys übertragen $ cat /home/clamavsc/.ssh/id_rsa_PI.pub >> /home/clamavsc/.ssh/authorized_keys ### Vom RasPi aus auf dem Client anmelden $ ssh clamavsc@AV-Client $ ssh -vvv clamavsc@AV-Client
Die Skripte im Detail
Vor dem ersten Virenscan mit dem RasPi gilt es, noch essenzielle Konfigurationen anzupassen. Das Archiv clamavsc_pi_install.tar.gz für den RasPi enthält das PHP-Skript virusstatmail.php, das dem dort eingetragenen Benutzer bei einem Virenfund eine Mail sendet. Im Skript aus Listing 6 ergänzen Sie die benötigten Parameter nach Ihren Vorgaben.
Listing 6
$from = "<mailadress sender>";
$to = "<mailadress receipient>";
$subject = "Viruses found on host - $vinfecthost";
/* File for mailbody */
$body = implode("", file("$argv[1]"));
$host = "<ssl smtp provider server name>";
$port = "<ssl port number>";
$username = "<username provider login>";
$password = "<password provider login>";
Nun geht es an grundlegende Anpassungen in den Skripten start_clamav_scripts.sh und clamscan.sh. Der Tarball enthält die zwei Beispieldateien ./etc/clamscan.conf und ./etc/clammailscan.conf mit der genauen Beschreibung der Parameter. Eigene Konfigurationsdateien für spezielle Anforderungen nutzen Sie mit dem Aufruf aus Listing 7. Das Auslesen der Parameter übernimmt die Funktion ./funct/extractconf. Alle verwendeten Konfigurationsdateien verteilen Sie vom RasPi aus auf allen Clients.
Listing 7
$ ./start_clamscan_scripts.sh -s clamacan.sh -f clamscan.conf





