Mit diesem Script kann man Daten mit mehrere Scanengines prüfen.
Es sollte ein separater Benutzer zur Ausführung des Programms verwendet werden.
Dieser hat dann auch Berechtigungen auf die jew. Datenverzeichnisse und Unterverzeichnisse.
Es wird davon ausgegangen das die Dateien über eine Webseite in das Verzeichnigs /virusscan/upload
hochgeladen werden.
Hier ein Beispiel:
User1 = ghostbuster Mitglied der Gruppe „quarentine“ (Benutzer der die Daten bearbeiten kann und das Virenscan-Script startet)
User2 = quarentine (Benutzer dem das Quarantäneverzeichnis gehört)
Ordnerstruktur:
Ort | Berechtigungen | |
---|---|---|
Programmverzeichnis | /usr/local/bin | chown ghostbuster. /usr/local/bin/virusscan.sh chown ghostbuster. /usr/local/bin/scanner.sh chmod 700 /usr/local/bin/virusscan.sh chmod 700 /usr/local/bin/scanner.sh |
Konfigurationsverzeichnis | /etc/virusengines | |
Dateiverzeichnis | /virusscan | chgrp ghostbuster /virusscan chmod g+x /virusscan |
Quarantäneverzeichnis | /virusscan/quarentine | chgrp quarentine. /virusscan/quarentine chmod g+x /virusscan/quarentine |
Tempverzeichnis | /virusscan/tmp | chgrp ghostbuster. /virusscan chmod 760 /virusscan/tmp |
Scanverzeichnis | /virusscan/toScan | chgrp ghostbuster /virusscan/toScan |
Quellverzeichnis | /virusscan/upload | chown www-data. /virusscan/upload chmod g+x /virusscan/upload |
Logverzeichnis | /var/log/virusengines/ |
Hier eine Erläuterung zum Programmablauf.
Das Programm hat folgende Funktionen:
/virusscan/upload
in den Ordner /virusscan/toScan
scanner.sh
)/virusscan/toScan
/virusscan/quarentine
verschoben<MOUNT_DIR>
mounten<MOUNT_DIR>
verschoben<MOUNT_DIR>
unmountenScript:
#!/bin/bash # # # # Dieses Script scannt Dateien mit verschiedenen Virenscannern # und verschiebt diese wenn sie sauber sind. # Bei Viren-Fund werden die Dateien in ein Quarantäne-Verzeichnis # verschoben und eine Mail versand. # ############ ## Hier den/die Virenscanengines (leerzeichen getrennt) angeben SCANNER="clamscan" ############ ############ ## Konfiguration zum Mail Versandt MAIL_SERVER="<MAILSERVER>:25" EMAIL_SUB="Viren bei HTTP-Upload gefunden." EMAIL_FROM="<FROM_MAILADRESSE>" EMAIL_TO="<TO_MAILADRESSE>" EMAIL_OPT="-o message-charset=utf-8" ############ ############ ## Mountverzeichnis MOUNT_DIR=<PFAD> ############ ############ ## Ab Hier nichts mehr verändern ############ PROG_DIR=/usr/local/bin CONF_DIR=/etc/virusengines FILES_DIR=/virusscan LOG_DIR=/var/log/virusengines SCANFILE_DIR=${FILES_DIR}/toScan INFECTED_DIR=${FILES_DIR}/quarentine TEMP_DIR=${FILES_DIR}/tmp UPLOAD_DIR=${FILES_DIR}/upload SCANFILELIST=files-to-scan.txt MOVEFILELIST=files-to-move.txt RSYNC=/usr/bin/rsync RSYNC_OPT="--remove-source-files" PROC_CHECK=`pgrep -c virusscan.sh` ## Check: Läuft das Programm noch? if [ ${PROC_CHECK} -gt 1 ]; then exit 5 else source ${PROG_DIR}/scanner.sh ## Alle Dateien von "Upload" nach "toScan" verschieben ${RSYNC} -a ${RSYNC_OPT} ${UPLOAD_DIR}/* ${SCANFILE_DIR} ## Liste mit zu scannenden Dateien erstellen find ${SCANFILE_DIR} -type f > ${FILES_DIR}/${SCANFILELIST} ## Scan for x in ${SCANNER}; do ${x} done ## Aufräumen rm ${FILES_DIR}/${SCANFILELIST} ## DFS mounten und saubere Dateien dahin verschieben sudo mount ${MOUNT_DIR} ${RSYNC} -r ${RSYNC_OPTS} ${SCANFILE_DIR}/* ${MOUNT_DIR} sudo umount ${MOUNT_DIR} fi
Diese Programm steuert u. a. die einzelnen Antiviren-Scanengines.
Grundsätzlich wird folgendes getan:
virusscan.sh
bereitstellen/virusscan/scanner-files
auslesen
Script (hier z.B. für die Scanengine „clamscan“):
<code bash>#!/bin/bash
function clamscan () {
source ${CONF_DIR}/${FUNCNAME[0]}.conf ${BIN} ${OPTS} > ${LOG}
MALWARE=$(tail "${LOG}"|grep Infected|cut -d" " -f3);
if [ "$MALWARE" -ne "0" ];then sendEmail -o ${EMAIL_OPT} -u ${EMAIL_SUB} -a "$LOG" -s ${MAIL_SERVER} -f "$EMAIL_FROM" -t "$EMAIL_TO" -m "Die Scanengine '${FUNCNAME[0]}' hat eine verdächtige Datei gefunden. \n Weitere Infos finden Sie in der Log-Datei."; fi
}
Konfigurationsdatei clamscan.conf
(hier z.B. für die Scanengine „clamscan“):
<code bash>BIN=/usr/bin/${x}
LOG=${LOG_DIR}/${x}.log
OPTS=„–infected –suppress-ok-results –tempdir=${TEMP_DIR} –recursive –allmatch –file-list=${FILES_DIR}/${SCANFILELIST} –move=${INFECTED_DIR} –detect-pua –detect-structured –scan-mail –scan-pe –scan-elf –scan-ole2 –scan-pdf –scan-swf –scan-html –scan-archive –detect-broken –block-encrypted“
/etc/virusengines/scan-leer.conf
kopieren und verwenden)scanner.sh
definieren (WICHTIG: ggf. die Suchbegriffe für die Variable „MALWARE“ anpassen)virusscan.sh
in der Variable SCANNER
hinzufügen (durch Leerzeichen getrennt)