ClamAV Installation auf Ubuntu Server 20.04

In diesem Beitrag wird die Installation und Konfiguration der quelloffenen Antivirus Anwendung ClamAV beschrieben.

ClamAV Installation auf Ubuntu Server 20.04

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

Installation

ClamAV kann mithilfe von 2 Paketen nachinstalliert werden:

sudo apt update && sudo apt install clamav clamav-daemon
Installation der ClamAV Pakete

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

sudo systemctl stop clamav-freshclam
Stoppen des ClamAV Dienstes

Im Anschluss daran wird der lokale Bestand geupdated:

sudo freshclam
Update der Datenbanken

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

sudo systemctl start clamav-freshclam
Starten des ClamAV Dienstes

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.

nano ~/clamscan_daily.sh
Anlegen des Skriptes
#!/bin/bash
LOGFILE="/var/log/clamav/clamav-$(date +'%Y-%m-%d').log";
EMAIL_MSG="Please see the log file attached";
EMAIL_TO="[email protected]";
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
Inhalt des Scan Skriptes

Anzupassende Parameter in diesem Skript sind folgende:

  • 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:

chmod u+x clamscan_daily.sh
Bashskript ausführbar machen

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

crontab -e
Crontab als User öffnen
0 4 * * * /home/<user>/clamascan_daily.sh >/dev/null 2>&1
Syntax des Cronjobs

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
sudo clamscan --infected --detect-pua=yes --recursive /var/www
# Option 2: Potentiell infizierte Dateien loeschen
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.