Интеграция ClamAV в PureFTPd для сканирования вирусов на Ubuntu 14.04 LTS
Этот пошаговый гид показывает, как подключить ClamAV к PureFTPd на Ubuntu 14.04 LTS: при каждом загрузке файла PureFTPd вызовет clamdscan и удалит обнаруженные вредоносные файлы. Подойдёт для локальных и небольших продакшен-серверов, но учтите устаревшую версию ОС — рассмотрите обновление.
Version 1.0
Author: Falko Timme, updated by Srijan Kishore
Важно: я не даю гарантий, что инструкция сработает во всех окружениях.
Предварительные требования
- Рабочая установка PureFTPd на Ubuntu 14.04 LTS (например, с MySQL и квотами, как в документации по виртуальному хостингу).
- Доступ root (выполните:
sudo suчтобы стать root).
Замечание: Ubuntu 14.04 устарела; для безопасности и поддержки пакетов рекомендуется использовать более свежую LTS-версию, если это возможно.
Установка ClamAV
Установите пакеты ClamAV командой:
apt-get install clamav clamav-daemon clamav-dataЗагрузите актуальные сигнатуры:
freshclamЗапустите демон ClamAV:
service clamav-daemon startЕсли сервис не запускается, проверьте логи в /var/log/clamav/ и убедитесь, что freshclam завершился без ошибок.
Конфигурация PureFTPd для запуска скрипта при загрузке файлов
- Включите вызов скрипта загрузки, создав файл /etc/pure-ftpd/conf/CallUploadScript со строкой “yes”:
echo "yes" > /etc/pure-ftpd/conf/CallUploadScript- Создайте скрипт /etc/pure-ftpd/clamav_check.sh, который будет запускать clamdscan для каждого загруженного файла:
vi /etc/pure-ftpd/clamav_check.shВставьте в файл:
#!/bin/sh
/usr/bin/clamdscan --remove --quiet --no-summary "$1"Сделайте скрипт исполняемым:
chmod 755 /etc/pure-ftpd/clamav_check.sh- Отредактируйте конфигурацию демона PureFTPd, чтобы он использовал этот скрипт при загрузках. Откройте /etc/default/pure-ftpd-common:
vi /etc/default/pure-ftpd-commonНайдите строку UPLOADSCRIPT и измените её так:
[...]
# UPLOADSCRIPT: if this is set and the daemon is run in standalone mode,
# pure-uploadscript will also be run to spawn the program given below
# for handling uploads. see /usr/share/doc/pure-ftpd/README.gz or
# pure-uploadscript(8)
# example: UPLOADSCRIPT=/usr/local/sbin/uploadhandler.pl
UPLOADSCRIPT=/etc/pure-ftpd/clamav_check.sh
[...]- Перезапустите PureFTPd (если вы используете mysql-версию демона):
service pure-ftpd-mysql restartПосле этого при каждой загрузке PureFTPd будет запускать /etc/pure-ftpd/clamav_check.sh с путём к загруженному файлу в $1. clamdscan проверит файл и удалит его при обнаружении угрозы.
Тестирование
- Убедитесь, что clamd отвечает: выполните локальную проверку тестового файла. Для теста можно использовать EICAR-файл (тестовый «вирус»). Создайте файл eicar.txt со стандартным EICAR-тест-контентом и загрузите его через FTP.
- Проверьте, что файл удалён автоматически и что в логах ClamAV есть запись об обнаружении.
Проверка службы ClamAV:
/usr/bin/clamdscan --versionПроверка логов:
tail -n 100 /var/log/clamav/clamav.logКогда это может не сработать
- Если clamd недоступен или не запущен, скрипт вернёт ошибку и файл не будет просканирован/удалён.
- Если PureFTPd запущен в режиме, где CallUploadScript не поддерживается (например, определённые пакеты или сборки), механизм не сработает.
- Права доступа: если процесс pure-uploadscript не имеет прав на удаление файла (владелец/разрешения), удаление не произойдёт.
Устранение неполадок (короткий чеклист)
- Проверить, что /etc/pure-ftpd/conf/CallUploadScript содержит «yes».
- Проверить права и исполнение /etc/pure-ftpd/clamav_check.sh.
- Убедиться, что clamd запущен и отвечает (service clamav-daemon status).
- Проверить логи PureFTPd и ClamAV на ошибки.
Альтернативные подходы
- Использовать clamscan вместо clamdscan (более медленно, запускается каждый раз, не требует демона).
- Интегрировать сканирование с помощью amavisd-new + ClamAV для почтовых шлюзов и более сложной обработки.
- Отдельный поток сканирования: принимать файлы в карантинную директорию, где фоновой задачей (inotify/cron) происходит сканирование и перемещение/удаление.
Рекомендации по безопасности и эксплуатации
- Запускайте ClamAV под минимальными привилегиями; скрипт должен иметь только необходимые права.
- Регулярно обновляйте сигнатуры через cron (freshclam).
- Логируйте действия и интегрируйте оповещения при обнаружении — например, отправка почты или запись в централизованный лог.
Миграция и совместимость
Ubuntu 14.04 устарела — на новых версиях Ubuntu пакеты и расположение конфигураций могут отличаться. При миграции проверьте: пути к clamdscan, системные сервисы (systemd вместо SysV), и то, как ваша сборка PureFTPd поддерживает CallUploadScript.
Роль-based checklist
- Системный администратор: установить пакеты, настроить демоны, обеспечить обновления сигнатур.
- Оператор FTP: протестировать загрузку файлов, подтвердить удаление тестовых «вирусов».
- Безопасность/инженер SOC: настроить мониторинг и оповещения.
Краткая сводка
- Установите ClamAV и свежие сигнатуры.
- Создайте скрипт, вызывающий clamdscan с опцией –remove.
- Активируйте CallUploadScript в PureFTPd и укажите путь к скрипту в UPLOADSCRIPT.
- Перезапустите PureFTPd и протестируйте.
Полезные ссылки
- PureFTPD: http://www.pureftpd.org/
- ClamAV: http://www.clamav.net/
- Ubuntu: http://www.ubuntu.com/
Критерии приёмки
- При загрузке тестового EICAR-файла PureFTPd вызывает clamdscan и файл удаляется; запись обнаружения появляется в логах ClamAV.
Глоссарий (1 строка)
- clamdscan: клиент, обращающийся к демону clamd для быстрого сканирования файлов; –remove удаляет заражённые файлы.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента