Seite 1 von 1

[HowTo] Automatischer Virenschutz Debian / Ubuntu Server

Verfasst: Sa 18. Nov 2017, 17:27
von Manuel
Guten Abend,

da es ab und an zu Probleme mit unsicheren Benutzerwebseiten kommt, die dann als SPAM oder Virenschleuder missbraucht werden, haben ich ein kleines Shell Script für unsere Benutzer entwickelt, mit dem Sie den Webserver jede Nacht auf Viren prüfen können. Das Script versendet beim erfolgreichem finden eines Virus automatisch eine E-Mail an den Systemadministrator.

Zunächst müssen die entsprechenden Tools installiert werden

Code: Alles auswählen

apt-get install mailutils clamav
Mailutils benötigt man für das versenden von E-Mails über die Linux Shell, clamav ist das Anti-Virenprogramm, welches wir bevorzugt auf Linux Servern einsetzen. Sollte keine aktuelle Clamav Version zur Verfügung stehen, findet man unter http://www.clamav.net die Sources um die aktuelle Version zu installieren.

Anschließend erstellen wir das Verzeichnis, wo ClamAV die nächtlichen Scanlogs ablegt.

Code: Alles auswählen

mkdir /home/clamav/
Jetzt kommen wir zum Shellscript, welches wir im Verzeichnis root ablegen.

Code: Alles auswählen

nano /root/clam-scan.sh
Scriptinhalt:

Code: Alles auswählen

#!/bin/sh
### Allgemeine Angaben
host=$(hostname -f)
scan_www=false
scan_mail=false
log_www=/path/to/logfile/scanlog-www.log
log_mail=/path/to/logfile/scanlog-mail.log
path_www=/var/www/virtual/
path_mail=/var/mail/
mailbetreff="Server $host Virenwarnung"
administratormail="support@domain.de"


### Script
### Auslösen des Scans
if $scan_www ; then     
        rm -R $log_www
        clamscan $path_www --recursive=yes --log=$log_www --infected --scan-html=yes --scan-pdf=yes --exclude=backups --exclude=logs --exclude=errors
        ### Versenden der E-Mail
        if grep -rl 'Infected files: 0' $log_www
                then echo "kein Virus auf www gefunden"
                else cat $log_www | mail -s "$mailbetreff" $administratormail
        fi
fi


if $scan_mail ; then
        rm -R $log_mail
        clamscan $path_mail --recursive=yes --log=$log_mail --infected --scan-html=yes --scan-pdf=yes --exclude=new
        if grep -rl 'Infected files: 0' $log_mail
                then echo "kein Virus auf mail gefunden"
                else cat $log_mail | mail -s "$mailbetreff" $administratormail
        fi
fi
Damit jetzt unser kleines Script jede Nacht seine Arbeit aufnimmt, muss lediglich ein Cron Job angelegt werden:

Code: Alles auswählen

crontab -e

Code: Alles auswählen

## Virenscan
30 3 * * * /bin/bash /root/clam-scan.sh
In diesem Fall wird um 3:30 an jedem Tag der Scan ausgeführt.

Dieses Kleine Script hat mich ca. 2 Stunden Zeit gekostet und bringt einen massiven Vorteil gerade im Webserver Betrieb. Wir haben beim Shell Script die Backups bewusst ausgeklammert, ich denke, dass das prüfen von Backups den Scanprozess nur unnötig in die Länge zieht, da die Backups sowieso jede Nacht neu generiert werden.

Vorsicht – das Script informiert nur! Es werden keine Viren automatisch gelöscht oder verschoben. Nicht immer sind die Virenwarnungen zutreffend, da ClamAV auch Sicherheitslücken im Webseiten Code sucht, daher gilt es die Löschung lieber durch die Webseitenbetreuer vorzunehmen.
Beim Scannen der Mails werden auch trash Ordner mitgescanned, es kann also sein, dass ein Kunde bereits die Virenmail in einen „zu Löschen“ Ordner verschoben hat, hier kann die Löschung unbedenklich durchgeführt werden.


In diesem Sinne, ich hoffe, das hilft euch bei der Verwaltung euerer Webserver weiter.