Документация Webitel

Подключение ClamAV к Storage

1. Установка и настройка ClamAV на Debian 12

1.1. Установка пакетов

sudo apt update
sudo apt install clamav clamav-daemon clamav-freshclam clamdscan

Останавливаем сервисы перед настройкой:

sudo systemctl stop clamav-daemon.socket
sudo systemctl stop clamav-daemon
sudo systemctl stop clamav-freshclam

2. Настройка обновления антивирусной базы с локального зеркала

В файле /etc/clamav/freshclam.conf в конце должна быть запись по типу:

Checks 24
DatabaseMirror db.ua.clamav.net
DatabaseMirror database.clamav.net

Обновляем антивирусную базу:

sudo freshclam

В выводе должны быть сообщения о том, что базы daily.cvd, main.cvd, bytecode.cvd актуальны:

Wed Nov 19 12:10:50 2025 -> ClamAV update process started at Wed Nov 19 12:10:50 2025 

Wed Nov 19 12:10:50 2025 -> daily.cvd database is up-to-date (version: 27825, sigs: 2077108, f-level: 90, builder: svc.clamav-publisher) 

Wed Nov 19 12:10:50 2025 -> main.cvd database is up-to-date (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr) 

Wed Nov 19 12:10:50 2025 -> bytecode.cvd database is up-to-date (version: 339, sigs: 80, f-level: 90, builder: nrandolp) 

3. Настройка ClamAV (TCP и проверка документов)

Настраиваем ClamAV так, чтобы он проверял офисные документы и PDF, а также слушал TCP-порт (можно будет вынести на отдельную виртуалку):

sudo mkdir -p /etc/systemd/system/clamav-daemon.socket.d
sudo vi /etc/systemd/system/clamav-daemon.socket.d/tcp.conf

Добавляем в файл:

[Socket]
ListenStream=127.0.0.1:3310

Открываем /etc/clamav/clamd.conf и в КОНЦЕ файла добавляем:

TCPSocket 3310
TCPAddr 127.0.0.1

ConcurrentDatabaseReload yes
SelfCheck 600
CommandReadTimeout 30
SendBufTimeout 200

ScanOLE2 yes
ScanPDF yes

Обратите внимание! Эти параметры не должны дублироваться выше в файле. Если такие строки уже естьстарые необходимо удалить.

Запускаем сервис:

sudo systemctl daemon-reload
sudo systemctl start clamav-daemon.socket
sudo systemctl start clamav-daemon
sudo systemctl start clamav-freshclam

4. Подключение ClamAV к сервису Storage

Добавляем ключ в конфигурационный файл сервиса /etc/systemd/system/storage.service:

Environment="CLAM_ADDRESS=tcp://127.0.0.1:3310"

Перезапускаем сервис:

sudo systemctl daemon-reload
sudo systemctl restart storage

5. Тестирование

5.1. Создание тестового файла

Создаём файл eicar.txt со следующим содержимым:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

5.2. Проверка через Storage

  1. Подключаем чат.

  2. Отправляем файл eicar.txt.

  3. В логах сервиса Storage должны появиться строки по типу:

Nov 19 12:02:14 wbt08to10 storage[831495]: 2025-11-19T12:02:14.608Z        WARN        app/upload.go:184        virus detected on upload of file 'eicar.txt'. Signature: Eicar-Signature 

Nov 19 12:02:14 wbt08to10 storage[831495]: 2025-11-19T12:02:14.609Z        DEBUG        utils/file_backend_local.go:89        create new file /opt/storage/recordings/1/quarantine/2025/11/19/12/eicar.txt 

Nov 19 12:02:14 wbt08to10 storage[831495]: 2025-11-19T12:02:14.614Z        DEBUG        app/upload.go:318        stored eicar.txt in Default record file store, 69 bytes [encrypted=false, SHA256=true, clamd=true (FOUND/Eicar-Signature)] 

Nov 19 12:02:14 wbt08to10 storage[831495]: 2025-11-19T12:02:14.615Z        DEBUG        app/grpc_server.go:82        method /storage.FileService/UploadFile duration 14.859954ms