Inhalt

ClamAV

Vorwort

Mit Beginn der Corona Pandemie sind mir vermehrt Events in den Logfiles meines Servers aufgefallen. Es wurde versucht Schdcode auf meine Systeme zu schleusen oder etwaige Webshells zu platzieren. Daher habe ich mich für den Einsatz von ClamAV entschieden, einer OpenSource Antivirus Lösung, die auch auf Linux Servern läuft und dieses auf allen Servern nachgerüstet. Das Tool läuft bei mir über einen Cronjob gesteuert und durchsucht bestimmte Pfade des Systems. Bei möglichen Funden wird ein Administrator benachrichtigt. Zudem kommt es auch in Kombination mit Nextcloud zum Einsatz und überwacht die Dateien innerhalb der Instanz.

Installation und Konfiguration

ClamAV kann mithilfe von 2 Paketen nachinstalliert werden:

1
sudo apt update && sudo apt install clamav clamav-daemon

Nach der Installation sollte die lokale ClamAV Datenbank initial erneuert werden, dazu muss entsprechender Dienst jedoch zuerst gestoppt werden:

1
2
sudo systemctl stop clamav-freshclam
Stoppen des ClamAV Dienstes

Im Anschluss daran wird der lokale Bestand geupdated:

1
sudo freshclam

Danach kann der kürzlich gestoppte Dienst wieder angestartet werden, fortan wird sich ClamAV (standardmäßig) jede Stunde neue Signaturen nachladen:

1
sudo systemctl start clamav-freshclam

Automatische Suche via Bashscript

Um künftig besondere Systempfade automatisch zu durchsuchen, kann ein Skript verwendet werden. Dieses kann anschließend durch Cronjobs zeitlich angepasst werden, um keine Nutzer einzuschränken, wenn diese mit Diensten auf dem Server interagieren.

1
nano ~/clamscan_daily.sh
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# !/bin/bash
LOGFILE="/var/log/clamav/clamav-$(date +'%Y-%m-%d').log";
EMAIL_MSG="Please see the log file attached";
EMAIL_TO="admin@domain.tld";
NODE="Hostname"
DIRTOSCAN="/var/www";

for S in ${DIRTOSCAN}; do
 DIRSIZE=$(du -sh "$S" 2>/dev/null | cut -f1);
 echo "Starting scan of "$S" directory.
 Directory size: "$DIRSIZE".";
 clamscan -ri --remove --detect-pua=yes "$S" >> "$LOGFILE";
 #find /var/log/clamav/ -type f -mtime +30 -exec rm {} \;
 MALWARE=$(tail "$LOGFILE"|grep Infected|cut -d" " -f3);

  if [ "$MALWARE" -ne "0" ];then
     echo "$EMAIL_MSG" | mail -s "Malware Found On "$NODE"" "$EMAIL_TO" -A "$LOGFILE";
  fi

done

exit 0

Anzupassende Parameter in diesem Skript sind folgende:

1
2
3
4
EMAIL_TO: Ersetzt die Vorlage durch eure Empfängeradresse
NODE: Als Node habe ich immer den Hostnamen des jeweiligen Servers gewählt
DIRTOSCAN: Das gewünschte Verzeichnis, welches ClamAV scannen soll
Im Standard Mode wird das Skript infizierte Dateien entfernen. Alternativ kann auch eine weitere Option ausgewählt werden, in der ClamAV infizierte Dateien nur auflistet - und meldet.

Zum Versenden der Mails benutze ich MSMTP, die Einrichtung dieses Tools wurde in einem anderen Beitrag hier im Blog schon beschrieben.

Nach Erstellen des Skriptes muss dieses noch ausführbar gemacht werden, dies geschieht über den nachstehenden Befehl:

1
chmod u+x clamscan_daily.sh

Zuletzt wird der Cronjob noch erstellt, in meinem Beispiel wird das Skript täglich um 4 Uhr gestartet.

1
crontab -e
1
0 4 ** * /home/<user>/clamascan_daily.sh >/dev/null 2>&1

Manueller Verzeichnisscan

Ab und an kann ein manueller Scan einer Datei oder eines Verzeichnis notwendig werden, hierfür können folgende Commands als Basis herangezogen werden:

Option 1: Potentiell infizierte Dateien nur melden

1
sudo clamscan --infected --detect-pua=yes --recursive /var/www

Option 2: Potentiell infizierte Dateien loeschen

1
sudo clamscan --infected --remove --recursive /var/www

Fazit

ClamAV ist installiert und eingerichtet, es scannt täglich den angegebenen Verzeichnispfad und meldet etwaige Funde per Mail an den Admin des Servers.

Damit herrscht ein weiteres Stück Sicherheit auf euren Servern, der binnen 30 Minuten realisiert werden kann.