| ... | ... | @@ -1,61 +1,172 @@ | 
              
                    |  | 1 | +{{info}} | 
              
                    | 1 | 1 | {{version major="7" minor="0" patch="13" showInfo="true"}} | 
              
                    | 2 | 2 | Dieses Plugin kann nur mit {{formcycle/}} Version 7.0.13 oder höher verwendet werden. | 
              
                    | 3 | 3 | {{/version}} | 
              
                    |  | 5 | +{{/info}} | 
              
                    | 4 | 4 |  | 
              
                    | 5 |  | -[[**Plugin-Download**>>https://customer.formcycle.eu/index.php/apps/files/?dir=/FORMCYCLE%20-%20Plugins%20Customer/fc-plugin-malware-scanner/ClamAV&fileid=40404]] | 
              
                    |  | 7 | +[[**Plugin-Download**>>https://customer.formcycle.eu/index.php/apps/files/?dir=/FORMCYCLE%20-%20Plugins%20Customer/fc-plugin-malware-scanner/ClamAV&fileid=40404]] (erfordert Anmeldung) | 
              
                    | 6 | 6 |  | 
              
                    | 7 | 7 | {{content/}} | 
              
                    | 8 | 8 |  | 
              
                    | 9 |  | -{{figure image="de_plugin.png" width="600"}} | 
              
                    | 10 |  | -  Es muss ein TCP-Verbindung eingerichtet werden, um den ClamAV-Daemon Service zum scannen der hochgeladenen Dateien zu verwenden. | 
              
                    | 11 |  | -{{/figure}} | 
              
                    |  | 11 | +Mit dem kostenlosen //ClamAV//-Plugin für {{formcycle/}} besteht die Möglichkeit, hochgeladene Dateien auf Viren zu scannen. Hierfür stellt dieses Plugin eine Verbindung zu einem //ClamAV//-Daemon Service via TCP her. | 
              
                    | 12 | 12 |  | 
              
                    | 13 |  | - Esist möglich, hochgeladene Elemente im Backend sowie in ausgelieferten Formularen durch ClamAV auf Viren untersuchen zu lassen. Dazu wird dieses Plugin als aktiviertes System-Plugin benötigt sowie ein laufender ClamAV-Daemon Service der über TCP erreichtwerden kann. | 
              
                    |  | 13 | +== Funktionalität == | 
              
                    | 14 | 14 |  | 
              
                    | 15 |  | -Nachdem dieses Plugin installiert wurde, muss es konfiguriert werden. Die Konfiguration besteht daraus, dass angegeben wird, auf welche {{smallcaps}}host:port{{/smallcaps}} Kombination zugegriffen werden soll. Außerdem kann die Übertragung mit einem {{smallcaps}}InputStream{{/smallcaps}} geschehen oder es wird direkt auf dem Pfad gearbeitet. | 
              
                    |  | 15 | +; Sofortiger Virenscan | 
              
                    |  | 16 | +: Jede Datei wird direkt nach Ihrem Upload gescannt. | 
              
                    | 16 | 16 |  | 
              
                    | 17 |  | - ==Konfiguration== | 
              
                    |  | 18 | +Der verwendete //ClamAV//-Daemon Service kann weder durch dieses Plugin konfiguriert noch gestartet werden. | 
              
                    | 18 | 18 |  | 
              
                    | 19 |  | -{{figure image="en_error.png" width="400"}} | 
              
                    |  | 20 | +== Installation == | 
              
                    |  | 21 | + | 
              
                    |  | 22 | +Die Installation des Plugins ist über die dafür vorgesehene Verwaltungsoberfläche von Plugins durchzuführen. Hierbei muss lediglich die entsprechende //Jar//-Datei eingespielt werden. | 
              
                    |  | 23 | + | 
              
                    |  | 24 | +{{info}} | 
              
                    |  | 25 | +  Das //ClamAV//-Plugin scannt Dateien in Backend und Fronted. Um immer für alle Benutzer verfügbar zu sein, ist es ratsam, das Plugin als System-Plugin zu installieren. Dies umgeht auch mögliche Probleme mit doppelt belegten Ports und ermöglicht eine zentrale Konfiguration. | 
              
                    |  | 26 | +{{/info}} | 
              
                    |  | 27 | + | 
              
                    |  | 28 | +== Konfiguration Plugin == | 
              
                    |  | 29 | + | 
              
                    |  | 30 | +Nach dem Speichern wird automatisch ein Ping-Test durchgeführt. Falls dieser fehlschlägt wird eine entsprechende Meldung angezeigt. In diesem Fall werden alle Uploads im Backend oder im Formular als fehlerhaft markiert - das Plugin sollte erst einmal deaktiviert werden und eine funktionierende Verbindung aufgebaut werden. | 
              
                    |  | 31 | + | 
              
                    |  | 32 | +{{figure image="de_error.png" width="400"}} | 
              
                    | 20 | 20 | Falls keine Verbindung zu dem angegeben Host aufgebaut werden kann, wird diese Meldung ausgegeben. | 
              
                    | 21 | 21 | {{/figure}} | 
              
                    | 22 | 22 |  | 
              
                    | 23 |  | -Folgende Konfigurationparameter gibt es: | 
              
                    |  | 36 | +Folgende Konfigurationsparameter gibt es: | 
              
                    | 24 | 24 |  | 
              
                    | 25 | 25 | ; host (Erforderlich) | 
              
                    | 26 |  | -: Host-Nameoder IP-Adresse desServers auf dem ClamAV-Daemonläuft,{{smallcaps}}127.0.0.1{{/smallcaps}}falls derService auf demgleichen Server wie {{formcycle/}} läuft. | 
              
                    | 27 |  | -; port | 
              
                    | 28 |  | -: Der Standard PortvonClamAV-Daemon ist{{smallcaps}}3310{{/smallcaps}}.Falls derPort abweichensollten, somuss dieserhierangegebenwerden. | 
              
                    | 29 |  | -; file-source | 
              
                    | 30 |  | -: Standard mäßig wirddaszuüberprüfendeElementperJavas{{smallcaps}}InputStream{{/smallcaps}}übertragen.Fallshier derWert{{smallcaps}}path{{/smallcaps}}eingebenwird,wirddirektauf demPfad gearbeitet- wobeidafür derClamAV-Daemon Service rootRechtebesitzenmuss. | 
              
                    |  | 39 | +: Standardwert: //127.0.0.1//. Gibt die zu verwendende //IP//-Adresse des //ClamAV//-Daemon Service an. Der Standardwert ist //127.0.0.1// und verwendet damit einen lokalen //ClamAV//-Daemon Service. | 
              
                    |  | 40 | +; port (Erforderlich) | 
              
                    |  | 41 | +: Standardwert: //3310//. Gibt den zu verwendenden Port des //ClamAV//-Daemon Service an. Der Standardwert sollte nur geändert werden, falls dieser Port nicht zu Verfügung steht | 
              
                    |  | 42 | +; os (Optional) | 
              
                    |  | 43 | +: Standardwert: //JVM_PLATFORM//. Betriebssystem, auf dem der ClamAV-Daemon-Dienst läuft. Dieser Wert ist nur relevant, wenn das Betriebssystem von formcycle und das des ClamAV-Daemon-Dienstes unterschiedlich sind. Für Linux oder MacOS geben Sie //UNIX// ein, für Windows //WINDOWS//. Wenn beide auf dem gleichen Betriebssystem laufen, können Sie diesen Wert leer lassen oder //JVM_PLATFORM// verwenden. | 
              
                    | 31 | 31 |  | 
              
                    | 32 |  | - Nachdem Speichern wird automatisch ein Ping-Test durchgeführt. Falls dieser fehlschlägt wird eine entsprechende Meldung angezeigt. In diesem Fall werden alle Uploads im Backendoder im Formular als fehlerhaft markiert - das Plugin sollte erst einmal deaktiviert werden und eine funktionierende Verbindungaufgebaut werden. | 
              
                    |  | 45 | +== Konfiguration //ClamAV// == | 
              
                    | 33 | 33 |  | 
              
                    | 34 |  | - ==ClamAVEinstellungen== | 
              
                    |  | 47 | +Im folgenden Abschnitt wird auf Installation und Konfiguration von //ClamAV// auf einem UNIX-System eingegangen. Unser empfohlenes Szenario ist {{formcycle/}} und den //ClamAV//-Daemon Service auf dem selben Server zu installieren. | 
              
                    | 35 | 35 |  | 
              
                    | 36 |  | - Imfolgenden Abschnitt wird auf wichtige Konfigurationsschritte von ClamAV-Daemon eingegangen. In diesem Szenario ist {{formcycle/}} auf einem Debian basierten Server installiert und auf selbigen System läuft der ClamAV-DaemonService. | 
              
                    |  | 49 | +=== Installation === | 
              
                    | 37 | 37 |  | 
              
                    | 38 |  | - DadaseigentlicheVirusscanninglosgelöst von{{formcycle/}} stattfindet,sollte auf eineaktulle Virensignatur-Datenbank geachtetwerden via {{smallcaps}}freshclam{{/smallcaps}}. | 
              
                    |  | 51 | +Um //ClamAV// auf einem Server zu installieren, sollten folgende Befehle auf dem Server eingegeben werden. | 
              
                    | 39 | 39 |  | 
              
                    | 40 |  | - Dieses Plugin überträgtdie zu untersuchendenElementeviaTCP,was standardmäßig inClamAV-Daemon deaktiviertist. ZurAktivierungmuss dieKonfigurationsdatei unter:{{smallcaps}}/etc/clamav/clamd.conf{{/smallcaps}}bearbeitet werden. | 
              
                    |  | 53 | +//ClamAV// ist das Programm, welches Dateien auf Viren scannen kann und wird für die Verwendung von //ClamAV//-Daemon benötigt. | 
              
                    | 41 | 41 |  | 
              
                    | 42 |  | -Folgende Parameter müssen der Datei hinzugefügt werden: | 
              
                    |  | 55 | +; Aktualisieren der package list: | 
              
                    |  | 56 | +; {{code language="shell"}} sudo apt-get update {{/code}} | 
              
                    | 43 | 43 |  | 
              
                    | 44 |  | -; TCPAddr (Erforderlich) | 
              
                    | 45 |  | -: Soll hinzugefügt und mit dem Wert {{smallcaps}}127.0.0.1{{/smallcaps}} angegeben werden. | 
              
                    | 46 |  | -; TCPSocket (Erforderlich) | 
              
                    | 47 |  | -: Soll hinzugefügt und mit dem Wert {{smallcaps}}3310{{/smallcaps}} angegeben werden oder abweichend, falls der Port anderweitig genutzt werden soll. | 
              
                    | 48 |  | -; User | 
              
                    | 49 |  | -: Ist standardmäßig {{smallcaps}}clamav{{/smallcaps}} und muss zu {{smallcaps}}root{{/smallcaps}} geändert werden um dem ClamAV-Daemon Service root Rechte zu geben. | 
              
                    |  | 58 | +; Installiere //ClamAV// und //ClamAV//-Daemon: | 
              
                    |  | 59 | +; {{code language="shell"}} sudo apt-get install clamav clamav-daemon -y {{/code}} | 
              
                    | 50 | 50 |  | 
              
                    | 51 |  | -{{figure image="en_tcp_test.png"}} | 
              
                    | 52 |  | -  Mithilfe von {{smallcaps}}netstat{{/smallcaps}} kann der TCP Socket vom ClamAV-Daemon Service untersucht werden. | 
              
                    | 53 |  | -{{/figure}} | 
              
                    |  | 61 | +=== Aktualisieren der Virensignatur-Datenbank === | 
              
                    | 54 | 54 |  | 
              
                    | 55 |  | - DamitdiesesPluginden ClamAV-Daemon Service ansprechenkann, muss der Service an der richtigenStelle zuhören- in diesemFall unter {{smallcaps}}127.0.0.1:3310{{/smallcaps}}.Das kann durch folgendenBefehlim Terminal überprüftwerden: | 
              
                    |  | 63 | +//freshclam// wird mit //ClamAV// automatisch installiert und wird zum aktualisieren der Virensignatur Datenbank genutzt. | 
              
                    | 56 | 56 |  | 
              
                    | 57 |  | -{{code language="shell"}} | 
              
                    | 58 |  | -sudo netstat -anp | grep -E "(clam)" | 
              
                    | 59 |  | -{{/code}} | 
              
                    |  | 65 | +; Beenden des automatischen //freshclam// Prozess: | 
              
                    |  | 66 | +; {{code language="shell"}} sudo systemctl stop clamav-freshclam {{/code}} | 
              
                    | 60 | 60 |  | 
              
                    |  | 68 | +; Manuelles aktualisieren der Virensignatur Datenbank: | 
              
                    |  | 69 | +; {{code language="shell"}} sudo freshclam {{/code}} | 
              
                    | 61 | 61 |  | 
              
                    |  | 71 | +=== Konfiguration //ClamAV//-Daemon === | 
              
                    |  | 72 | + | 
              
                    |  | 73 | +//ClamAV//-Daemon ist der auf dem Server im Hintergrund laufende Prozess, welcher zum Virusscan angesprochen wird. Das geschieht via TCP und muss entprechend konfiguriert werden. | 
              
                    |  | 74 | + | 
              
                    |  | 75 | +Dafür soll die Konfigurationsdatei unter: // /etc/clamav/clamd.conf // angepasst werden. | 
              
                    |  | 76 | + | 
              
                    |  | 77 | +; Öffnen der Konfigurationsdatei: | 
              
                    |  | 78 | +; {{code language="shell"}} sudo nano /etc/clamav/clamd.conf {{/code}} | 
              
                    |  | 79 | + | 
              
                    |  | 80 | +Mit den Pfeiltasten kann an das Ende der Datei navigiert werden. | 
              
                    |  | 81 | + | 
              
                    |  | 82 | +; Hinzufügen von //TCPAddr 127.0.0.1 // | 
              
                    |  | 83 | +; Hinzufügen von //TCPSocket 3310 // | 
              
                    |  | 84 | + | 
              
                    |  | 85 | +{{lightbox image="en_clamd.conf.png"/}} | 
              
                    |  | 86 | + | 
              
                    |  | 87 | +; //ClamAV//-Daemon root Rechte geben | 
              
                    |  | 88 | +: dafür muss in dieser Datei der Eintrag //User clamav// in //User root// geändert werden. | 
              
                    |  | 89 | + | 
              
                    |  | 90 | +Nun kann mit //Strg + X// gespeichert und beendet werden. Mit //Y// und der Enter-Taste bestätigen. | 
              
                    |  | 91 | + | 
              
                    |  | 92 | +=== Starten der //ClamAV//-Daemon Service === | 
              
                    |  | 93 | + | 
              
                    |  | 94 | +Nun kann der Service gestartet werden. | 
              
                    |  | 95 | + | 
              
                    |  | 96 | +: Starten des //ClamAV//-Daemon Service: | 
              
                    |  | 97 | +; {{code language="shell"}} sudo systemctl start clamav-daemon.service {{/code}} | 
              
                    |  | 98 | + | 
              
                    |  | 99 | +=== Prüfen der Verfügbarkeit des Service === | 
              
                    |  | 100 | + | 
              
                    |  | 101 | +Damit dieses Plugin den //ClamAV//-Daemon Service ansprechen kann, muss der Service an der richtigen Stelle zuhören - in diesem Fall unter //127.0.0.1:3310//. Das kann im Terminal der Servers überprüft werden. | 
              
                    |  | 102 | + | 
              
                    |  | 103 | +; Mithilfe von //netstat// kann der TCP Socket vom //ClamAV//-Daemon Service untersucht werden. | 
              
                    |  | 104 | +; {{code language="shell"}} sudo netstat -anp | grep -E "(clam)" {{/code}} | 
              
                    |  | 105 | + | 
              
                    |  | 106 | +{{lightbox image="de_tcp_test.png"/}} | 
              
                    |  | 107 | + | 
              
                    |  | 108 | +Falls keine Zeile beginnend mit //tcp// zu sehen ist oder eine abweichende //host:port// Kombination als //127.0.0.1:3310// zu erkennen ist, muss die Konfiguration erneut geprüft werden. | 
              
                    |  | 109 | + | 
              
                    |  | 110 | +== Beispielkonfiguration == | 
              
                    |  | 111 | + | 
              
                    |  | 112 | +Ein beispielhafte Konfiguration mit den oben genannten Standardwerten: | 
              
                    |  | 113 | + | 
              
                    |  | 114 | +{{lightbox image="de_plugin.png"/}} | 
              
                    |  | 115 | + | 
              
                    |  | 116 | +== Verwendung == | 
              
                    |  | 117 | + | 
              
                    |  | 118 | +Sobald eine Virensignatur erkannt wurde, ist folgende Meldung zu sehen: | 
              
                    |  | 119 | + | 
              
                    |  | 120 | +{{lightbox image="de_virus_found.png"/}} | 
              
                    |  | 121 | + | 
              
                    |  | 122 | +=== Testdatei === | 
              
                    |  | 123 | + | 
              
                    |  | 124 | +Eine gängige Methode zur Überprüfung von Virenscannern ist die //eicar.com// Datei. | 
              
                    |  | 125 | +An beliebiger Stelle kann diese Tastdatei hochgeladen werden und nach erfolgreicher Konfiguration ist die oben dargestellte Meldung zu sehen. | 
              
                    |  | 126 | + | 
              
                    |  | 127 | +; [[**Wikipedia**>>https://de.wikipedia.org/wiki/EICAR-Testdatei]] | 
              
                    |  | 128 | +; [[**Download**>>https://www.eicar.org/download-anti-malware-testfile/]] | 
              
                    |  | 129 | + | 
              
                    |  | 130 | +=== Logging === | 
              
                    |  | 131 | + | 
              
                    |  | 132 | +//ClamAV// erstellt logs, welche unter // /var/log/clamav/clamav.log // zu finden sind. | 
              
                    |  | 133 | + | 
              
                    |  | 134 | +: Nach dem hochladen der //eicar.com// Testdatei ist zum Beispiel folgender Eintrag in //clamav.log //zu sehen: | 
              
                    |  | 135 | +; {{code language="shell"}} Wed May 25 10:10:21 2022 -> instream(127.0.0.1@32984): Win.Test.EICAR_HDB-1(44d88612fea8a8f36de82e1278abb02f:68) FOUND {{/code}} | 
              
                    |  | 136 | + | 
              
                    |  | 137 | +{{formcycle/}} logs sind hierfür unter // /formcycle-data/formcycle7/logs zu finden.// | 
              
                    |  | 138 | + | 
              
                    |  | 139 | +: Nach dem hochladen der //eicar.com// Testdatei ist zum Beispiel folgender Eintrag in //formcycle-errors-log //zu sehen: | 
              
                    |  | 140 | +; {{code language="shell"}} [WARN] [25-05-22 10:10:21,192] [ajp-nio-127.0.0.1-8009-exec-43] (MalwareScanner.java:211) - Scanner <fc.plugin.malware.scanner.clamAV.ClamAntiVirusFileScanner@7b2a4953> detected malware signature for file </home/fc/tomcat9/tmp/xima-temp/formcycle7/xfc-malware-scan/stream-scan12705251110052849842/data2383296604287452271>: {stream=[Win.Test.EICAR_HDB-1]} {{/code}} | 
              
                    |  | 141 | +; {{code language="shell"}} [ERROR] [25-05-22 10:10:21,207] [ajp-nio-127.0.0.1-8009-exec-43] (VirusScannerService.java:71) - Detected a virus {{/code}} | 
              
                    |  | 142 | + | 
              
                    |  | 143 | +== Versionshistorie == | 
              
                    |  | 144 | + | 
              
                    |  | 145 | +=== Version 1.0.6 === | 
              
                    |  | 146 | + | 
              
                    |  | 147 | +* Change: Virenscan über ClamAV ist nun auch für Windows oder JVM Plattformen möglich | 
              
                    |  | 148 | +* Fix: Fehler bei der Fehlerbehandlung behoben | 
              
                    |  | 149 | + | 
              
                    |  | 150 | +=== Version 1.0.5 === | 
              
                    |  | 151 | + | 
              
                    |  | 152 | +* Verbesserte Fehlermeldung im Log, wenn Clam-AV nicht angesprochen werden konnte | 
              
                    |  | 153 | + | 
              
                    |  | 154 | +=== Version 1.0.4 === | 
              
                    |  | 155 | + | 
              
                    |  | 156 | +* Fix: Ein Fehler beim Virenscan auf dem Frontend-Server wurde behoben. | 
              
                    |  | 157 | + | 
              
                    |  | 158 | +=== Version 1.0.3 === | 
              
                    |  | 159 | + | 
              
                    |  | 160 | +* Change: Das Plugin wird auch auf den Frontend-Server übertragen, wenn ein solcher verfügbar ist. Somit kann auch auf Frontend-Server nach Viren gesucht werden. | 
              
                    |  | 161 | + | 
              
                    |  | 162 | +=== Version 1.0.2 === | 
              
                    |  | 163 | + | 
              
                    |  | 164 | +* Entfernen: Eigenschaft für Pfad-Scanning, nur noch InputStream | 
              
                    |  | 165 | + | 
              
                    |  | 166 | +=== Version 1.0.1 === | 
              
                    |  | 167 | + | 
              
                    |  | 168 | +* Fix: Überspringen der Überprüfung, wenn das Betriebssystem nicht UNIX ist, anstatt die Datei als Virus zu erkennen | 
              
                    |  | 169 | + | 
              
                    |  | 170 | +=== Version 1.0.0 === | 
              
                    |  | 171 | + | 
              
                    |  | 172 | +* Initialer Release |