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
-
Подключаем чат.
-
Отправляем файл
eicar.txt. -
В логах сервиса 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