Интеграция ClamAV в PureFTPd на Fedora 18
1 Предварительное примечание
На сервере уже должна быть рабочая установка PureFTPd (например, как в руководстве Virtual Hosting With PureFTPd And MySQL (Incl. Quota And Bandwidth Management) On Fedora 18). Эта инструкция дополняет PureFTPd утилитой сканирования ClamAV: при каждой загрузке файл проверяется clamd и при обнаружении угрозы удаляется.
Важно: сохраняйте резервные копии и информируйте пользователей о политике автоматического удаления заражённых файлов.
2 Установка ClamAV
Установите набор пакетов ClamAV командой:
yum install amavisd-new clamav clamav-data clamav-server clamav-update clamav-scannerДалее создайте ссылки автозапуска для службы clamd и запустите её:
systemctl enable clamd.amavisd.service
systemctl start clamd.amavisd.serviceПояснение: clamd — это демон, отвечающий за быстрые локальные проверки; clamdscan использует его для сканирования файлов.
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 [...] |
- Создайте скрипт проверки, который будет запускать 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, например:
| #!/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 |
Если /etc/rc.local отсутствует — создайте его и сделайте исполняемым:
chmod 755 /etc/rc.localНаконец, перезапустите PureFTPd:
systemctl restart pure-ftpd.serviceПосле этого при каждой загрузке через PureFTPd файл будет автоматически просканирован, и при обнаружении сигнатуры вредоносного ПО он будет удалён.
4 Мини-методика внедрения (пошаговая)
- Создайте резервную копию конфигураций PureFTPd и важных данных.
- Установите ClamAV и запустите clamd.
- Подключите CallUploadScript в конфиге PureFTPd.
- Разработайте скрипт обработки (clamav_check.sh) и протестируйте его вручную на разных файлах.
- Запустите pure-uploadscript в фоне и добавьте в автозапуск.
- Проведите функциональное и нагрузочное тестирование (см. Критерии приёмки).
5 Критерии приёмки
- clamd успешно запускается и отвечает на локальные запросы.
- pure-uploadscript запускается как демон и вызывает ваш скрипт при загрузке.
- При загрузке тестовых «эмулированных» вирусов (EICAR или аналог) файлы удаляются автоматически.
- Журналы (systemd, /var/log/clamav и PureFTPd) не содержат ошибок обработки.
6 Чек-листы по ролям
Администратор сервера:
- сделать бэкап конфигов;
- установить пакеты ClamAV;
- настроить и протестировать clamd;
- настроить автозапуск pure-uploadscript.
DevOps/инженер поддержки:
- настроить мониторинг службы clamd;
- добавить алерты при падении pure-uploadscript;
- проверить логи по расписанию.
Контент-менеджер/владелец сайта:
- уведомить пользователей об автоматическом удалении заражённых файлов;
- подготовить политику обработки спорных случаев.
7 Когда это не сработает (контрпримеры)
- Если clamd не запущен или недоступен локально, clamdscan вернёт ошибку и обработка не выполнится.
- Скрипт с опцией –remove удаляет файл мгновенно; если вы хотите карантин вместо удаления, текущая команда не подойдёт.
- ClamAV не гарантирует 100% обнаружения нового ПО-вредонос — это сигнатурная (и эвристическая) система с возможными ложными отрицаниями.
8 Альтернативные подходы
- Интеграция с внешними AV-сканерами по API (например, облачные сервисы) — позволяет детектировать больше, но требует сетевого доступа и может быть дороже.
- Настроить отдельный «карантинный» каталог и перемещать туда подозрительные файлы вместо удаления.
- Использовать дополнение на уровне MTA (если загрузки проходят через почтовый канал) или отдельный агент DLP для корпоративной среды.
9 Отладка и распространённые проблемы
- Проверка статуса clamd:
systemctl status clamd.amavisd.service- Тестирование clamdscan вручную:
/usr/bin/clamdscan --no-summary /path/to/testfile- Просмотрите логи ClamAV в /var/log/clamav и системные логи через journalctl.
- Если pure-uploadscript не запускается — проверьте права на /etc/pure-ftpd/clamav_check.sh и наличие интерпретатора в первой строке (#!/bin/sh).
Совет: сначала запустите скрипт вручную с путём к тестовому файлу, чтобы убедиться в ожидаемом поведении удаления.
10 Соображения по безопасности и конфиденциальности
- Просканированные файлы могут содержать персональные данные — продумайте retention и политику логирования в соответствии с локальным законодательством о защите данных.
- Убедитесь, что скрипт и его логика не дают возможности выполнения произвольного кода от имени root (проверяйте права и владельца).
- Если вы решите хранить подозрительные файлы, обеспечить к ним ограниченный доступ.
11 Фактбокс
- Платформа: Fedora 18 (инструкции ориентированы на systemd-era Fedora).
- Основной инструмент: ClamAV (clamd + clamdscan).
- Обработчик интеграции: pure-uploadscript + CallUploadScript в pure-ftpd.conf.
12 Ссылки
- PureFTPD: http://www.pureftpd.org/
- ClamAV: http://www.clamav.net/
- Fedora: http://fedoraproject.org/
13 Резюме
Интеграция ClamAV в PureFTPd на Fedora 18 даёт простой автоматический механизм очистки загружаемых файлов. Внедряя решение, следуйте пошаговой методике, тестируйте поведение на эмуляторах угроз и продумывайте политику обработки спорных случаев.
Важно: перед внедрением в продакшен выполните тестирование и проинформируйте пользователей об изменении поведения загрузок.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента