hostprofi.ru
Подобрать хостинг
Термин·буква C

ClamAV

краткое определение

Открытый антивирусный движок для Linux-серверов, популярен для проверки почтовых вложений и загружаемых файлов.

ClamAV — свободный антивирусный движок с открытым исходным кодом для обнаружения вредоносных программ, вирусов и фишинговых файлов. Основное применение на серверах — проверка файлов, загружаемых пользователями, и сканирование почтовых вложений. Разработан Tomasz Kojm, с 2007 года поддерживается Cisco.

Как работает

ClamAV сканирует файлы, сравнивая их с базой сигнатур (файлы .cvd и .cld). База содержит 8+ миллионов сигнатур вирусов, руткитов, троянов, фишинговых документов. Обновление базы — через freshclam, запускаемый по cron несколько раз в сутки.

Сканирование выполняется двумя инструментами: clamscan — одноразовое сканирование, clamdscan — клиент для демона clamd. Демон держит базу в памяти, что ускоряет сканирование в 10-20 раз по сравнению с каждый раз перечитывающим базу clamscan.

Установка и настройка

# Ubuntu/Debian
apt install clamav clamav-daemon

# Обновить базы сигнатур
freshclam

# Сканирование директории
clamscan -r /var/www/uploads/ --infected --remove

# Демон для постоянного сканирования
systemctl enable clamav-daemon
systemctl start clamav-daemon

# Сканирование через демон (быстрее)
clamdscan /var/www/uploads/new_file.pdf

История

ClamAV создан Tomasz Kojm в 2002 году как антивирус для Unix-систем. В 2004 году Sourcefire (впоследствии поглощённая Cisco) сделала ClamAV коммерческим проектом с открытым кодом. Долгое время ClamAV был единственным полноценным open-source антивирусом для Linux-серверов. В 2019 году Cisco передала управление проектом некоммерческой организации ClamAV.org.

Интеграция с почтовыми серверами

Основное применение ClamAV — сканирование почтовых вложений. ClamSMTP и Amavisd-new интегрируют ClamAV с Exim и Postfix. Все вложения проверяются перед доставкой в почтовый ящик. Заражённые письма помещаются в карантин или удаляются.

Для загрузок файлов на сайте: ClamAV через PHP-расширение или скрипт-обёртку сканирует каждый загружаемый файл. WordPress-плагины типа Anti-Malware Security интегрируются с ClamAV через clamdscan.

На что обращать внимание

ClamAV потребляет 500+ MB RAM при загруженной базе — на маленьких VPS (1 GB RAM) это критично. Оптимизация: уменьшить базу через ConcurrentDatabaseReload no и DatabaseDirectory на быстрый диск. Detection rate у ClamAV ниже коммерческих антивирусов — используйте как дополнительный, а не единственный уровень защиты. Обновляйте базы минимум раз в сутки.

Автоматизация сканирования

Скрипт для ежедневного сканирования загрузок через cron:

#!/bin/bash
# /etc/cron.daily/clamav-scan
SCAN_DIR="/var/www/uploads"
LOG_FILE="/var/log/clamav-scan.log"
DATE=$(date +%Y-%m-%d)

clamdscan --infected --remove $SCAN_DIR >> $LOG_FILE 2>&1
if [ $? -eq 1 ]; then
    echo "ClamAV нашёл вирусы в $SCAN_DIR - $DATE" |     mail -s "ALERT: Virus found" admin@example.com
fi

Режим On-Access сканирования (через clamonacc) проверяет файлы при записи в реальном времени без cron. Требует ядро с поддержкой fanotify. Потребление CPU выше, но заражённый файл обнаруживается немедленно.

Интеграция с веб-загрузками

PHP-пример сканирования до сохранения файла:

$tmpFile = $_FILES['upload']['tmp_name'];
$result = shell_exec("clamdscan --no-summary " . escapeshellarg($tmpFile));
if (strpos($result, 'Infected files: 1') !== false) {
    die('Файл заражён');
}

Для высоконагруженных сайтов с большим объёмом загрузок используйте очередь через Redis: файл сохраняется во временную директорию, задача сканирования добавляется в очередь, результат проверяется асинхронно.

Другие термины