ClamAV helyi tükörkiszolgáló létrehozása

kami911 képe

A ClamAV egy ingyenes és nyílt forráskódú víruskereső motor és a hozzá használható vírusadatbázis. Ez az adatbázis naponta többször frissül, így esetleg nagy forgalmat generál a központi letöltési kiszolgálók felé. Ennek elkerülésére célszerű szervezet szinten belső ClamAV adatbázis tükörkiszolgálót létrehozni. Ezt egy külön cvdupdate nevű Python programmal lehet elvégezni. A példában külön Python virtuális környezetben, külön felhasználóval kerül letöltésre a központi letöltési kiszolgálókról.

Felhasználó és a szükséges mappa létrehozása

Hozzon létre felhasználót a frissítő script futtatásához:

groupadd -g 678 -r clamav-update
useradd -c "ClamAV mirror update user" -g clamav-update -M -r -u 678 -s /sbin/nologin clamav-update

Hozza létre a cvdupdate alkalmazás megfelelő jogosultsággal a szükséges mappákat:

mkdir -p /srv/www/clamav/
chown clamav-update. /srv/www/clamav/

mkdir -p /var/log/clamav-update/
chown clamav-update. /var/log/clamav-update/

A cvdupdate Python modul telepítése

A cvdupdate Python alkalmazás elérhető innen:

https://github.com/Cisco-Talos/cvdupdate

A következő műveleteket az előbbiekben létrehozott „clamav-update” felhasználóként:

sudo -su clamav-update

Amennyiben proxy elérés kell a külső Python PIP tároló eléréséhez, azt adja meg, például így:

export https_proxy="http://192.168.50.50:3128/"

Telepítse a Virtualenv Python csomagot a Python virtuális csomag és függőségeinek telepítéséhez.

pip3 install --user virtualenv

Virtuális Python környezet létrehozása:

virtualenv -p python3.10 /home/clamav-update/python.clamav-update

A létrehozott virtuális Python környezetbe történő belépés:

. /home/clamav-update/python.cvdupdate/bin/activate

A cvdupdate nevű Python program telepítése:

python3 -m pip install --user cvdupdate

A telepített cvdupdate Python csomag a cvd parancsot teszi elérhetővé a rendszeren, ha a cvd program elérhető a $PATH környezeti változóban.

A cvdupdate Python modul beállítása

cvd config show
cvd config set --dbdir /srv/www/clamav/

Ha nincsen megadva a cvd parancs a $PATH környezeti változóban, akkor lehet Python modulként is futtatni. Beállítások megjelenítése:

python -m cvdupdate show

A fenti mappáknak megfelelő beállítások elvégzése:

python -m cvdupdate config set --dbdir /srv/www/clamav/
python -m cvdupdate config set --logdir /var/log/clamav-update/

A frissítési folyamat elindítása

python -m cvdupdate update

A frissítést érdemes rendszeresen lefuttatni például cron.d segítségével:

A „/etc/cron.d/clamav-update” fájl tartalma:

# proxy használata esetén: https_proxy="http://192.168.50.50:3128/"
0 */4 * * * clamav-update /usr/bin/env bash -c 'source /home/clamav-update/python.cvdupdate/bin/activate && python -m cvdupdate update' > /dev/null 2>&1

A „/srv/www/clamav/” mappát kell elérhetővé tenni Apache2/httpd, nginx, lighttpd segítségével, vagy éppen a cvdupdate programba épített webkiszolgáló segítségével.

Fájl elérhetővé tétele nginx segítségével

Telepítse az nginx webkiszolgáló alkalmazást és hozza létre a „/etc/nginx/sites-available/clamav-update.conf” fájlba:

server {
  listen       80;
  server_name  clamav-update.example.com;
  root         /srv/www/clamav/;

  location / {
    allow all;
    sendfile on;
    sendfile_max_chunk 10m;
    autoindex on;
    autoindex_exact_size off;
    autoindex_format html;
    autoindex_localtime on;
    if_modified_since before;
    access_log /var/log/nginx/clamav-update_access.log main;
    error_log /var/log/nginx/clamav-update_error.log;
  }
}

Majd szimbolikus linkelje a fájlt a sites-enabled mappába és indítsa újra az nginx szolgáltatást:

systemctl restart nginx

Megjegyzés

A

if_modified_since before;

nginx beállítás tehermentesíti a webkiszolgálót, mert a freshclam csak a módosult fájlokat tölti le.

Saját webkiszolgáló használata

A cvdupdate eszköz tartalmaz egy --serve funkciót, amely az aktuális adatbázis könyvtárát a http://localhost címen szolgálja ki, alapértelmezetten a 8000 porton.

Javasolt ClamAV beállítások

Amennyiben a számítógép legalább 8Gb memóriát tud a víruskeresési feladatokra elérni, akkor az alábbi beállítások elvégzését érdemes megtenni:

DetectPUA yes
ExcludePUA PUA.Win.Packer
ExcludePUA PUA.Win.Trojan.Packed
ExcludePUA PUA.Win.Trojan.Molebox
ExcludePUA PUA.Win.Packer.Upx
ExcludePUA PUA.Doc.Packed
MaxScanSize 150M
MaxFileSize 100M
MaxRecursion 40
MaxEmbeddedPE 100M
MaxHTMLNormalize 50M
MaxScriptNormalize 50M
MaxZipTypeRcg 50M

Javasolt freshclam.conf beállítások

A frissen letöltött adatbázisok teszteléséhez engedélyezze az alábbi beállítást:

TestDatabases yes

Javasolt SELinux beállítások

setsebool -P antivirus_can_scan_system 1
setsebool -P clamd_use_jit 1

Hibakeresés

A nem betöltött szignatúrák megjelenítése és a hiba oka:

clamscan --debug 2>&1 /dev/null | grep "loaded"