Startseite>Virenscans zentral steuern und verwalten
Aus Raspberry Pi Geek 05/2015

Virenscans zentral steuern und verwalten (Seite 2)

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 [email protected]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 [email protected]AV-Client
$ ssh -vvv [email protected]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

Alle Skripte wurden mit einer Trace-Funktion ausgestattet, die sämtliche Vorgänge genauestens protokolliert (Abbildung 1). Das hilft bei der Fehlersuche, speziell nach Anpassungen in den Skripten. Die Traces finden sich im Unterverzeichnis trace/. Wünschen Sie keinen Trace-Output, so ändern Sie in der Datei ./etc/trace.conf den Parameter traceon in traceoff.

Abbildung 1: Der Trace-Auszug des Skripts »start_clamav_scripts.sh« zeigt detailliert sämtliche Schritte sowie die Auswertung.

Abbildung 1: Der Trace-Auszug des Skripts »start_clamav_scripts.sh« zeigt detailliert sämtliche Schritte sowie die Auswertung.

Aufräumarbeiten im Software-Verzeichnis übernimmt die Funktion ./funct/cleanup, Konfigurationsparameter definiert ./etc/cleanup.conf. Entsprechend der Tagesangabe werden Logfiles und Traces gelöscht, die älter als die definierte Tageszahl sind. Die in ./etc/cleanup.conf festgelegten Parameter beziehen sich auf Dateien in den Unterverzeichnissen log/ und trace/. Die Datei ./etc/main.inc enthält die meisten der in den Skripten benötigten Variablen.

Das Skript clamscan.sh schreibt die Virenreports (Abbildung 2) in das Verzeichnis clamavreport/ auf dem jeweiligen Client. Diesen Report stellt das PHP-Skript virusstatmail.php dem darin eingetragenen Mail-Account zu. Sie sollten sprechende Namen für die Reports definieren, sodass Sie die Meldungen der Clients voneinander unterscheiden können. Das erledigen Sie in den Konfigurationsdateien (etwa der clamscan.conf), Beispiele dazu finden sich in den Dateien auf der Heft-DVD.

Abbildung 2: Einen solchen Virenreport verschickt das PHP-Skript an den eingetragenen Admin.

Abbildung 2: Einen solchen Virenreport verschickt das PHP-Skript an den eingetragenen Admin.

Die Virenscan-Skripte enthalten darüber hinaus eine Popup-Funktion (Abbildung 3). Für die entsprechenden Dialoge kommt Zenity zum Einsatz, das die meisten Distributionen von Haus aus mitbringen. In den Konfigurationsdateien ermöglichen die Optionen popup und nopopup die Steuerung der Dialogfenster auf den Clients.

Die Option popup informiert den Benutzer des Clients über Start, Stopp und das Auffinden von Viren; nopopup erzeugt lediglich bei gefundenem Virus einen Dialog. In diesem Zusammenhang ist die Option Pi wichtig: Da am RasPi meist kein Bildschirm angeschlossen ist, machen Dialogfenster hier wenig Sinn. Deswegen unterdrücken die Skripte diese bei der Angabe von Pi.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland