ClamAV is een van die open-source antivirusprogramma’s die onopvallend op je server geïnstalleerd kan worden, maar je server wel kan beschermen tegen vervelende dingen zoals virussen, trojans en malware. Het wordt vooral gebruikt op Linux – denk aan Debian, CentOS en RHEL – met name wanneer je een lichtgewicht scanner nodig hebt voor bijvoorbeeld gebruikersmappen via FTP, Samba, websites of e-mailservers. Eerlijk gezegd kan de installatie in eerste instantie wat overweldigend lijken, vooral omdat je EPEL-repositories moet beheren, configuratiebestanden moet aanpassen en een aantal commando’s in de terminal moet uitvoeren. Maar als het eenmaal is ingesteld, heb je een degelijke tool die bestanden controleert, op de achtergrond draait en je server in de gaten houdt.
Als je ooit hebt geprobeerd antivirussoftware op Linux te installeren, heb je waarschijnlijk gemerkt dat het niet zo eenvoudig is als even op ‘Volgende’ klikken, toch? Je moet extra repositories toevoegen, systemd-services instellen en updates handmatig inplannen. Het goede nieuws? Eenmaal geconfigureerd is het systeem over het algemeen vrij stabiel en kun je scans of updates automatiseren zonder al te veel gedoe. Houd er wel rekening mee dat de eerste update of scan bij sommige systemen kan vastlopen of fouten kan geven – dat is vrij normaal. Linux en de bijbehorende repositories zijn niet altijd even goed gesynchroniseerd, dus geduld en wat uitproberen horen er vaak bij.
Hoe installeer en configureer je ClamAV op CentOS/RHEL?
ClamAV-pakketten installeren
Hier wordt het lastig. ClamAV bevindt zich niet in de standaard repository, dus je moet eerst de EPEL-repository toevoegen. Dat komt omdat CentOS en RHEL de basisrepositories vrij minimaal houden, en ClamAV is ondergebracht in EPEL (Extra Packages for Enterprise Linux).Om dit te doen, voer je het volgende commando uit:
# yum install epel-release -y
Zodra dat geïnstalleerd is, kun je verdergaan met de eigenlijke ClamAV-installatie. In plaats van alleen het hoofdpakket te installeren, heb je een aantal gerelateerde pakketten nodig om het soepel te laten werken, vooral als je wilt dat systemd-services en dergelijke op de achtergrond draaien. Het commando ziet er als volgt uit:
# yum -y install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd
Op CentOS 8 of nieuwer geeft u wellicht de voorkeur aan dnfin plaats van yum. Het principe is hetzelfde, alleen het commando is anders.
ClamAV configureren
Na de installatie moet je de standaardconfiguraties aanpassen. Nieuwe installaties worden standaard geleverd met voorbeeldconfiguraties die niet veel doen. Je moet die dus opschonen. Verwijder bijvoorbeeld de regel ‘Example ‘ in /etc/clamd.d/scan.conf of zet er een commentaar van.
# sed -i -e "s/^Example/#Example/" /etc/clamd.d/scan.conf
Open dat bestand vervolgens met de editor van je keuze ( nano, vi, enz.) en zoek naar deze regel:
LocalSocket /run/clamd.scan/clamd.sock
Verwijder het commentaarteken ( # ), zodat het er zo uitziet. Het is een beetje vreemd, maar dat socketbestand is hoe de daemon communiceert met de rest van het systeem. In sommige configuraties wilt u misschien ook logboekregistratie instellen, het maximum aantal verbindingen bepalen of mappen definiëren die moeten worden uitgesloten. De beschrijving in het configuratiebestand zelf is vrij gedetailleerd, dus neem de tijd om daar te kijken als u meer instellingen wilt aanpassen.
Het actueel houden van virushandtekeningen
ClamAV is niet erg nuttig als de virusdefinities verouderd zijn. De opdracht freshclam werkt de databases bij en het is erg belangrijk om deze regelmatig uit te voeren. Maak eerst een back-up van de oorspronkelijke configuratie:
# cp /etc/freshclam.conf /etc/freshclam.conf.bak
Verwijder vervolgens op dezelfde manier alle voorbeeldregels:
# sed -i -e "s/^Example/#Example/" /etc/freshclam.conf
Voer de update handmatig uit als opstartstap of plan deze later in via cron:
# freshclam
Of, als je wilt dat het elke paar uur op de achtergrond draait, start het dan als een daemon:
# freshclam -d
Maar de echte truc is het aanmaken van een systemd-service voor freshclam. Op die manier controleert het programma automatisch op nieuwe updates. Sla dit bestand op als /usr/lib/systemd/system/freshclam.service met een inhoud zoals:
[Unit] Description=FreshClam Daemon After=network.target [Service] Type=simple ExecStart=/usr/bin/freshclam -d -c 4 Restart=on-failure PrivateTmp=true RestartSec=10s [Install] WantedBy=multi-user.target
Herlaad vervolgens systemd en start deze daemon:
# systemctl daemon-reload # systemctl start freshclam.service # systemctl enable freshclam.service # systemctl status freshclam.service
Hetzelfde geldt voor de hoofd-ClamAV-daemon: je hebt een systemd-service nodig zodat deze automatisch start bij het herstarten van de server. Je wilt deze waarschijnlijk ingeschakeld hebben, zodat deze na het opstarten van de server wordt geactiveerd.
# systemctl start clamd.service # systemctl enable clamd.service
Virusscans uitvoeren
Nu alles geïnstalleerd en werkend is, kunt u daadwerkelijk bestanden scannen. Als u de map van uw website of een andere map wilt controleren, voert u gewoon het volgende commando uit:
# clamscan --infected --remove --recursive /var/www/
Dit scant recursief, verwijdert geïnfecteerde bestanden en toont welke bestanden zijn gevonden. Als verwijderen te agressief is, kunt u verdachte bestanden naar een andere locatie doorsturen in plaats van ze te verwijderen:
# clamscan --infected --recursive --move=/tmp/clamscan /var/www
Verdachte bestanden worden verplaatst naar /tmp/clamscan. Je kunt de scandetails ook loggen met –log :
# clamscan --infected --recursive --move=/tmp/clamscan --log=/var/log/clamscan.log /var/www
Als u bepaalde mappen wilt uitsluiten, bijvoorbeeld het beheerderspaneel, kunt u –exclude-dir gebruiken.
# clamscan -i --recursive --move=/tmp/clamscan --log=/var/log/clamscan.log --exclude-dir="/var/www/administrator" /var/www
En eerlijk gezegd is het instellen van een cronjob om deze scans volgens een schema uit te voeren niet zo moeilijk — slechts een regel of twee in /etc/crontab. Of gebruik Winhance als je liever een grafische interface gebruikt. Maar ja, scannen via de commandoregel is voor de meeste beheerders prima.
Oh, en er is ook een grafische interface genaamd ClamTk, voor het geval je liever op knoppen klikt in plaats van terminalopdrachten te gebruiken.