From e94070bb266a603830af749077b3a99c50578708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Wallat?= Date: Mon, 11 Nov 2024 20:23:45 +0100 Subject: [PATCH] Add virus scan documentation to 7.3.0 and next --- 7.4.0-SNAPSHOT/ige-ng/index.md | 77 ++++++++++++++++++++++++++++++++++ latest/ige-ng/index.md | 77 ++++++++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+) diff --git a/7.4.0-SNAPSHOT/ige-ng/index.md b/7.4.0-SNAPSHOT/ige-ng/index.md index 83d7c53..43ac556 100644 --- a/7.4.0-SNAPSHOT/ige-ng/index.md +++ b/7.4.0-SNAPSHOT/ige-ng/index.md @@ -239,3 +239,80 @@ HTTP-Fehlercode angegeben. Ein oder mehrere URLs können ersetzt werden, indem Sie die zu ersetzenden URLs in der Tabelle markieren und in das Eingabefeld unter der Tabelle eine neue URL eingeben. Mit der Funktion Ersetzen tauschen Sie die URL aus. + +## Virus Scanner + +Für den FileUpload kann optional ein Virusscan aktiviert werden. Der Dienst ist per Default deaktiviert. + +Zu beachten ist, dass der Viren Scan beim Upload eines Dateiarchivs aus Performance-Gründen nur auf der Archivdatei ausgeführt wird und nicht auf den gepackten Einzeldateien. + +Der Dienst wird durch Konfiguration eines der folgenden Validatoren aktiviert: + +**VirusScanValidator (per Default deaktiviert)** + + ``` + "virusscan":{ + "impl":"de.ingrid.mdek.upload.storage.validate.impl.VirusScanValidator", + "properties":{ + "command":"\\\\path\\\\to\\\\clamav\\\\clamscan %FILE%",\ + "virusPattern":"(?m)^(?=.+: (.+) FOUND$)(.+): .+ FOUND$",\ + "cleanPattern":"(?m)^Infected files: 0$",\ + "errorPattern":"(?m)^Total errors: \\d+$"\, + "timeout": "60" + } + } + ``` + +Der `VirusScanValidator` setzt die Installation eines Viren Scanners auf dem Betriebssystem des Servers voraus. + +Um unterschiedliche Viren Scanner zu unterstützen, wird der Scanner über folgende Parameter konfiguriert: + +- `command` Kommando zur Überprüfung einer Datei. Es muss die Zeichenkette `%FILE%` enthalten sein, die durch den zu prüfende Dateipfad ersetzt wird. Das Kommando muss eine Ausgabe liefern, aus der der Status der Datei hervorgeht. Zu beachten ist, dass auch die Überprüfung von Archiven notwendig ist. +- `virusPattern` Regulärer Ausdruck, der auf die Ausgabe des Scans im Falle *einer* Infektion passt und die Virusname und Dateiname jeweils in einer Gruppe speichert +- `cleanPattern` Regulärer Ausdruck, der auf die Ausgabe des Scans im Falle *keiner* Infektion passt +- `errorPattern` Regulärer Ausdruck, der auf die Ausgabe des Scans im Falle eines während des Scans auftretenden Fehlers passt (z.B. wenn eine entschlüsselte Datei nicht gescannt werden kann) +- `timeout` (Optional - Default `60`) Timeout für den Aufruf des Virenscanners in Sekunden + +HINWEIS: Da alle Uploads zunächst im Verzeichnis `upload.tempdir` gespeichert werden und anschließend vom Virus Scanner explizit geprüft werden (*on-demand*), sollte zur Vermeidung von Konflikten die *on-access* Methode des Scanners deaktiviert oder zumindest das temporäre Verzeichnis ausgenommen sein. + +**RemoteServiceVirusScanValidator (per Default deaktiviert)** + + ``` + "virusscan":{ + "impl":"de.ingrid.mdek.upload.storage.validate.impl.RemoteServiceVirusScanValidator", + "properties":{ + "url":"http://localhost:3000/v1/" + } + } + ``` +Der `RemoteServiceVirusScanValidator` verwendet einen Service, der einen Viren Scanner per HTTP Schnittstelle anbindet. Über die Schnittstelle können Scan-Jobs eingestellt werden. Scan Jobs werden mit absoluten Pfaden aufgerufen. Der Service muss daher Zugriff auf das gleiche Filesystem haben wie der IGE-NG. + +Bsp: Uploads werden im IGE-NG per Default unter `/tmp/ingrid/upload` abgelegt. Der `RemoteServiceVirusScanValidator` ruft den Virusscan-Service mit absoluten Pfaden in `/tmp/ingrid/upload/...` auf. Der Virusscan-Service muss daher auch Zugriff auf dieses Verzeichnis haben. Wenn IGE-NG und Virsusscan-Service in einem Docker Container laufen, müssen die Pfade im Volume-Mapping entsprechend abgebildet werden. + +IGE-NG: + +``` +- /mnt/files:/tmp/ingrid/upload +``` + +Virusscan-Service + +``` +- /mnt/files:/tmp/ingrid/upload +``` + +Der Service und die Schnittstellenbeschreibung ist aktuell noch nicht veröffentlicht. + +Für die regelmäßige **Virenprüfung der Dateiverzeichnisse** existiert ein Hintergrundjob, der über folgende Parameter konfiguriert wird: + +- `upload.virusscan.mail.receiver` Empfänger des Virusscan Reports +- `upload.virusscan.schedule` Definition der Ausführungszeit im Cron pattern Format (Standard: täglich 2 Uhr). +- `upload.virusscan.quarantinedir` Verzeichnis (muss existieren), in das infizierte Dateien verschoben werden sollen (Standard: /tmp/ingrid/upload/quarantine/). + +In Docker können folgende Umgebungsvariablen gesetzt werden: + +- `VIRUSSCAN_MAIL_RECEIVER` +- `VIRUSSCAN_SCHEDULE` + +Beim Virusscan werden fehlerhafte Zugriffe auf Dateien (z.B. gelöschte Dateien, fehlende Rechte) und generelle Fehler in einem Report vermerkt und an den konfigurierten Empfänger geschickt. Die Fehler werden auch in das Logfile geschrieben. +Wenn ein Virus gefunden wurde, enthält der Report weitere Informationen über infizierten Dateien, den Virus und den Zeitpunkt des Fundes. diff --git a/latest/ige-ng/index.md b/latest/ige-ng/index.md index 83d7c53..43ac556 100644 --- a/latest/ige-ng/index.md +++ b/latest/ige-ng/index.md @@ -239,3 +239,80 @@ HTTP-Fehlercode angegeben. Ein oder mehrere URLs können ersetzt werden, indem Sie die zu ersetzenden URLs in der Tabelle markieren und in das Eingabefeld unter der Tabelle eine neue URL eingeben. Mit der Funktion Ersetzen tauschen Sie die URL aus. + +## Virus Scanner + +Für den FileUpload kann optional ein Virusscan aktiviert werden. Der Dienst ist per Default deaktiviert. + +Zu beachten ist, dass der Viren Scan beim Upload eines Dateiarchivs aus Performance-Gründen nur auf der Archivdatei ausgeführt wird und nicht auf den gepackten Einzeldateien. + +Der Dienst wird durch Konfiguration eines der folgenden Validatoren aktiviert: + +**VirusScanValidator (per Default deaktiviert)** + + ``` + "virusscan":{ + "impl":"de.ingrid.mdek.upload.storage.validate.impl.VirusScanValidator", + "properties":{ + "command":"\\\\path\\\\to\\\\clamav\\\\clamscan %FILE%",\ + "virusPattern":"(?m)^(?=.+: (.+) FOUND$)(.+): .+ FOUND$",\ + "cleanPattern":"(?m)^Infected files: 0$",\ + "errorPattern":"(?m)^Total errors: \\d+$"\, + "timeout": "60" + } + } + ``` + +Der `VirusScanValidator` setzt die Installation eines Viren Scanners auf dem Betriebssystem des Servers voraus. + +Um unterschiedliche Viren Scanner zu unterstützen, wird der Scanner über folgende Parameter konfiguriert: + +- `command` Kommando zur Überprüfung einer Datei. Es muss die Zeichenkette `%FILE%` enthalten sein, die durch den zu prüfende Dateipfad ersetzt wird. Das Kommando muss eine Ausgabe liefern, aus der der Status der Datei hervorgeht. Zu beachten ist, dass auch die Überprüfung von Archiven notwendig ist. +- `virusPattern` Regulärer Ausdruck, der auf die Ausgabe des Scans im Falle *einer* Infektion passt und die Virusname und Dateiname jeweils in einer Gruppe speichert +- `cleanPattern` Regulärer Ausdruck, der auf die Ausgabe des Scans im Falle *keiner* Infektion passt +- `errorPattern` Regulärer Ausdruck, der auf die Ausgabe des Scans im Falle eines während des Scans auftretenden Fehlers passt (z.B. wenn eine entschlüsselte Datei nicht gescannt werden kann) +- `timeout` (Optional - Default `60`) Timeout für den Aufruf des Virenscanners in Sekunden + +HINWEIS: Da alle Uploads zunächst im Verzeichnis `upload.tempdir` gespeichert werden und anschließend vom Virus Scanner explizit geprüft werden (*on-demand*), sollte zur Vermeidung von Konflikten die *on-access* Methode des Scanners deaktiviert oder zumindest das temporäre Verzeichnis ausgenommen sein. + +**RemoteServiceVirusScanValidator (per Default deaktiviert)** + + ``` + "virusscan":{ + "impl":"de.ingrid.mdek.upload.storage.validate.impl.RemoteServiceVirusScanValidator", + "properties":{ + "url":"http://localhost:3000/v1/" + } + } + ``` +Der `RemoteServiceVirusScanValidator` verwendet einen Service, der einen Viren Scanner per HTTP Schnittstelle anbindet. Über die Schnittstelle können Scan-Jobs eingestellt werden. Scan Jobs werden mit absoluten Pfaden aufgerufen. Der Service muss daher Zugriff auf das gleiche Filesystem haben wie der IGE-NG. + +Bsp: Uploads werden im IGE-NG per Default unter `/tmp/ingrid/upload` abgelegt. Der `RemoteServiceVirusScanValidator` ruft den Virusscan-Service mit absoluten Pfaden in `/tmp/ingrid/upload/...` auf. Der Virusscan-Service muss daher auch Zugriff auf dieses Verzeichnis haben. Wenn IGE-NG und Virsusscan-Service in einem Docker Container laufen, müssen die Pfade im Volume-Mapping entsprechend abgebildet werden. + +IGE-NG: + +``` +- /mnt/files:/tmp/ingrid/upload +``` + +Virusscan-Service + +``` +- /mnt/files:/tmp/ingrid/upload +``` + +Der Service und die Schnittstellenbeschreibung ist aktuell noch nicht veröffentlicht. + +Für die regelmäßige **Virenprüfung der Dateiverzeichnisse** existiert ein Hintergrundjob, der über folgende Parameter konfiguriert wird: + +- `upload.virusscan.mail.receiver` Empfänger des Virusscan Reports +- `upload.virusscan.schedule` Definition der Ausführungszeit im Cron pattern Format (Standard: täglich 2 Uhr). +- `upload.virusscan.quarantinedir` Verzeichnis (muss existieren), in das infizierte Dateien verschoben werden sollen (Standard: /tmp/ingrid/upload/quarantine/). + +In Docker können folgende Umgebungsvariablen gesetzt werden: + +- `VIRUSSCAN_MAIL_RECEIVER` +- `VIRUSSCAN_SCHEDULE` + +Beim Virusscan werden fehlerhafte Zugriffe auf Dateien (z.B. gelöschte Dateien, fehlende Rechte) und generelle Fehler in einem Report vermerkt und an den konfigurierten Empfänger geschickt. Die Fehler werden auch in das Logfile geschrieben. +Wenn ein Virus gefunden wurde, enthält der Report weitere Informationen über infizierten Dateien, den Virus und den Zeitpunkt des Fundes.