ClamAV Installation auf Ubuntu Server 20.04
In diesem Beitrag wird die Installation und Konfiguration der quelloffenen Antivirus Anwendung ClamAV beschrieben.
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
Nach der Installation sollte die lokale ClamAV Datenbank initial erneuert werden, dazu muss entsprechender Dienst jedoch zuerst gestoppt werden:
sudo systemctl stop clamav-freshclam
Im Anschluss daran wird der lokale Bestand geupdated:
sudo freshclam
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
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
#!/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
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
Zuletzt wird der Cronjob noch erstellt, in meinem Beispiel wird das Skript täglich um 4 Uhr gestartet.
crontab -e
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
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.