Интеграция ClamAV с PureFTPd на CentOS 6.2
Кому подходит эта инструкция
- Системным администраторам, которые управляют FTP-серверами на CentOS 6.2.
- Тем, кто использует PureFTPd и хочет автоматически сканировать загрузки на наличие вирусов.
1 Вводная заметка
Предполагается, что у вас уже настроен PureFTPd на CentOS 6.2, например, как в руководстве «Virtual Hosting With PureFTPd And MySQL (Incl. Quota And Bandwidth Management) On CentOS 6.2». Эта инструкция дополняет существующую настройку антивирусной проверкой загрузок.
2 Установка ClamAV
ClamAV отсутствует в официальных репозиториях CentOS 6, поэтому включите репозиторий EPEL (если ещё не включён):
rpm --import https://fedoraproject.org/static/0608B895.txt
wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
rpm -ivh epel-release-6-5.noarch.rpmУстановите утилиту для приоритетов пакетов:
yum install yum-prioritiesОтредактируйте /etc/yum.repos.d/epel.repo и добавьте priority=10 в секцию [epel]:
| [epel] name=Extra Packages for Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch failovermethod=priority enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 [...] |
Установите ClamAV и демона:
yum install clamav clamdСоздайте ссылки автозапуска для clamd и обновите базы:
chkconfig --levels 235 clamd on
/usr/bin/freshclamЗапустите clamd:
/etc/init.d/clamd startВажно: freshclam обновляет базы сигнатур — проверьте, что он успешно скачал обновления и не блокируется прокси/файрволом.
3 Настройка PureFTPd для вызова скрипта при загрузке
- Включите опцию CallUploadScript в конфигурации 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. # Don't enable this option if you don't actually use pure-uploadscript. CallUploadScript yes [...] |
- Создайте скрипт /etc/pure-ftpd/clamav_check.sh, который будет вызывать 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- Добавьте автозапуск pure-uploadscript в /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 файл будет передан clamdscan; если файл обнаружен как вредоносный, он будет удалён (–remove).
Проверка и тестирование (минимальная методология)
- Убедитесь, что clamd запущен и отвечает: проверьте /var/log/clamav/clamd.log (или системный лог).
- Проверьте, что freshclam обновил сигнатуры без ошибок.
- Сделайте тестовую загрузку безопасным EICAR-файлом (стандартный тестовый файл для антивирусов). Ожидаемое поведение: clamdscan удаляет файл и PureFTPd регистрирует событие.
- Проверьте права и владельца скрипта /etc/pure-ftpd/clamav_check.sh: он должен быть исполняемым и доступным для пользователя, под которым запускается pure-uploadscript.
Важно: если у вас включён SELinux, временно отключите его для теста (setenforce 0) или настройте метки/политику, чтобы pure-uploadscript и clamd могли читать и удалять файлы. Анализ логов audit (audit.log) поможет выявить блокировки.
Критерии приёмки
- ClamAV успешно обновляет базы (freshclam без ошибок).
- При загрузке EICAR-файла он удаляется автоматически.
- Логи PureFTPd и clamd содержат записи о проверке/удалении.
- Нет ошибок прав доступа или SELinux, препятствующих работе скрипта.
Роли и контрольный список
- Системный администратор:
- Установить EPEL и пакеты clamav, clamd.
- Настроить автозапуск clamd и pure-uploadscript.
- Проверить права на скрипт и работу clamd.
- Инженер безопасности:
- Проверить результаты сканирования и журналы.
- Подготовить процедуру кварантина/удаления и уведомления.
- Оператор резервного копирования:
- Убедиться, что автоматическое удаление не нарушит процессы восстановления.
Альтернативные подходы и ограничения
- Если вы не хотите удалять файлы автоматически, замените опцию –remove в скрипте на перемещение в карантинную папку и уведомление администратора.
- Для больших объёмов загрузок и высокой нагрузки рассмотрите интеграцию с внешним прокси-сканером или отложенное асинхронное сканирование (чтобы не задерживать пользователей).
- На серверах с systemd (не применимо для CentOS 6.2) запуск и управление сервисами делают через systemctl; для CentOS 6.2 используются init-скрипты.
Когда этот метод может не сработать:
- Если PureFTPd был собран без поддержки pure-uploadscript — в этом случае потребуется перекомпиляция или другой метод интеграции.
- Если SELinux или файловые разрешения блокируют доступ clamd к загруженным файлам.
Процедура при обнаружении вредоносного файла (инцидентный план)
- Просмотрите логи clamd и PureFTPd, чтобы зафиксировать источник и время загрузки.
- Если файл удалён автоматически, восстановите из резервной копии при необходимости и проанализируйте вторичный перенос/сценарии заражения.
- Если система скомпрометирована, изолируйте пользователя/аккаунт и временно ограничьте доступ.
- Обновите базы сигнатур и выполните полную проверку подозрительных директорий.
Короткая памятка (cheat sheet)
- Включить EPEL -> yum install clamav clamd
- Запустить freshclam -> /usr/bin/freshclam
- Включить CallUploadScript в pure-ftpd.conf
- Создать /etc/pure-ftpd/clamav_check.sh с clamdscan –remove
- Запустить pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh
- Перезапустить pure-ftpd
Глоссарий (1 строка)
- ClamAV — открытый антивирусный движок для обнаружения вредоносного ПО.
- clamd — демон ClamAV, выполняет сканирование запросов.
- freshclam — инструмент обновления баз сигнатур ClamAV.
- pure-uploadscript — утилита PureFTPd для вызова скрипта при загрузке.
Ссылки
- PureFTPD: http://www.pureftpd.org/
- ClamAV: http://www.clamav.net/
- CentOS: http://www.centos.org/
Резюме
Интеграция ClamAV и PureFTPd на CentOS 6.2 позволяет автоматически сканировать и удалять вредоносные файлы при загрузке. Проверьте обновление сигнатур, права доступа и поведение при включённом SELinux. При необходимости замените автоматическое удаление на карантин и уведомления.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента