Интеграция ClamAV в PureFTPd для сканирования вирусов на Fedora 14
Версия 1.0
Автор: Falko Timme
Следите за мной в Twitter
1 Предварительная заметка
На сервере должна быть рабочая установка PureFTPd на Fedora 14, например как в руководстве «Virtual Hosting With PureFTPd And MySQL (Incl. Quota And Bandwidth Management) On Fedora 14». Убедитесь, что у вас есть права root для установки пакетов и правка конфигурационных файлов.
Важно: это решение удаляет обнаруженные файлы автоматически (–remove). Если вы хотите сначала логировать инциденты и вручную разбирать случаи обнаружения, используйте опции без –remove и настройте отдельный лог.
2 Установка ClamAV
ClamAV устанавливается стандартной командой yum:
yum install amavisd-new clamav clamav-data clamav-server clamav-update clamav-scannerClamdscan ожидает конфигурационный файл /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Проверьте статус демона и логи (/var/log/messages или /var/log/clamav/) при необходимости.
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 [...] |
Создайте скрипт /etc/pure-ftpd/clamav_check.sh, который будет вызываться при каждой загрузке:
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…и добавьте строку запуска, например:
| #!/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 все файлы будут проверяться ClamAV, а обнаруженные вредоносные файлы будут удаляться автоматически.
4 Советы по эксплуатации и безопасность
- Логи: при активном –remove логируйте события отдельно (например, перенаправляйте stdout и stderr скрипта в /var/log/pureftpd-clamav.log), чтобы не терять информацию о том, какие файлы были удалены.
- Обновления сигнатур: убедитесь, что clamav-update (freshclam) настроен и работает, иначе обнаружение будет неэффективным.
- Права доступа: скрипт запускается от имени pure-uploadscript; проверьте, что у него достаточно прав на чтение временных мест загрузки и на удаление файлов.
- Производительность: на высокой загрузке использование clamd (демона) предпочтительнее одиночного clamscan; clamdscan обращается к уже запущенному демону и экономит ресурсы.
5 Когда этот подход не подходит
- Если вы не можете позволить себе автоматическое удаление файлов — используйте карантин или перемещение в отдельную директорию для дальнейшего анализа.
- Если файл шифрован или архив защищён паролем, ClamAV может не распознать угрозу.
- Для корпоративных сред с высоким уровнем требований к аудиту и расследованию инцидентов лучше внедрять систему карантина и централизованный SIEM.
Альтернативные подходы
- Интеграция с внешним AV/сканером через AMaViS или MTA для централизованной проверки почты и сайтов.
- Использовать S3/облачные хранилища с серверной проверкой (если приложение хранит файлы в облаке).
- Промежуточный файловый прокси — перехватывает и проверяет файлы перед передачей на backend.
Контрольный список развертывания
- Установлен clamd и clamdscan доступен по /usr/bin/clamdscan
- Создана ссылка /etc/clamd.conf при необходимости
- CallUploadScript в /etc/pure-ftpd/pure-ftpd.conf = yes
- /etc/pure-ftpd/clamav_check.sh создан и имеет права 755
- pure-uploadscript запущен и добавлен в /etc/rc.local
- Проверены обновления сигнатур (freshclam)
- Настроено логирование операций удаления/обнаружения
Критерии приёмки
- После загрузки тестового заражённого файла (eicar или аналог) файл не остаётся в конечной директории загрузки.
- В логах видно исполнение clamav_check.sh и результат проверки.
- После перезагрузки демоны clamd и pure-uploadscript автоматически стартуют.
Краткий словарь
- ClamAV — антивирус с открытым исходным кодом для обнаружения вредоносных программ.
- clamd — демон ClamAV, ускоряет сканирование через постоянный процесс.
- clamdscan — клиент для проверки файлов через clamd.
- pure-uploadscript — вспомогательный инструмент pure-ftpd для вызова скриптов при загрузке файлов.
Заключение
Интеграция ClamAV и PureFTPd на Fedora 14 позволяет автоматически сканировать и удалять заражённые файлы прямо при их загрузке пользователями FTP. Это простой и эффективный способ добавить уровень защиты, но требует настройки логирования, обновления сигнатур и планирования поведения при обнаружении (удалять, карантин или уведомлять).
Ссылки
- PureFTPD: http://www.pureftpd.org/
- ClamAV: http://www.clamav.net/
- Fedora: http://fedoraproject.org/
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента