ClamAV is een gratis, opensource-antivirusprogramma voor de detectie van onder andere trojans, virussen en malware op je VPS. In deze tutorial laten wij je zien hoe je ClamAV installeert in Debian, zorgt dat ClamAV automatisch start, en je VPS dagelijks scant.
Voer de stappen in dit artikel uit als root-user, of gebruiker met root-rechten en verbind voor je verder gaat met je VPS via SSH of de VPS-console.
ClamAV installeren
Installeer ClamAV in Debian met het commando:
apt install -y clamav
Wil je ClamAV automatisch je VPS laten scannen en in real-time tegen virussen beschermen? Installeer dan de ClamAV daemon met het onderstaande commando.
De daemon gebruikt een redelijke hoeveelheid RAM, dus is het aan te raden om minimaal een VPS met 4GB RAM te gebruiken wanneer je de daemon installeert, of gebruik alternatief enkel de basis-versie samen met een Cronjob, zie de cronjob-instructie verderop dit artikel.
apt install -y clamav-daemon
De virus database updaten
ClamAV komt met een tool genaamd Freshclam om de virus database van ClamAV te updaten. Freshclam controleert automatisch 24x per dag op virus database updates.
Freshclam wordt automatisch uitgevoerd. De huidige status controleer je met:
systemctl status clamav-freshclam
Bij Debian staat Freshclam doorgaans niet automatisch aan na de installatie van ClamAV. Je zet FreshClam aan met het commando:
systemctl enable clamav-freshclam
systemctl start clamav-freshclam
Handmatig updaten
Als je freshclam uitzet (met systemctl stop clamav-freshclam) en enkel handmatig wil updaten, dan gebruik je het commando:
freshclam
Als je het bovenstaande commando gebruikt terwijl freshclam nog actief is, krijg je de melding:
ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).
Je VPS automatisch scannen
Automatisch scannen met de ClamAV-daemon
Gebruik je de daemon-versie van ClamAV, dan draait de ClamAV-daemon (ClamD) automatisch als service en zal ook na een herstart van je VPS automatisch starten.
ClamD zal niet automatisch je VPS in realtime beschermen. Hiervoor gebruikt het de aanvullende On-Access Scanning tool. Om deze aan te zetten, maak je eerst enkele aanpassingen in de ClamD configuratie:
Stap 1
Open de ClamD-configuratie
nano /etc/clamav/clamd.conf
Stap 2
Voeg de volgende inhoud toe onderaan het bestand (zie de toelichting):
ScanOnAccess yes
OnAccessIncludePath /home
OnAccessIncludePath /etc
OnAccessIncludePath /var
OnAccessPrevention yes
- ScanOnAccess yes : zet On-Access scanning aan
- OnAccessIncludePath : de mappen die hier gedefinieerd zijn (/home /etc /var) worden recursief gescand.
- OnAccessPrevention yes : blokkeert virussen, met 'no' wordt enkel een melding gemaakt maar geen actie ondernomen.
Er zijn nog meer opties, zoals het excluden van mappen met OnAccessExcludePath. Meer informatie over alle beschikbare opties vind je op deze pagina en hier worden enkele use cases besproken.
Stap 3
De wijzigingen kun je pas doorvoeren wanneer de clamav-daemon service uit staat. Zet deze dus uit als volgt:
systemctl stop clamav-daemon
Gebruik je Debian 10? Voer dan nog de volgende twee commando's uit. ClamAV voert namelijk het commando in stap 4 uit als ClamAV-user. Die heeft echter geen rechten om in /var/run/ een map en bestand te maken, waar de LocalSocket in terecht komt waar ClamAV zich aan bindt:
mkdir /run/clamav/
chmod 777 -R /run/clamav/
Stap 4
Start eerst ClamD en daarna de bijbehorende service:
clamd
systemctl start clamav-daemon
Het zal een momentje duren voor het starten van clamd voltooid is.
Debian 10: zet de rechten weer terug zoals ze stonden voor stap 3 (ClamAV is nu ook automatisch eigenaar van /var/run/clamav):
chmod 755 -R /run/clamav/
Aanvullende tips:
- Je controleert de status van de ClamAV-daemon met het commando:
systemctl status clamav-daemon
- De logbestanden vind je in:
nano /var/log/clamav/clamav.log
- Clamd heeft een resource monitor vergelijkbaar met top/htop. Deze gebruik je met het commando:
clamdtop
- Krijg je een melding dat inotify het maximaal aantal watchpoints heeft uitgeput, dan kun je er daar meer aan toevoegen met:
$ echo 524288 | sudo tee -a /proc/sys/fs/inotify/max_user_watches
Je VPS automatisch scannen met een cronjob
Aan het begin van dit artikel gaven wij aan dat de ClamAV daemon aardig wat RAM gebruikt. Als alternatief kun je ook de ClamAV-daemon niet installeren en een cronjob aanmaken waarmee je automatisch de handmatige ClamAV scan uitvoert (met een cronjob maak je een taak op je VPS om een of meerdere opdrachten uit te voeren op vaste momenten). Dit werkt als volgt:
Stap 1
Maak een cronjob aan met het commando:
crontab -e
Stap 2
Geef je cronjob bijvoorbeeld de volgende inhoud:
SHELL=/bin/bash
HOME=/
* */1 * * * date >> /var/log/clamav_log
* */1 * * * clamscan --exclude-dir=/proc/* --exclude-dir=/sys/* -i -r /
Kort samengevat doet bovenstaand het volgende:
- De cronjob wordt uitgevoerd ieder uur (gedefinieerd door * */1 * * *). Wil je liever dagelijks op een specifiek moment scannen? Voor iedere dag om 18:00 gebruik je bijvoorbeeld * 18 * * *. Op https://crontab.guru/ kun je zien hoe je in een cronjob specifieke tijden opgeeft.
- date >> /var/log/clamav_log: dit stukje zorgt dat iedere keer dat de cronjob wordt uitgevoerd in /var/log/clamav_log op een nieuwe regel aan het eind van /var/log/clamav_log de datum en tijd wordt vermeld van de synchronisatie.
- Het Clamscan commando wordt onder 'handmatig scannen met ClamAV' nader toegelicht. De toevoeging /var/log/clamav_log zorgt ervoor dat de output wordt weggeschreven naar /var/log/clamav_log (onder de datum en tijd). Zo kun je altijd terugkijken hoe de scan verlopen is via cat /var/log/clamav_log | less.
Het runnen van het clamscan commando zal, zolang de scan loopt, een verhoogd gebruik van je hardware veroorzaken. Hou hier rekening mee bij het vaststellen van de tijden waarop je de scan laat uitvoeren.
Desgewenst verwijder je de cronjob (i.e. alle cronjobs in de crontab) als volgt:
crontab -r
Je kan ook de bestaande aanpassen met:
crontab -e
Je cronjob zelf controleer je (zonder hem aan te passen) met:
crontab -l
Let op: gebruik je een custom logfile-directory zoals hierboven, vergeet dan niet die aan te maken (mkdir /var/log/siteupdates).
Je VPS handmatig scannen
Handmatig scannen met ClamAV
ClamAV scant enkel bestanden waartoe de uitvoerende gebruiker rechten heeft. Scan daarom altijd als root-user, of gebruik sudo.
Voor de handmatige versie gebruik je het commando:
clamscan --exclude-dir=/proc/* --exclude-dir=/sys/* -i -r /
- Met de toevoeging --exclude-dir=/proc/* en --exclude-dir=/sys/* zorg je dat ClamAV deze mappen niet scant. De /proc/ en /sys/ mappen zijn virtuele bestandssystemen die o.a. de communicatie tussen de hardware van je VPS / de processen van je VPS en je OS verzorgt.
- -i (infected) zorgt ervoor dat alleen geïnfecteerde bestanden getoond worden
- -r (recursive) zorgt ervoor dat alle onderliggende mappen gescand worden
- / geeft aan dat alle mappen van je VPS gescand worden. Je kunt hiermee dus ook specifieke mappen, e.g. /etc/
Handmatig scannen met ClamD
Je kunt ook met de ClamAV-daemon handmatig je OS scannen, maar deze heeft minder scan opties dan clamscan en is vooral bedoelt om specifieke mappen te scannen, niet je hele OS in een keer. De syntax die je hiervoor kunt gebruiken is:
clamdscan --fdpass -i /etc
- --fdpass: de ClamAV-daemon wordt door de gebruiker ClamAV uitgevoerd en heeft weinig rechten tot mappen. Met --fdpass geef je de rechten van de gebruiker waarmee je werkt aan clamdscan. Voer je dit commando als root-user uit, dan heeft clamdscan met --fdpass dus rechten om alle mappen te scannen waar de root-user toegang toe heeft.
- -i (infected) zorgt ervoor dat alleen geïnfecteerde bestanden getoond worden
- /etc Geeft aan welke map je (recursief) wil scannen.
Het scannen met ClamD maakt gebruik van de configuratie in clamd.conf. Je kunt dit bestand editen om het scannen naar je eigen wens aan te passen:
nano /etc/clamav/clamd.conf
Mocht je aan de hand van dit artikel nog vragen hebben, aarzel dan niet om onze supportafdeling te benaderen. Je kunt hen bereiken via de knop 'Neem contact op' onderaan deze pagina.