# ************************************************************************ # * SCANQUAR 01-november-2024 Ben Makkink * # * Script voor het afhandelen van bestanden die door Clamscsan in * # * Quarantaine geplaatst zijn. * # * Bestanden kunnen geselecteerd worden voor geheel verwijderen of * # * 'Whitelisten' en vervolgens terugzetten op de oorspronkelijke plaats * # ************************************************************************ #!/bin/bash # Set variables QUARANTINEDIR="/var/clamav/quarantine/"; RESTOREPATHS="/var/clamav/restorepaths"; TEMPFILELIST="/var/clamav/filelist"; clear; echo " MALWARE IN QUARANTAINE" echo " ===========================================================================================" echo " Gestart middels een cron.daily wordt een Clamscan gedaan op de bestanden opgeslagen op de" echo " fileserver en webserver." echo " Gevonden malware wordt verwijderd en in quarantaine geplaatst" echo " Hieronder een lijst met gevonden bestanden die momenteel in quarantaine staan" echo echo " Delete of Whitelist en Restore een bestand" echo " ===========================================================================================" echo # clear residue mogelijke resten van voorgaande sessie if [ -f "${TEMPFILELIST}" ]; then rm "${TEMPFILELIST}"; fi # Check of er wel malware in quarantaine staat. if [ -z "$( ls -A "${QUARANTINEDIR}" )" ]; then echo " Er staan geen bestanden in Quarantaine, er valt hier niets te doen" echo; echo -n " Druk om terug te gaan"; read foo; exit; fi # Lees in quarantaine geplaats bestanden in 'RESTOREPATHS'. # Print op console en in tijdelijk bestand 'TEMPFILELIST'. n=1; while IFS= read -r line; do echo " $n:$line"|tee -a "${TEMPFILELIST}"; n=$((n+1)); done < "${RESTOREPATHS}" # Maak keuze uit in quarantaine geplaatste bestanden echo; keuze=; while [ -z $keuze ] ;do echo -n " Kies nummer van gewenst bestand of Q om te stoppen: "; read keuze; done # Geef optie voor Cancel case $keuze in [qQ]) exit;; esac # Haal keuze op. Ga terug naar menu als keuze niet bestaat FULLPATH="$(grep -w "$keuze:" /var/clamav/filelist|cut -d : -f2)"; # Als $FULLPATH niet bestaat of leeg is > ga terug naar selectiemenu if [ -z "${FULLPATH}" ]; then scanquar; exit; fi # Sla resultaten op in Var's DIR="$(dirname "${FULLPATH}")/"; FILE="$(basename "${FULLPATH}")"; # Geef keuzelijst met opties weer echo " Geselecteerd bestand:"; echo " ====================="; echo " $(tput setaf 2)"$keuze:""${FULLPATH}"$(tput sgr 0)"; echo; optie=; while [ -z $optie ] ;do echo " Kies:"; echo " $(tput setaf 2)V$(tput sgr 0) voor het geheel $(tput setaf 2)verwijderen$(tput sgr 0) van het bestand"; echo " $(tput setaf 2)W$(tput sgr 0) voor $(tput setaf 2)Whitelisting$(tput sgr 0) en terugzetten in oorspronkelijke map"; echo -n " of $(tput setaf 1)Q$(tput sgr 0) om te stoppen: "; read optie; case $optie in [vVwWqQ]) optie=$optie ;; *) optie=; esac done case $optie in [qQ]) optie=; scanquar;; [vV]) # echo "Verwijder"; echo; rm "${QUARANTINEDIR}""${FILE}"; if [ -z "$( ls -A "${QUARANTINEDIR}" )" ]; then rm "${RESTOREPATHS}" else grep -v "${DIR}${FILE}" "${RESTOREPATHS}" > /var/clamav/temp && mv /var/clamav/temp "${RESTOREPATHS}"; fi echo " Het Malwarebestand '"${FILE}"' is van de fileserver verwijderd"; echo; echo -n " Druk om verder te gaan"; read foo; scanquar;; [wW]) # echo "Whitelist en restore"; echo; sigtool --sha256 "${QUARANTINEDIR}${FILE}" >> /var/lib/clamav/false-positives.sfp mv "${QUARANTINEDIR}${FILE}" "${DIR}${FILE}"; if [ -z "$( ls -A "${QUARANTINEDIR}" )" ]; then rm "${RESTOREPATHS}" else grep -v "${DIR}${FILE}" "${RESTOREPATHS}" > /var/clamav/temp && mv /var/clamav/temp "${RESTOREPATHS}"; fi echo " Het bestand '"${FILE}"' is aan de Whitelist toegevoegd en teruggeplaatst."; echo; echo -n " Druk om door te gaan"; read foo; scanquar;; esac