Мова: Українська
Починаючи з версії 5.0.0, автономний сервер ActivityInfo може сканувати файли, які користувачі завантажують у поля вкладень, на наявність вірусів та іншого шкідливого програмного забезпечення за допомогою ClamAV, широко використовуваного антивірусного механізму з відкритим кодом. У цій статті пояснюється, як працює сканування, а також як встановити та налаштувати ClamAV для роботи з ActivityInfo.
Як працює сканування
ActivityInfo не постачається разом з ClamAV. Натомість, він підключається до демона ClamAV (clamd), який ви встановлюєте окремо — або на тому ж комп'ютері, або на іншому хості, доступному через мережу. ActivityInfo взаємодіє з clamd через локальний сокет домену Unix (за замовчуванням) або через TCP-з'єднання.
Коли користувач завантажує файл, ActivityInfo зберігає його, а потім сканує у фоновому режимі. Кожне вкладення має один з наступних статусів:
| Статус | Значення | Доступно користувачам? |
|---|---|---|
| Очікує | Ще не проскановано або в черзі на повторне сканування. | Так |
| Чистий | Проскановано, загрози не виявлено. | Так |
| Заражений | ClamAV виявив відомий підпис шкідливого ПЗ. | Ні |
| Помилка | ClamAV відмовився обробляти файл (наприклад, пошкоджений або неправильно сформований файл). | Ні |
Оскільки сканування відбувається одразу після завершення завантаження, існує короткий проміжок часу, протягом якого щойно завантажений файл має статус Очікує і все ще доступний для завантаження. Якщо сканер тимчасово недоступний під час завантаження файлу, файл залишається у статусі Очікує; періодична фонова перевірка автоматично повторно сканує вкладення, що очікують, як тільки сканер знову стане доступним, тому жодні файли не будуть втрачені, і вам не потрібно завантажувати їх повторно.
Сканування на шкідливе ПЗ увімкнено за замовчуванням. Якщо ви не встановите ClamAV, завантаження все одно будуть успішними та файли будуть доступні, але вони залишатимуться у статусі Очікує (непроскановані), доки сканер не стане доступним. Щоб повністю вимкнути сканування, встановіть Enabled = False у розділі [Malware] файлу config.ini.
Встановлення ClamAV на Debian / Ubuntu
Встановіть демон ClamAV з репозиторію пакунків вашого дистрибутива:
apt install -y clamav-daemon
Потім запустіть обидві служби:
systemctl enable --now clamav-freshclam
systemctl enable --now clamav-daemon
На Debian та Ubuntu демон прослуховує локальний сокет Unix /var/run/clamav/clamd.ctl, що є налаштуванням ActivityInfo за замовчуванням. Конфігурація [Malware] не потрібна — як тільки демон запрацює, перезапустіть ActivityInfo, і сканування стане активним.
Встановлення ClamAV на Red Hat / RHEL
ClamAV поставляється в репозиторії EPEL для RHEL 9 та його похідних (AlmaLinux, Rocky Linux). Встановіть EPEL та пакунки ClamAV:
yum -y install epel-release
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
yum -y install clamav clamd clamav-update
Файли /etc/freshclam.conf та /etc/clamd.d/scan.conf містять рядок-маркер Example, який не дозволяє службам запускатися, доки його не буде вилучено (або закоментовано).
Крім того, ActivityInfo повинен мати доступ до clamd через локальний TCP-сокет. Відредагуйте /etc/clamd.d/scan.conf так, щоб рядок Example було видалено, а дві директиви TCP розкоментовано та встановлено наступним чином:
# /etc/clamd.d/scan.conf
# Видаліть (або закоментуйте) рядок "Example", що постачається з пакунком.
# Прослуховуйте локальний TCP-сокет, щоб ActivityInfo міг підключитися.
TCPSocket 3310
TCPAddr 127.0.0.1
Потім завантажте базу даних підписів і запустіть обидві служби:
freshclam
systemctl enable --now clamav-freshclam
systemctl enable --now clamd@scan
Потім налаштуйте ActivityInfo на TCP-сокет, додавши розділ [Malware] до /opt/activityinfo/config.ini та перезапустивши службу activityinfo:
[Malware]
Host=127.0.0.1
Port=3310
Запуск ClamAV як Docker-контейнера-сайдкара
Якщо ви запускаєте ActivityInfo як Docker-контейнер, найпростіший підхід — запустити офіційне зображення clamav/clamav як службу-сайдкар в тій самій мережі Docker і налаштувати ActivityInfo на нього за назвою служби. Дивіться посібник Конфігурація Traefik для повного прикладу Docker Compose, який запускає ActivityInfo та ClamAV разом. Відповідні змінні середовища:
ACTIVITYINFO_MALWARE_ENABLED=true
ACTIVITYINFO_MALWARE_HOST=clamav
ACTIVITYINFO_MALWARE_PORT=3310
Зображення clamav/clamav запускає freshclam при першому старті, що завантажує базу даних підписів і може зайняти кілька хвилин. Поки вона завантажується, сканер повідомляє про недоступність, і ActivityInfo зберігає щойно завантажені вкладення у статусі Очікує; фонова перевірка просканує їх, як тільки ClamAV буде готовий, тому не потрібне впорядкування запуску на основі стану працездатності.
Параметри конфігурації
Сканування налаштовується в розділі [Malware] файлу config.ini, і кожен параметр також може бути наданий як змінна середовища. Дивіться розділ [Malware] у довідці по конфігураційному файлу для повного списку параметрів та їхніх значень за замовчуванням.
Перевірка активності сканування
ActivityInfo надає неавтентифіковану кінцеву точку перевірки стану, яка повідомляє, чи доступний сканер. Відповідь не містить інформації про конкретні файли чи користувачів — лише про те, чи працює сканер:
curl https://activityinfo.example.gov/resources/malware/status
Кінцева точка повертає один з трьох станів:
| Стан | Значення |
|---|---|
| AVAILABLE | Сканер доступний і відповів на пінг. |
| UNREACHABLE | Сканування увімкнено, але сканер не відповів. Перевірте, чи запущено clamd, і чи правильно налаштовані сокет або хост і порт. |
| DISABLED | Сканування вимкнено в конфігурації ([Malware] Enabled = False). |
Щоб підтвердити, що виявлення працює повністю, ви можете завантажити безпечний тестовий файл EICAR у поле вкладення. ClamAV розпізнає його як шкідливе ПЗ, тому за кілька миттєвостей вкладення буде позначено як "Заражений" і стане недоступним для завантаження.
Вимкнення сканування
Щоб повністю вимкнути сканування на шкідливе ПЗ, встановіть наступне у файлі config.ini та перезапустіть ActivityInfo:
[Malware]
Enabled=False
При вимкненому скануванні вкладення приймаються та надаються без перевірки.