Интеграция ClamAV с PureFTPd для проверки на вирусы на CentOS 5.4
Версия и автор
Версия 1.0
Автор: Falko Timme
Следите за мной в Twitter
Краткое описание задачи
В этом руководстве показано, как интегрировать антивирус ClamAV в PureFTPd на системе CentOS 5.4. В результате при каждом загрузке файла через PureFTPd ClamAV проверит файл и удалит его, если он окажется вредоносным. Я не даю гарантий, что всё сработает в вашей среде — тестируйте на стенде перед продакшеном.
1 Предварительная заметка
У вас должен быть рабочий PureFTPd на сервере CentOS 5.4, например, как в руководстве «Virtual Hosting With PureFTPd And MySQL (Incl. Quota And Bandwidth Management) On CentOS 5.3». Новая версия CentOS 5.4 также совместима с этими инструкциями.
2 Установка ClamAV
ClamAV отсутствует в стандартных репозиториях CentOS, поэтому включим репозиторий RPMforge:
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txtcd /tmp
wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rpm -ivh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpmПосле этого можно установить ClamAV и демон clamd:
yum install clamav clamdДалее создаём автозагрузку для clamd и обновляем базы:
chkconfig --levels 235 clamd on
/usr/bin/freshclamЗапускаем демон:
/etc/init.d/clamd startВажно: freshclam обновляет подписи вирусов. Рекомендуется настроить cron или системный таймер для регулярных обновлений, иначе сканирование будет бесполезным при устаревших сигнатурах.
3 Конфигурация PureFTPd
Откройте конфигурационный файл PureFTPd и включите вызов скрипта загрузки:
vi /etc/pure-ftpd/pure-ftpd.conf| [...] # If your pure-ftpd has been compiled with pure-uploadscript support, # this will make pure-ftpd write info about new uploads to # /var/run/pure-ftpd.upload.pipe so pure-uploadscript can read it and # spawn a script to handle the upload. CallUploadScript yes [...] |
Далее создаём скрипт /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Запустите pure-uploadscript как демон. Он будет вызывать наш скрипт для каждого загруженного файла:
pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.shЧтобы запуск происходил автоматически при старте системы, добавьте запуск демона в /etc/rc.local:
vi /etc/rc.local…и добавьте строку:
/usr/sbin/pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.shПример /etc/rc.local:
| #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. /usr/sbin/pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh touch /var/lock/subsys/local |
Наконец, перезапустите PureFTPd:
/etc/init.d/pure-ftpd restartТеперь при загрузке через PureFTPd подозрительные файлы будут молча удаляться демоном clamdscan.
Когда этот подход не сработает (примеры)
- Если ClamAV имеет устаревшие сигнатуры — он пропустит новые угрозы.
- Если файлы шифрованы или упакованы нестандартно — сигнатуры могут не обнаружить вредоносный код.
- Если требуется аудит и сохранение заражённых файлов для анализа — автоматическое удаление мешает исследованию.
- Если PureFTPd был скомпилирован без поддержки pure-uploadscript — описанный метод не применим.
Альтернативные подходы
- Интеграция at-access сканера на уровне файловой системы (например, через ClamAV + fanotify/inotify) — сканирует не только через FTP.
- Прокси-сканирование на уровне сетевого шлюза (например, HTTP/FTP прокси с антивирусной проверкой).
- Сохранение заражённых файлов в карантинную директорию, а не мгновенное удаление — полезно для форензики.
Мини-методология проверки и приёмки
- Подготовка стенда: клонируйте продакшен-конфигурацию.
- Установка и настройка ClamAV + PureFTPd как в инструкции.
- Тестовые загрузки: чистые файлы, тестовый EICAR, архивы, бинарники.
- Проверка логов: /var/log/messages, журналы pure-uploadscript, вывод clamd.
- Утверждение: приёмка, когда >90% тестовых угроз корректно обнаруживаются и удаляются, а легитимные файлы не блокируются.
Роли и чеклист для ответственных
- Системный администратор:
- Установить RPMforge и ClamAV, включить clamd в автозагрузку.
- Добавить pure-uploadscript в /etc/rc.local и перезапустить службы.
- Офицер по безопасности:
- Проверить политику удаления файлов, согласовать карантин и уведомления.
- Настроить регулярное обновление баз (freshclam) и мониторинг обновлений.
- Оператор поддержки:
- Тестировать загрузки пользователей, отслеживать ложные срабатывания, держать шаблоны для отчётов.
Безопасность и рекомендации по жёсткой настройке
- Запускайте clamd с минимально необходимыми привилегиями и под отдельным системным пользователем, если это возможно.
- Логи: ограничьте доступ к логам и хранениям, чтобы атакующий не мог скрыть следы.
- Карантин: вместо автоматического удаления храните заражённые файлы в изолированной папке и уведомляйте администратора.
- Обновления: настройте cron для /usr/bin/freshclam хотя бы раз в сутки.
Совместимость и заметки по миграции
- Инструкция рассчитана на CentOS 5.4 и PureFTPd со включённой поддержкой pure-uploadscript.
- На современных дистрибутивах (CentOS 7/8, AlmaLinux, Rocky) конфигурация сервисов, systemd-юниты и пути могут отличаться — используйте systemd-юнит вместо /etc/rc.local и проверьте пакетные репозитории для актуальной версии ClamAV.
Краткий глоссарий (1 строка)
- clamd: демон ClamAV, выполняющий сканирование в реальном времени;
- clamdscan: клиентская утилита, посылающая файлы на clamd для проверки;
- pure-uploadscript: компонент PureFTPd, вызывающий скрипт при загрузке файла.
Тестовые сценарии и критерии приёмки
- Сценарий 1: загрузка EICAR тест-файла — ожидается обнаружение и удаление.
- Сценарий 2: загрузка обычного текстового файла — не должно быть удаления.
- Сценарий 3: загрузка архива с заражённым файлом — проверьте, распаковывает ли clamdscan архивы по умолчанию; если нет — настройте дополнительную проверку.
Критерии приёмки: все тестовые угрозы обнаружены и удалены; легитимные файлы не блокируются; обновления сигнатур работают автоматически.
4 Ссылки
- PureFTPD: http://www.pureftpd.org/
- ClamAV: http://www.clamav.net/
- CentOS: http://www.centos.org/
Итог
Интеграция ClamAV и PureFTPd по схеме pure-uploadscript + clamdscan даёт простой и рабочий фильтр для FTP-загрузок. Это решение эффективно как базовый уровень защиты, но имеет ограничения — регулярно обновляйте сигнатуры, тестируйте на предмет ложных срабатываний и рассматривайте дополнения (карантин, сетевое сканирование) для повышения надёжности.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента