Гид по технологиям

Как интегрировать ClamAV в PureFTPd для сканирования вирусов на Fedora 13

• 4 min read • Серверы • Обновлено 24 Nov 2025
ClamAV + PureFTPd на Fedora 13 — интеграция
ClamAV + PureFTPd на Fedora 13 — интеграция

Версия и автор

Version 1.0
Author: Falko Timme
Follow me on Twitter

Важно: Перед началом убедитесь, что у вас есть резервные копии важной информации. Эта инструкция приведена «как есть»; работоспособность в вашей среде не гарантируется.

Краткое описание метода

Мы используем демона clamd для фонового сканирования и pure-uploadscript (часть PureFTPd) для вызова скрипта при загрузке файла. Скрипт вызывает /usr/bin/clamdscan с опцией –remove, поэтому заражённые файлы будут автоматически удаляться.

1. Предварительная заметка

У вас должен быть уже настроен PureFTPd на сервере Fedora 13. Например, можно использовать руководство «Virtual Hosting With PureFTPd And MySQL (Incl. Quota And Bandwidth Management) On Fedora 13» для базовой настройки.

2. Установка ClamAV

Установите необходимые пакеты командой (выполняется от root):

yum install amavisd-new clamav clamav-data clamav-server clamav-update clamav-scanner

Clamd ожидает конфигурационный файл /etc/clamd.conf, которого по умолчанию может не быть. Создайте символическую ссылку на конфигурацию amavisd:

ln -s /etc/clamd.d/amavisd.conf /etc/clamd.conf

Далее создайте системные ссылки запуска для демона clamd и запустите его:

chkconfig --levels 235 clamd.amavisd on  
/etc/init.d/clamd.amavisd start

После этого clamd будет доступен для вызовов clamdscan.

3. Настройка PureFTPd

Откройте конфигурацию PureFTPd и включите поддержку скрипта загрузки (CallUploadScript):

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 [...] |

Далее создайте скрипт-обработчик, который будет вызываться pure-uploadscript. Скрипт передаёт путь к файлу 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 как демон; он будет читать fifo, который создаёт PureFTPd, и запускать ваш скрипт при загрузках:

pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh

Чтобы запуск происходил автоматически при старте системы, добавьте запуск в /etc/rc.local:

vi /etc/rc.local

…и добавьте строку запуска. Пример содержимого /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 проверит файл и удалит его, если он признан вредоносным.

4. Проверка и валидация

  • Попробуйте загрузить тестовый EICAR-файл (стандартный тестовый файл антивирусов) чтобы подтвердить работу цепочки. Не загружайте реальные вредоносные файлы на продакшен-серверы.
  • Проверьте логи clamd и системные логи на предмет ошибок: /var/log/clamav/ и /var/log/messages или journalctl.
  • Убедитесь, что права и владелец скрипта /etc/pure-ftpd/clamav_check.sh безопасны, чтобы предотвратить подмену скрипта.

Когда этот метод НЕ подойдёт (ограничения)

  • Если вы хотите сохранять заражённые файлы для анализа (текущая конфигурация удаляет найденные файлы).
  • Если загрузки выполняются через другие сервисы (SFTP, WebDAV и т.д.) — этот подход работает только для загрузок через PureFTPd и pure-uploadscript.
  • Если у вас высокая нагрузка и большие объёмы файлов — синхронный вызов clamdscan может увеличить задержки и нагрузку CPU/IO.

Альтернативные подходы

  • Использовать проксирование или шлюз сканирования (например, AMaViS, специализированные шлюзы) для централизованного сканирования почты и загрузок.
  • Настроить асинхронную очередь: сохранять файлы в карантинную папку, а затем отдельный воркер сканирует их и принимает решение (удаление/уведомление).
  • Интегрировать с внешним движком безопасности или EDR для расширенной аналитики.

Мини-методология внедрения (шаги для администратора)

  1. Сделать бэкап конфигураций PureFTPd и системных скриптов.
  2. Установить ClamAV и запустить clamd.
  3. Включить CallUploadScript в pure-ftpd.conf.
  4. Добавить /etc/pure-ftpd/clamav_check.sh и сделать его исполняемым.
  5. Запустить pure-uploadscript и добавить его в автозапуск.
  6. Протестировать с EICAR, проверить логи и права на файлы.
  7. Наблюдать производительность и при необходимости перенести сканирование в асинхронную очередь.

Роли и краткий чеклист

  • Системный администратор: проверить установку пакетов, права, автозапуск демонов.
  • Операционная команда: мониторинг логов, тестирование EICAR, реагирование на ложные срабатывания.
  • Аналитик безопасности: политика удаления/карантина и хранение образцов для анализа.

Краткий глоссарий

  • clamd — демон ClamAV для быстрого сканирования через сокет.
  • clamdscan — клиентская утилита для запросов к демону clamd.
  • pure-uploadscript — вспомогательная утилита PureFTPd для вызова внешних скриптов при загрузках.

Безопасность и соответствие

  • Удаление обнаруженных файлов автоматически удобно, но может противоречить политике инцидент-менеджмента или требованиям регуляторов. Рассмотрите хранение копий в карантине с ограниченным доступом для последующего анализа.
  • При обработке пользовательских данных учитывайте локальные правила защиты персональных данных (например, GDPR) — если вы сохраняете подозрительные файлы для анализа, ограничьте доступ и срок хранения.

Критерии приёмки

  • ClamAV и clamd работают без ошибок.
  • При загрузке тестового EICAR-файла файл удаляется и соответствующая запись появляется в логах.
  • Права на /etc/pure-ftpd/clamav_check.sh корректны и скрипт не перезаписывается посторонними.

Итог

Этот способ прост в реализации и даёт базовую защиту при загрузках через PureFTPd. Для продакшена оцените влияние на производительность и подумайте о карантине вместо немедленного удаления, если вам нужны образцы для анализа.

Ссылки

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро