Интеграция 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-releaseyum -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).
Проверка и отладка
- Загрузите тестовый файл (например, EICAR тестовый сигнал) через FTP.
- Проверьте логи clamd и системные логи:
journalctl -u [email protected]
cat /var/log/messages | grep clamd- Убедитесь, что заражённый файл удалён. Если нет, проверьте права на сокет 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) и регулярно обновляйте пакеты ОС.
Руководство действий при инциденте
- Изолировать: прекратить приём файлов, временно отключить FTP или переместить на карантинный сервер.
- Сохранить артефакты: скопировать/заблокировать заражённые файлы и логи для анализа.
- Анализ: просканировать файл на локальной безопасной машине и определить тип угрозы.
- Восстановление: восстановить чистую копию файла/сервиса из резервной копии.
- Устранение причин: выяснить, как вредоносный файл попал на сервер (компрометация учётной записи, слабые пароли) и исправить.
- Отчёт и улучшения: внести изменения в процедуры, правила доступа и мониторинг.
Чек-лист по ролям
Администратор:
- Установить 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 принимает запросы.
Ссылки
- PureFTPD: http://www.pureftpd.org/
- ClamAV: http://www.clamav.net/
- CentOS: http://www.centos.org/
Краткое резюме
Интеграция ClamAV с PureFTPd на CentOS 7 обеспечивает автоматическое сканирование загружаемых файлов и удаление обнаруженной угрозы. Это дополнительный уровень защиты для FTP-сервера, но он не заменяет комплексную систему безопасности и регулярного обновления сигнатур и ОС.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента