Интеграция ClamAV с PureFTPd для сканирования на вирусы на Debian Lenny
Version 1.0
Автор: Falko Timme
Следите за автором в Twitter
Краткое объяснение
ClamAV — открытый антивирусный движок для сканирования файлов. PureFTPd — FTP-сервер. Мы добавим вызов clamdscan в процесс загрузки PureFTPd, чтобы автоматически проверять и удалять заражённые файлы.
Важно: данное руководство даёт рабочий пример, но не гарантирует полную безопасность в вашей среде.
Требования
- Сервер Debian Lenny с установленным PureFTPd и доступом root.
- Доступ к консоли и правам на редактирование файлов в /etc.
1 Установка ClamAV
Установите ClamAV и демон следующим образом:
aptitude install clamav clamav-daemon2 Конфигурация PureFTPd: включение upload-скрипта
- Создайте файл конфигурации, который включает запуск upload-скрипта:
echo "yes" > /etc/pure-ftpd/conf/CallUploadScript- Создайте скрипт, который будет вызываться PureFTPd при загрузке файла. Он запускает 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. Отредактируйте файл:
vi /etc/default/pure-ftpd-commonНайдите (или добавьте) строку UPLOADSCRIPT и измените её на:
UPLOADSCRIPT=/etc/pure-ftpd/clamav_check.sh- Перезапустите PureFTPd (в примере используется сборка с поддержкой MySQL):
/etc/init.d/pure-ftpd-mysql restartПосле этого PureFTPd будет запускать скрипт для каждого загружаемого файла.
3 Как это работает
- PureFTPd вызывает upload-скрипт и передаёт путь к загруженному файлу как аргумент ($1).
- Скрипт вызывает clamdscan, который сканирует файл и удаляет его при обнаружении угроз (–remove).
Примечание: clamdscan использует демон clamd, поэтому убедитесь, что clamd запущен и доступен.
4 Тестирование
- Проверьте, что clamd запущен:
/etc/init.d/clamav-daemon statusЗагрузите тестовый файл и проверьте поведение. Для проверки детектирования можно использовать стандартный EICAR тест-файл (безопасный тестовый вектор) или загрузить известный чистый файл и убедиться, что он сохраняется.
Проверьте логи PureFTPd и ClamAV, если файл не удалился:
- /var/log/syslog
- /var/log/daemon.log
- лог clamd (обычно /var/log/clamav/clamav.log)
5 Критерии приёмки
- При загрузке содержащего вредоносный код файла clamdscan обнаруживает угрозу и файл удаляется.
- Для чистых файлов upload проходит без удаления.
- В логах чётко видно вызов скрипта и результат сканирования.
6 Рекомендации безопасности и отладка
- Убедитесь, что /etc/pure-ftpd/clamav_check.sh имеет права 755 и принадлежит root.
- Проверьте, что clamd имеет доступ к файлу и права чтения.
- Если clamdscan не доступен в указанном пути, найдите его с помощью which clamdscan и обновите скрипт.
- Настройте обновление сигнатур (freshclam) и следите за его логами.
Важно: опция –remove удаляет файлы без дополнительного подтверждения. При тестировании можно временно убрать –remove и просматривать отчёты.
7 Альтернативные подходы
- Сканирование на уровне файловой системы (inotify) — скрипт слушает события и сканирует файл после записи.
- Сканирование при подаче на хранилище (например, при перемещении в конечный каталог).
- Проксирование FTP-трафика через специализированный шлюз с интегрированным AV.
Каждый подход имеет плюсы и минусы: встроенный upload-скрипт прост и работает вне зависимости от клиента, но зависит от реализации демона FTP.
8 Чек-лист для администратора
- Установлены clamav и clamav-daemon.
- Включён CallUploadScript в /etc/pure-ftpd/conf/.
- Создан и исполняем /etc/pure-ftpd/clamav_check.sh.
- Указан UPLOADSCRIPT в /etc/default/pure-ftpd-common.
- Перезапущен сервис PureFTPd и clamd.
- Выполнены тестовые загрузки и проверены логи.
9 Возможные проблемы и решения
Проблема: Файлы не удаляются.
Решение: Проверьте права на файл и пользователя, от имени которого выполняется скрипт. Проверьте доступ clamd к файлу.Проблема: clamdscan не найден.
Решение: Убедитесь, что пакет установлен и путь к clamdscan корректен.Проблема: Высокая нагрузка на CPU при большом количестве загрузок.
Решение: Рассмотрите очереди сканирования или выделение отдельного сервера для сканирования.
10 Дополнительно: примеры команд (шпаргалка)
- Сделать файл исполняемым:
chmod 755 /etc/pure-ftpd/clamav_check.sh- Проверить статус clamd:
/etc/init.d/clamav-daemon status- Перезапустить PureFTPd:
/etc/init.d/pure-ftpd-mysql restartКраткая сводка
В этой инструкции показано, как интегрировать ClamAV с PureFTPd на Debian Lenny через upload-скрипт. Решение простое в развертывании и даёт базовую защиту от заражённых файлов при загрузке. Для продакшена рекомендуются дополнительные меры: обновление сигнатур, мониторинг логов и масштабирование сканирования.
Ссылки
- PureFTPD: http://www.pureftpd.org/
- ClamAV: http://www.clamav.net/
- Debian: http://www.debian.org/
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента