Skip to content

Commit

Permalink
Add virus scan documentation to 7.3.0 and next
Browse files Browse the repository at this point in the history
  • Loading branch information
awallat committed Nov 11, 2024
1 parent 88ea4e9 commit e94070b
Show file tree
Hide file tree
Showing 2 changed files with 154 additions and 0 deletions.
77 changes: 77 additions & 0 deletions 7.4.0-SNAPSHOT/ige-ng/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
77 changes: 77 additions & 0 deletions latest/ige-ng/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

0 comments on commit e94070b

Please # to comment.