15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți
24.10.2024

Cum să Instalezi ClamAV pe Linux: Un Ghid Tehnic Complet

ClamAV este un motor antivirus open-source, multiplatformă, menținut de Cisco Talos, care detectează viruși, troieni, rootkit-uri, malware și alte amenințări malițioase. Funcționează folosind un model de detecție bazat pe semnături, susținut de o bază de date actualizată continuu (/var/lib/clamav/), și este soluția antivirus standard de facto pentru serverele Linux, gateway-urile de mail și mediile de web hosting.

Acest ghid acoperă întregul ciclu de viață al instalării: pregătirea sistemului, instalarea pachetelor pe distribuțiile majore, gestionarea bazei de date de viruși cu freshclam, configurarea daemon-ului, strategii de scanare, gestionarea carantinei, automatizarea cu cron și scanarea în timp real prin clamonacc — inclusiv capcane de nivel producție pe care majoritatea tutorialelor le omit.

De ce contează ClamAV pe serverele Linux

Sistemele Linux nu sunt imune la malware. Deși exploit-urile care vizează Linux sunt mai puțin frecvente decât amenințările Windows, serverele care rulează aplicații web, relee de mail sau servicii de partajare a fișierelor sunt vectori activi pentru distribuirea malware-ului — chiar și atunci când gazda Linux în sine nu este ținta principală. Un mediu VPS Hosting compromis poate redistribui în tăcere fișiere infectate utilizatorilor finali, poate declanșa includerea pe lista neagră a bazelor de date de spam sau poate servi ca punct de pivot într-un lanț de atac mai amplu.

ClamAV abordează acest lucru oferind:

  • Scanare la cerere pentru analiză programată sau declanșată
  • Scanare în mod daemon (clamd) pentru verificări cu debit ridicat și latență scăzută
  • Integrare gateway de mail prin clamsmtp, amavisd-new sau Milter
  • Monitorizare în timp real a sistemului de fișiere prin clamonacc (kernel Linux fanotify)
  • Semnături bytecode pentru detecție euristică dincolo de potrivirea statică a tiparelor

Pasul 1: Pregătirea și actualizarea sistemului

Înainte de a instala orice pachet, sincronizați indexul de pachete și aplicați patch-urile de securitate în așteptare. Rularea unor biblioteci de sistem învechite alături de un instrument de securitate creează o falsă senzație de protecție.

Pentru Debian/Ubuntu:

sudo apt update && sudo apt upgrade -y

Pentru CentOS/RHEL 7:

sudo yum update -y

Pentru Rocky Linux / AlmaLinux / RHEL 8+:

sudo dnf update -y

Pentru Fedora:

sudo dnf update -y

Confirmați că versiunile kernel și glibc sunt actuale, deoarece clamonacc (scanare în timp real) necesită kernel 5.1+ pentru suport stabil fanotify.

Pasul 2: Instalarea ClamAV

ClamAV este disponibil în depozitele implicite ale tuturor distribuțiilor majore. Distincția cheie este dacă instalați doar scanner-ul (clamav) sau și daemon-ul de fundal (clamav-daemon / clamd), care este recomandat cu tărie pentru orice server de producție.

Pentru Debian/Ubuntu:

sudo apt install clamav clamav-daemon -y
  • clamav — instalează clamscan și freshclam
  • clamav-daemon — instalează clamd, daemon-ul de scanare persistent care menține baza de date de viruși încărcată în memorie, reducând dramatic costul per scanare
    
    Pentru CentOS/RHEL 7 (necesită EPEL):
    sudo yum install epel-release -y
    sudo yum install clamav clamav-update clamav-scanner-systemd clamd -y
    Pentru Rocky Linux / AlmaLinux / RHEL 8+ (necesită EPEL):
    sudo dnf install epel-release -y
    sudo dnf install clamav clamav-update clamd -y
    Pentru Fedora:
    sudo dnf install clamav clamav-update clamd -y
    Locații binare post-instalare de verificat:
    
    
    
    
    Binar
    Cale
    Scop
    
    
    
    
    clamscan
    /usr/bin/clamscan
    Scanner CLI la cerere
    
    
    clamd
    /usr/sbin/clamd
    Daemon de scanare în fundal
    
    
    freshclam
    /usr/bin/freshclam
    Actualizator bază de date de viruși
    
    
    clamdscan
    /usr/bin/clamdscan
    Client care delegă către clamd
    
    
    clamonacc
    /usr/sbin/clamonacc
    Scanner în timp real cu acces la fișiere
    
    
    
    
    Pasul 3: Actualizarea bazei de date de semnături de viruși
    Capacitatea de detecție a ClamAV depinde în totalitate de actualitatea bazei sale de date de semnături. Baza de date se află în /var/lib/clamav/ și constă din mai multe fișiere: main.cvd, daily.cvd (sau .cld) și bytecode.cvd.
    Opriți daemon-ul înainte de prima actualizare (Debian/Ubuntu)
    Pe sistemele Debian/Ubuntu, clamav-freshclam.service rulează automat după instalare și blochează directorul bazei de date. Dacă încercați să rulați freshclam manual în timp ce acest serviciu este activ, veți întâmpina un conflict de blocare. Opriți-l mai întâi:
    sudo systemctl stop clamav-freshclam
    sudo freshclam
    sudo systemctl start clamav-freshclam
    Pe CentOS/RHEL/Rocky/Alma:
    sudo freshclam
    Rezultat așteptat la o actualizare reușită:
    ClamAV update process started at ...
    daily.cvd updated (version: 27xxx, sigs: xxxxxxx, ...)
    main.cvd is up to date
    bytecode.cvd is up to date
    Configurarea actualizărilor automate ale bazei de date
    freshclam este controlat de /etc/clamav/freshclam.conf. Directive cheie de revizuit:
    sudo nano /etc/clamav/freshclam.conf
    Parametri critici:
    
    Checks 24 — numărul de verificări de actualizare pe zi (implicit: 12 pe unele distribuții)
    DatabaseMirror database.clamav.net — oglindă oficială; nu modificați decât dacă utilizați o oglindă privată
    NotifyClamd /etc/clamav/clamd.conf — instruiește freshclam să semnaleze clamd după o actualizare, astfel încât daemon-ul să reîncarce semnăturile fără a reporni
    
    Pasul 4: Configurarea și pornirea daemon-ului ClamAV
    Daemon-ul clamd menține întreaga bază de date de viruși rezidentă în RAM (de obicei 500 MB–1,2 GB în funcție de versiunea bazei de date). Aceasta elimină costul de pornire de mai multe secunde al clamscan, făcându-l esențial pentru orice mediu care efectuează scanări frecvente sau concurente.
    Debian/Ubuntu
    sudo systemctl start clamav-daemon
    sudo systemctl enable clamav-daemon
    sudo systemctl status clamav-daemon
    CentOS/RHEL 7
    Pe RHEL 7, unitatea de serviciu se numește clamd@scan, referindu-se la fișierul de configurare /etc/clamd.d/scan.conf:
    sudo systemctl start clamd@scan
    sudo systemctl enable clamd@scan
    Rocky Linux / AlmaLinux / RHEL 8+
    sudo systemctl start clamd@scan
    sudo systemctl enable clamd@scan
    Parametri cheie clamd.conf
    Configurația daemon-ului se află la /etc/clamav/clamd.conf (Debian/Ubuntu) sau /etc/clamd.d/scan.conf (familia RHEL). Revizuiți aceste directive:
    sudo nano /etc/clamav/clamd.conf
    Setări importante:
    
    LocalSocket /run/clamav/clamd.ctl — calea socket-ului Unix utilizată de clamdscan; asigurați-vă că aceasta corespunde configurației clientului dvs.
    MaxFileSize 100M — dimensiunea maximă a fișierului de scanat; măriți pentru serverele de mail care gestionează atașamente mari
    MaxScanSize 400M — datele maxime scanate per fișier după decompresie
    StreamMaxLength 100M — relevant pentru scanarea bazată pe milter/stream
    User clamav — daemon-ul rulează ca utilizatorul clamav; asigurați-vă că acest utilizator are acces de citire la directoarele pe care intenționați să le scanați
    LogFile /var/log/clamav/clamd.log — activați jurnalizarea persistentă pentru trasee de audit
    
    Capcană critică: Dacă clamd rulează ca utilizatorul clamav și scanați /home/user/uploads/, utilizatorul clamav trebuie să aibă permisiuni de citire pe acea cale. Uitarea acestui lucru duce la eșecuri silențioase ale scanării — clamd va raporta erori „Access denied” în jurnalul său în loc să returneze un verdict curat/infectat.
    Pasul 5: Rularea scanărilor cu clamscan și clamdscan
    Scanare la cerere cu clamscan
    clamscan este scanner-ul standalone. Încarcă baza de date de pe disc la fiecare invocare, făcându-l mai lent, dar independent de daemon.
    Scanați un director specific recursiv:
    clamscan -r /path/to/directory
    Scanați și afișați doar fișierele infectate:
    clamscan -r --infected /path/to/directory
    Scanați cu ieșire detaliată și înregistrați rezultatele:
    sudo clamscan -r --infected --log=/var/log/clamav/manual_scan.log /var/www/html
    Mutați fișierele infectate într-un director de carantină:
    sudo clamscan -r --move=/var/quarantine /path/to/directory
    Eliminați automat fișierele infectate (utilizați cu precauție în producție):
    sudo clamscan -r --remove /path/to/directory
    Scanați întregul sistem de fișiere (așteptați un timp de execuție semnificativ pe discuri mari):
    sudo clamscan -r --infected --exclude-dir="^/sys" --exclude-dir="^/proc" --exclude-dir="^/dev" /
    Excluderea /sys, /proc și /dev este obligatorie — scanarea acestor pseudo-sisteme de fișiere produce erori false și poate cauza blocări.
    Scanare de înaltă performanță cu clamdscan
    Când clamd rulează, utilizați clamdscan în loc de clamscan. Acesta trimite cereri de scanare către daemon-ul deja încărcat prin socket-ul Unix, făcându-l cu ordine de mărime mai rapid pentru scanări repetate sau în masă.
    clamdscan --fdpass /path/to/directory
    Indicatorul --fdpass transmite descriptorul de fișier direct către clamd, ocolind problemele de permisiuni care apar atunci când utilizatorul daemon-ului nu poate citi direct calea țintă.
    Scanare multi-thread cu clamdscan:
    clamdscan --multiscan --fdpass /var/www/html
    --multiscan instruiește clamd să scaneze fișierele în paralel folosind pool-ul său de fire, reducând semnificativ timpul de execuție pe sistemele multi-core.
    clamscan vs. clamdscan: Comparație de performanță
    
    
    
    
    Atribut
    `clamscan`
    `clamdscan`
    
    
    
    
    Încărcare bază de date per scanare
    Da (pornire lentă)
    Nu (daemon-ul menține BD în RAM)
    
    
    Timp tipic de pornire
    5–30 secunde
    Sub 1 secundă
    
    
    Necesită clamd în execuție
    Nu
    Da
    
    
    Scanare paralelă
    Nu
    Da (--multiscan)
    
    
    Cel mai bun caz de utilizare
    Scanări manuale ocazionale
    Scanări automate, frecvente sau în masă
    
    
    Model de permisiuni
    Rulează ca utilizatorul apelant
    Rulează ca utilizatorul clamav (utilizați --fdpass)
    
    
    
    
    Pasul 6: Automatizarea scanărilor cu Cron
    Pentru protecție continuă, programați scanări regulate folosind cron. Exemplul următor scanează rădăcina web zilnic la 02:00 AM și înregistrează rezultatele cu un marcaj de timp.
    sudo crontab -e
    Adăugați următoarea intrare:
    0 2 * * * /usr/bin/clamdscan --multiscan --fdpass --log=/var/log/clamav/daily_scan_$(date +%Y%m%d).log /var/www/html
    Cron de nivel producție cu alertare prin email la infecție:
    0 2 * * * /usr/bin/clamscan -r --infected /var/www/html 2>&1 | grep -v "^$" | mail -s "ClamAV Daily Scan Report - $(hostname)" admin@yourdomain.com
    Aceasta direcționează ieșirea non-goală direct către un destinatar de mail, asigurând că primiți alerte doar când se găsește ceva sau apare o eroare. Asigurați-vă că mailutils sau postfix este configurat pe server.
    Rotiți jurnalele de scanare pentru a preveni creșterea nelimitată a discului:
    sudo nano /etc/logrotate.d/clamav-scan
    /var/log/clamav/daily_scan_*.log {
        weekly
        rotate 4
        compress
        missingok
        notifempty
    }
    Pasul 7: Scanare în timp real cu acces la fișiere prin clamonacc
    clamonacc este componenta de scanare cu acces la fișiere a ClamAV, introdusă ca funcție stabilă în ClamAV 0.102. Se conectează la subsistemul fanotify al kernel-ului Linux pentru a intercepta evenimentele de deschidere și închidere a fișierelor, scanând fișierele înainte de a fi accesate.
    Cerințe:
    
    Kernel Linux 5.1 sau mai recent (pentru fanotify cu FAN_OPEN_EXEC_PERM)
    ClamAV 0.102+
    clamd trebuie să ruleze
    Privilegii root
    
    Activați scanarea cu acces la fișiere în clamd.conf
    sudo nano /etc/clamav/clamd.conf
    Adăugați sau decomentați:
    OnAccessIncludePath /home
    OnAccessIncludePath /var/www/html
    OnAccessPrevention yes
    OnAccessExcludeUname clamav
    
    OnAccessPrevention yes — blochează accesul la fișierele infectate în timp real (mod deny); setați la no pentru modul doar-detecție
    OnAccessExcludeUname clamav — împiedică clamd însuși să declanșeze bucle de scanare recursive
    
    Porniți clamonacc
    sudo clamonacc --log=/var/log/clamav/clamonacc.log --daemonize
    Pentru a-l rula ca serviciu systemd, creați un fișier de unitate:
    sudo nano /etc/systemd/system/clamonacc.service
    [Unit]
    Description=ClamAV On-Access Scanner
    Requires=clamav-daemon.service
    After=clamav-daemon.service
    
    [Service]
    Type=simple
    ExecStart=/usr/sbin/clamonacc --log=/var/log/clamav/clamonacc.log --foreground
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    sudo systemctl daemon-reload
    sudo systemctl enable --now clamonacc
    Capcană cunoscută: Pe serverele cu debit ridicat (de ex., endpoint-uri aglomerate de încărcare fișiere), OnAccessPrevention yes poate introduce latență I/O măsurabilă. Testați performanța sarcinii de lucru înainte de a activa modul de prevenire în producție. Luați în considerare limitarea OnAccessIncludePath la cea mai restrânsă cale necesară, mai degrabă decât directoare largi precum /.
    Pasul 8: Integrarea ClamAV cu serverele de mail
    Cel mai răspândit caz de utilizare în producție al ClamAV este scanarea gateway-ului de mail. Dacă rulați un server de mail pe infrastructura dvs. de VPS Hosting sau Servere Dedicate, integrarea ClamAV cu MTA-ul dvs. este un nivel critic de securitate.
    Stive comune de integrare:
    
    Postfix + amavisd-new + ClamAV — amavisd-new acționează ca filtru de conținut între Postfix și ClamAV, gestionând și SpamAssassin
    Postfix + clamsmtp — proxy ușor de tip milter
    Exim + ClamAV — directiva nativă Exim av_scanner suportă clamd direct prin socket
    
    Exemplu: integrare Exim clamd în /etc/exim4/exim4.conf:
    av_scanner = clamd:/run/clamav/clamd.ctl
    Această singură directivă rutează tot conținutul mesajelor prin instanța clamd în execuție înainte de livrare. Combinați aceasta cu o configurare adecvată de Email Hosting pentru a vă asigura că infrastructura de mail este complet protejată.
    Depanarea problemelor comune ClamAV
    freshclam eșuează cu „locked by another process”
    sudo systemctl stop clamav-freshclam
    sudo rm -f /var/lock/clamav/freshclam.lock
    sudo freshclam
    sudo systemctl start clamav-freshclam
    clamd nu pornește: „ERROR: Can’t open/parse the config file”
    Verificați calea fișierului de configurare și sintaxa:
    sudo clamd --config-file=/etc/clamav/clamd.conf --debug 2>&1 | head -50
    Utilizare ridicată a memoriei
    clamd consumă de obicei 500 MB–1,2 GB de RAM cu baza de date completă încărcată. Pe sistemele cu memorie limitată, luați în considerare:
    
    Setarea MaxThreads 2 în clamd.conf pentru a limita concurența
    Utilizarea clamscan fără daemon pentru scanări infrequente
    Actualizarea la un plan cu RAM suficient — un plan de VPS Hosting cu cel puțin 2 GB RAM este minimul practic pentru rularea clamd alături de un stack web
    
    Scanarea returnează „Access denied” pentru fișiere
    Daemon-ul clamd rulează ca utilizatorul clamav. Acordați acces de citire:
    sudo setfacl -R -m u:clamav:rX /path/to/scan
    Sau utilizați clamdscan --fdpass pentru a transmite descriptorii de fișiere din contextul utilizatorului apelant.
    Fals pozitive
    ClamAV semnalează ocazional fișiere legitime, în special arhive comprimate sau anumite framework-uri PHP. Pentru a include pe lista albă un fișier cunoscut ca sigur prin hash:
    sigtool --md5 /path/to/legitimate/file >> /var/lib/clamav/whitelist.fp
    Reporniți clamd după modificarea fișierelor .fp.
    ClamAV pe Shared Hosting vs. VPS vs. Server Dedicat
    Modelul de implementare afectează semnificativ modul în care ClamAV ar trebui configurat:
    
    
    
    
    Mediu
    Mod recomandat
    Note
    
    
    
    
    Web Hosting Shared
    clamscan la cerere prin cron
    Fără acces root; modul daemon indisponibil
    
    
    VPS (2–4 GB RAM)
    Daemon clamd + cron clamdscan
    Echilibrați performanța cu constrângerile de memorie
    
    
    Server Dedicat
    clamd + clamonacc + integrare mail
    Set complet de funcții; fără compromisuri de resurse
    
    
    Nod GPU/calcul intensiv
    Doar daemon clamd
    Evitați overhead-ul I/O clamonacc pe pipeline-urile de date
    
    
    
    
    Pentru mediile care necesită debit maxim și control complet asupra instrumentelor de securitate, Serverele Dedicate oferă resursele hardware necesare pentru a rula clamd, clamonacc și scanarea mail simultan, fără contention de resurse.
    Matricea de decizie tehnică și concluzii cheie
    Înainte de a implementa ClamAV, validați fiecare dintre următoarele:
    
    Versiunea kernel — rulați uname -r; confirmați 5.1+ dacă clamonacc este necesar
    RAM disponibil — clamd necesită 1–1,5 GB; planificați corespunzător înainte de a activa daemon-ul
    Automatizare freshclam — confirmați că clamav-freshclam.service este activat și NotifyClamd este setat în freshclam.conf
  • Permisiuni socket — verificați că utilizatorul clamav poate citi toate țintele de scanare; utilizați --fdpass cu clamdscan unde ACL-urile sunt impractice
  • Căi de excludere — excludeți întotdeauna /proc, /sys, /dev din scanările recursive
  • Rotația jurnalelor — implementați logrotate pentru toate fișierele jurnal ClamAV înainte de a activa job-urile cron zilnice
  • OnAccessPrevention — testați în modul doar-detecție (no) înainte de a trece la modul de blocare (yes) pe sistemele de producție
  • Integrare mail — dacă rulați un server de mail, integrați prin amavisd-new sau directiva nativă MTA av_scanner, nu doar prin scanări periodice ale fișierelor
  • Director de carantină — pre-creați /var/quarantine cu proprietatea corespunzătoare înainte de a utiliza --move; clamscan nu îl va crea automat
  • Gestionarea falselor pozitive — mențineți un fișier de listă albă .fp și revizuiți jurnalele de scanare după fiecare actualizare a bazei de date pentru regresii

Întrebări frecvente

ClamAV oferă protecție în timp real pe Linux în mod implicit?

Nu. După instalare, ClamAV funcționează doar în modul la cerere. Protecția în timp real necesită activarea explicită a clamonacc cu directivele OnAccessIncludePath și OnAccessPrevention în clamd.conf, plus un kernel care suportă fanotify (5.1+).

Care este diferența dintre clamscan și clamdscan?

clamscan este un binar standalone care încarcă baza de date de viruși de pe disc la fiecare invocare, rezultând o întârziere de pornire de 5–30 secunde. clamdscan este un client subțire care trimite job-uri de scanare către daemon-ul clamd deja în execuție, care menține baza de date în RAM — făcându-l semnificativ mai rapid pentru scanări repetate sau automate.

Câtă RAM necesită daemon-ul ClamAV?

clamd cu baza de date completă curentă (main + daily + bytecode) necesită de obicei între 700 MB și 1,2 GB de memorie rezidentă. Pe sistemele cu mai puțin de 2 GB RAM total, rularea daemon-ului alături de un server web sau bază de date poate cauza presiune pe memorie. Utilizați clamscan fără daemon pe instanțele cu memorie limitată.

Poate ClamAV să scaneze arhive comprimate și atașamente email?

Da. ClamAV despachetează și scanează nativ formatele ZIP, RAR, 7z, TAR, GZIP, BZIP2, CAB și multe alte formate de arhivă, precum și documente OLE2 (Microsoft Office), fișiere PDF și executabile ELF/PE. Directivele MaxScanSize și MaxFileSize din clamd.conf controlează limitele de adâncime și dimensiune pentru scanarea arhivelor.

De ce freshclam raportează „locked by another process” imediat după instalare?

Pe Debian/Ubuntu, serviciul systemd clamav-freshclam pornește automat după instalarea pachetului și deține o blocare exclusivă pe directorul bazei de date. Rularea freshclam manual în timp ce acest serviciu este activ cauzează un conflict de blocare. Opriți serviciul cu sudo systemctl stop clamav-freshclam, rulați actualizarea manuală, apoi reporniți serviciul.

15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți