Гид по технологиям

Интеграция ClamAV с PureFTPd на CentOS 7

• 5 min read • Серверы • Обновлено 28 Nov 2025
ClamAV + PureFTPd: интеграция на CentOS 7
ClamAV + PureFTPd: интеграция на CentOS 7

Предварительная заметка

Вам нужна рабочая инсталляция PureFTPd на CentOS 7. Этот гайд дополняет базовую настройку FTP — он показывает, как на этапе загрузки запускать проверку файлов ClamAV и автоматически удалять обнаруженные угрозы.

Important: выполняйте команды с правами root или через sudo.

Установка ClamAV

ClamAV отсутствует в официальных репозиториях CentOS, поэтому сначала подключим репозиторий EPEL и убедимся, что ключи RPM импортированы.

Импорт GPG-ключей RPM:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Установка EPEL и приоритетов yum:

yum -y install epel-release
yum -y install yum-priorities

Откройте файл репозитория EPEL для установки приоритета:

nano /etc/yum.repos.d/epel.repo

В секции [epel] добавьте строку priority=10, чтобы приоритет репозитория был выше для нужных пакетов:

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[...]

Обновите существующие пакеты:

yum update

Установите ClamAV и сопутствующие пакеты:

yum -y clamav clamav-server clamav-data clamav-update clamav-filesystem clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd

Отредактируйте /etc/freshclam.conf и закомментируйте строку Example (добавив # перед ней):

nano /etc/freshclam.conf

В файле найдите и закомментируйте строку:

# Example

Далее отредактируйте /etc/clamd.d/scan.conf — также закомментируйте Example и убедитесь, что строка LocalSocket активна (без #):

nano /etc/clamd.d/scan.conf

В файле должно быть примерно так:

.....
# Example

....
LocalSocket /var/run/clamd.scan/clamd.sock
....

Создайте системные ссылки и обновите базы сигнатур:

systemctl enable [email protected]
freshclam

Запустите демона clamd:

systemctl start [email protected]

Проверьте статус:

systemctl status clamd@scan

Ожидаемый вывод покажет, что сервис активен и работает. Логи clamd будут подтверждать включённую поддержку форматов и авто-проверки.

Настройка PureFTPd для вызова скрипта проверки

Откройте конфигурацию PureFTPd и включите CallUploadScript:

nano /etc/pure-ftpd/pure-ftpd.conf

Найдите и измените опцию:

CallUploadScript yes

Теперь создадим скрипт, который будет запускать clamdscan при загрузке файла. Он будет вызван механизмом pure-uploadscript и получит путь к файлу в параметре $1.

nano /etc/pure-ftpd/clamav_check.sh

Вставьте содержимое:

#!/bin/sh
/usr/bin/clamdscan --fdpass --remove --quiet --no-summary -c /etc/clamd.d/scan.conf "$1"

Сделайте скрипт исполняемым:

chmod 755 /etc/pure-ftpd/clamav_check.sh

Запустите pure-uploadscript как фоновый демон, чтобы он вызывал наш скрипт при каждой загрузке:

pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh

Чтобы сервис запускался автоматически при загрузке, добавьте его в /etc/rc.local:

nano /etc/rc.local

Добавьте строку (например):

/usr/sbin/pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh
touch /var/lock/subsys/local

Перезапустите PureFTPd:

systemctl restart [email protected]

Теперь при загрузке файлов через PureFTPd будет вызываться clamdscan и заражённые файлы будут удаляться автоматически (опция –remove в clamdscan).

Проверка и отладка

  1. Загрузите тестовый файл (например, EICAR тестовый сигнал) через FTP.
  2. Проверьте логи clamd и системные логи:
journalctl -u [email protected]
cat /var/log/messages | grep clamd
  1. Убедитесь, что заражённый файл удалён. Если нет, проверьте права на сокет clamd и пользователя, под которым работает pure-uploadscript.

Notes: если pure-uploadscript и clamd работают под разными пользователями, используйте –fdpass и правильные права на LocalSocket (/var/run/clamd.scan/clamd.sock).

Критерии приёмки

  • ClamAV установлен и службы clamd + freshclam работают без ошибок.
  • PureFTPd настроен с CallUploadScript yes.
  • Скрипт /etc/pure-ftpd/clamav_check.sh исполняемый и успешно вызывает clamdscan.
  • При загрузке тестового заражённого файла файл удаляется, а в логах появляется соответствующая запись.

Когда это может не сработать

  • Защищённые паролем или зашифрованные архивы: ClamAV не сможет просканировать содержимое.
  • Очень большие файлы могут быть пропущены из-за ограничений памяти или таймаутов.
  • Новый или неизвестный вредоносный код может не распознаваться сигнатурами — требуется регулярное обновление баз.
  • Если SELinux включён и не настроен, доступ к сокету clamd может быть запрещён.

Альтернативные подходы

  • Сканирование по расписанию: запускать clamscan или clamdscan по cron для периодической проверки существующих файлов.
  • Проксирование FTP: ставить прокси/шлюз, который сканирует трафик и файлы до попадания на хост.
  • Сканирование на уровне хранения: интегрировать проверку в систему хранения (NFS, SAN) или в S3-совместимое хранилище.
  • Коммерческие решения с эвристикой и поддержкой реального времени.

Рекомендации по безопасности и жёсткая настройка

  • Права доступа: сокет /var/run/clamd.scan/clamd.sock должен иметь права, позволяющие pure-uploadscript записывать файл. Не давайте чрезмерных прав другим пользователям.
  • SELinux: если SELinux включён, добавьте правила, позволяющие доступ к сокету clamd, или настройте соответствующие контексты.
  • Логи: перенаправляйте и рота́йте логи clamd и pure-uploadscript, чтобы не заполнять диск.
  • Ограничения: добавьте ограничение размера загружаемых файлов на уровне PureFTPd, чтобы избежать DoS через большие файлы.
  • Обновления: настройте автоматическое обновление баз сигнатур (freshclam) и регулярно обновляйте пакеты ОС.

Руководство действий при инциденте

  1. Изолировать: прекратить приём файлов, временно отключить FTP или переместить на карантинный сервер.
  2. Сохранить артефакты: скопировать/заблокировать заражённые файлы и логи для анализа.
  3. Анализ: просканировать файл на локальной безопасной машине и определить тип угрозы.
  4. Восстановление: восстановить чистую копию файла/сервиса из резервной копии.
  5. Устранение причин: выяснить, как вредоносный файл попал на сервер (компрометация учётной записи, слабые пароли) и исправить.
  6. Отчёт и улучшения: внести изменения в процедуры, правила доступа и мониторинг.

Чек-лист по ролям

Администратор:

  • Установить EPEL и ClamAV.
  • Настроить и запустить clamd и freshclam.
  • Проверить права LocalSocket.

Специалист по безопасности:

  • Проверить SELinux и сетевые правила.
  • Настроить мониторинг и оповещения.
  • Провести тесты с эвристическими/обфусцированными образцами.

DevOps:

  • Автоматизировать запуск pure-uploadscript в systemd или через rc.local.
  • Добавить тесты при развертывании (smoke tests).

Факто-бокс: ключевые команды и пути

  • Конфигурация clamd: /etc/clamd.d/scan.conf
  • Конфигурация freshclam: /etc/freshclam.conf
  • Скрипт интеграции: /etc/pure-ftpd/clamav_check.sh
  • Полезные команды: systemctl start/enable [email protected], freshclam, clamdscan

Краткий глоссарий

  • ClamAV — свободный антивирусный движок для UNIX-подобных систем.
  • clamd — демон сканирования ClamAV, обслуживает запросы через сокет.
  • freshclam — обновлятор баз сигнатур ClamAV.
  • pure-uploadscript — вспомогательная утилита PureFTPd для обработки загруженных файлов.
  • LocalSocket — UNIX-сокет, через который clamd принимает запросы.

Ссылки

Краткое резюме

Интеграция ClamAV с PureFTPd на CentOS 7 обеспечивает автоматическое сканирование загружаемых файлов и удаление обнаруженной угрозы. Это дополнительный уровень защиты для FTP-сервера, но он не заменяет комплексную систему безопасности и регулярного обновления сигнатур и ОС.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро