Интеграция ClamAV в PureFTPd для сканирования на вирусы в OpenSUSE 11.3
Этот пошаговый гайд показывает, как подключить ClamAV к PureFTPd на OpenSUSE 11.3: при каждом загрузке файла через PureFTPd будет запускаться clamdscan, который удалит обнаруженные вредоносные файлы. Подготовьте PureFTPd, установите ClamAV, создайте скрипт проверки и добавьте автозапуск демона.
Важно: всегда тестируйте на тестовом сервере перед внедрением в продакшн.
Введение
Версия 1.0
Автор: Falko Timme
Следите за мной в Twitter
В этом руководстве описано, как интегрировать ClamAV с PureFTPd для автоматического сканирования загружаемых файлов на OpenSUSE 11.3. В случае обнаружения вредоносного файла он будет удалён.
Определение: clamd — демон ClamAV; clamdscan — утилита для проверки файлов через clamd.
Предварительная заметка
Убедитесь, что PureFTPd уже настроен и работает на сервере OpenSUSE 11.3 (например, как в руководстве по виртуальному хостингу с PureFTPd и MySQL). Этот процесс предполагает наличие прав администратора (root).
Установка ClamAV
ClamAV устанавливается командой:
yast2 -i clamav clamav-dbПосле установки создайте системные ссылки для clamd и запустите демон:
chkconfig --add clamd
/etc/init.d/clamd startНастройка PureFTPd
Откройте файл конфигурации PureFTPd и измените Umask и разрешите вызов скриптов загрузки:
vi /etc/pure-ftpd/pure-ftpd.confВ файле задайте Umask 133:022 (это гарантирует, что clamdscan сможет читать загруженные файлы) и включите CallUploadScript:
[...]
# File creation mask. : .
# 177:077 if you feel paranoid.
Umask 133:022
[...]
# 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
[...] Создание скрипта проверки ClamAV
Создайте файл-скрипт, который будет вызываться при загрузке файла. Скрипт вызывает 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, чтобы он вызывал ваш скрипт при каждой загрузке файла:
pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.shЕсли запускать демона вручную неудобно, добавьте автозапуск при старте системы.
Автозапуск при загрузке системы
Откройте скрипт загрузки и добавьте команду запуска pure-uploadscript:
vi /etc/init.d/boot.localДобавьте строку запуска:
#! /bin/sh
#
# Copyright (c) 2002 SuSE Linux AG Nuernberg, Germany. All rights reserved.
#
# Author: Werner Fink <[email protected]>, 1996
# Burchard Steinbild, 1996
#
# /etc/init.d/boot.local
#
# script with local commands to be executed from init on system startup
#
# Here you should add things, that should happen directly after booting
# before we're going to the first run level.
#
/usr/sbin/pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.shПерезапуск PureFTPd
После внесённых изменений перезапустите PureFTPd, чтобы настройки вступили в силу:
/etc/init.d/pure-ftpd restartГотово — теперь при каждой загрузке через PureFTPd файлы будут проверяться ClamAV, а обнаруженные вредоносные файлы будут удаляться.
Что делать в случае проблем
Important: прежде чем удалять файлы в продакшне, протестируйте поведение на тестовой среде и убедитесь, что Umask не мешает доступу к файлам.
Пошаговая проверка при ошибках:
- Проверьте, работает ли демон clamd: /etc/init.d/clamd status или ps aux | grep clamd.
- Запустите clamdscan вручную на тестовом файле: /usr/bin/clamdscan /путь/к/файлу.
- Убедитесь, что pure-uploadscript запущен: ps aux | grep pure-uploadscript.
- Посмотрите логи PureFTPd и системные логи для ошибок разрешений.
Возможные причины неработоспособности:
- Неверный Umask в конфигурации PureFTPd — clamd не может прочитать файл.
- Selinux/AppArmor или другие механизмы безопасности блокируют доступ.
- Неправильно задан путь к скрипту или к clamdscan.
Альтернативные подходы и рекомендации
- Вместо удаления файлов можно настроить отправку в карантин или перемещение в отдельную папку из скрипта.
- Для высокой загрузки рассмотрите асинхронную проверку и очередь заданий (например, с Redis/queue), чтобы не блокировать FTP-сессию.
- Рассмотрите коммерческие AV-решения с централизованным управлением базами сигнатур для корпоративных сред.
Критерии приёмки
- clamd успешно запущен и отвечает на проверки.
- pure-uploadscript работает как демон и вызывает /etc/pure-ftpd/clamav_check.sh при загрузке.
- Заражённые тестовые файлы корректно удаляются (или перемещаются в карантин).
- Логи не содержат ошибок доступа или отказов.
Чек-лист для администратора
- Установлен clamav и clamav-db
- clamd запущен и в автозагрузке
- Umask в /etc/pure-ftpd/pure-ftpd.conf = 133:022
- CallUploadScript = yes
- /etc/pure-ftpd/clamav_check.sh присутствует и исполняемый
- pure-uploadscript запущен и настроен на автозапуск
- Перезапуск pure-ftpd выполнен и проверен
Краткое резюме
Интеграция ClamAV с PureFTPd на OpenSUSE 11.3 даёт базовую защиту от распространения вредоносных файлов через FTP: при загрузке файл проверяется clamdscan и удаляется при обнаружении угрозы. Для продакшн-среды рекомендуется тестирование, настройка карантина и мониторинг логов.
Ссылки
- PureFTPD: http://www.pureftpd.org/
- ClamAV: http://www.clamav.net/
- OpenSUSE: http://www.opensuse.org/
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента