ClamAV z AMaViS – skaner antywirusowy dla serwera pocztowego

Na samym początku warto zapoznać się z dokumentacją:

# vi /usr/share/doc/clamav-server-*/README

Opisano w niej proces konfiguracji skanera uruchomionego w postaci demona: clamd.

Następnie można przejść do instalacji pakietów:

# yum install -y epel-release clamav clamav-scanner-systemd clamav-update

Po zainstalowaniu pakietu należy skopiować przykładowy plik konfiguracyjny demona clamAV do katalogu /etc/sysconfig, w którym przechowywane są pliki konfiguracyjne opisujące działania usług uruchamianych przez systemd:

# cp /usr/share/doc/clamav-server-0.99.2/clamd.sysconfig /etc/sysconfig/clamd.amavisd

W skopiowanym pliku w miejscu docelowym, należy odhaszować i edytować wpisy, jak w przykładzie poniżej:

CLAMD_CONFIGFILE=/etc/clamd.d/amavisd.conf
CLAMD_SOCKET=/var/run/clamd.amavisd/clamd.sock

Opis tworzenia plików tymczasowych dla demona AMaViS: /usr/lib/tmpfiles.d/amavisd-new.conf

Warto rozważyć zrobienie linku symbolicznego w /etc/ dla pliku konfiguracyjnego amavis.conf:

# cd /etc/ && ln -s /etc/clamd.d/amavisd.conf clamd.conf

Dodatkowo należy dostosować skrypt dla systemd /etc/sysconfig/clamd.amavisd:

[Unit]
Description = clamd scanner (%i) daemon
After = syslog.target nss-lookup.target network.target
[Service]
Type = simple
ExecStart = /usr/sbin/clamd -c /etc/clamd.d/%i.conf --foreground=yes
Restart = on-failure
PrivateTmp = true
[Install]
WantedBy=multi-user.target

Następnie należy odkomentować linię w pliku: /etc/clamd.d/amavisd.conf:

LocalSocket /var/run/clamd.amavisd/clamd.sock

Konfiguracja SELinuxa polega na ustawieniu polityki boolowskiej:

# setsebool -P antivirus_can_scan_system 1

oraz ustawieniu odpowiedniego kontekstu dla plików tworzonych w katalogu jak poniżej:

# semanage fcontext -a -t antivirus_var_run_t '/var/run/clamd.amavisd(/.*)?
# restorecon -vR clamd.amavisd/

Można teraz uruchomić freshclama. Warto wcześniej sprawdzić pliki konfiguracyjne (usunąć wpis: Example itd.) :

# rmp -qf `which freshclam`
# rpm -qf `which freshclam`
# vi /etc/freshclam.conf

Zakomententować wpis Example i FRESHCLAM_DELAY=disabled-warn, zgodnie z opisem w pliku konfiguracyjnym.
:x

# freshclam

Można teraz przetestować działanie clamd poleceniem:

clamd debug

I sprawdzić w logach czy wszystko działa.

Na koniec włączamy nową usługę przez systemd:

# systemctl start clamd@amavisd
# systemctl enable clamd@amavisd

W celu odwołania się do clamd z poziomu AMaViS należy w pliku: /etc/amavisd/amavisd.conf odkomentowac odpowiednie linie:

['ClamAV-clamd',
\&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock.sock"],
qr/\bOK$/m, qr/\bFOUND$/m,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],

Wcześniej oczywiście należy poprawnie skonfigurować program AMaViS w: /etc/amavisd/amavisd.conf (dla systemu Centos 7).