Virenscanner Auswertung für Linux-Server
Auch wenn für Linux-Systeme eigentlich keine klassischen Viren bekannt sind:
Schadprogramme wie Rootkits gibt es dennoch
Auch auf Linux-Servern sollte daher regelmäßig ein Virenscanner laufen.
Damit das automatisch im Hintergrund laufen kann, haben wir uns ein kleines Skript gebaut, das sich um den Scan, dessen Auswertung und den Versand von Statusemails kümmert.
Da immer mal wieder auch Fehlalarme von harmlosen Skripten verursacht werden, arbeitet unser Virenscan mit einer Whitelist. Für jeden Alarm wird nur eine einzige E-Mail verschickt. Der zuverlässige Admin wird sich darum schon kümmern...
#!/bin/bash ################################################## ##name: clamscan.sh ##last change: 09.06.2009 ################################################# #Variablen definieren EMAIL=email@meinedomain.tld #WICHTIG! Verzeichnisse müssen existieren EXCLUDE_DIR=/var/spool/clamscan/ if [ ! -d $EXCLUDE_DIR ]; then echo "Clamscan kann Exlude-Ordner auf $(hostname) nicht finden" \ | mail -s 'Exlude-Ordner auf '$(hostname)' nicht gefunden' $EMAIL exit 1 fi LOGDIR=/var/log/clamscan/ if [ ! -d $LOGDIR ]; then echo "Clamscan kann Logflie-Ordner auf $(hostname) nicht finden"\ | mail -s 'Logfile-Ordner auf '$(hostname)' nicht gefunden' $EMAIL exit 1 fi #Array mit zu scannenden Verzeichnissen allDirs="/bin /usr/local /www" for DIR in $allDirs; do DIRNAME=$(echo $DIR | sed 's!/!_!g') EXCLUDE_DATEI=$EXCLUDE_DIR$DIRNAME.exclude.txt #eventuell Exclude-Datei anlegen if [ ! -f $EXCLUDE_DATEI ]; then touch $EXCLUDE_DATEI fi LOG=$LOGDIR$DIRNAME.logfile.txt #Eventeull Logfile Anlegen if [ ! -f $LOG ]; then touch $LOG fi #whitelist in Variable speichern while read LINE; do EXCLUDE="$EXCLUDE --exclude $LINE" done < $EXCLUDE_DATEI #Scan durchführen ohne Whilelist /usr/bin/nice /usr/bin/clamscan -r -i --quiet --stdout $DIR $EXCLUDE --log=$LOG sleep 1 #Logfile nach Virenfunden durchsuchen TEMP=$(grep FOUND $LOG) if [ "$TEMP" != "" ]; then grep FOUND $LOG | sed 's!'$DIR'!!g' \ | mail -s 'Virus in '$DIR' auf '$(hostname)' gefunden!' $EMAIL fi #gefunden Viren in Whitelist aufnehmen - eine E-Mail reicht uns grep FOUND $LOG | cut -d " " -f 1 | cat >> $EXCLUDE_DATEI sed -i 's!:!!g' $EXCLUDE_DATEI rm $LOG done
Dateien:




