Интеграция ClamAV с ProFTPd на Debian Lenny
Краткое содержание
- Что нужно: сервер Debian Lenny с рабочим ProFTPd.
- Итог: при каждой загрузке ProFTPd передаёт файл clamd; обнаруженные угрозы удаляются.
1 Предварительная заметка
Убедитесь, что ProFTPd уже установлен и работает на вашем сервере Debian Lenny. Это руководство предполагает доступ к shell с правами root или sudo. “Clamd” — демон ClamAV, который выполняет сканирование по запросу.
2 Установка ClamAV
Установите ClamAV и нужные пакеты:
aptitude install clamav clamav-daemon libclamav-devЗатем нужно переконфигурировать ClamAV, чтобы clamd использовал TCP, а не Unix-сокет. При использовании chroot (например, DefaultRoot в ProFTPd) Unix-сокет недоступен внутри chroot, поэтому рекомендуется TCP.
Запустите:
dpkg-reconfigure clamav-baseОтветьте на вопросы следующим образом (остальные значения оставьте по умолчанию):
Socket type: <– TCP
TCP port clamd will listen on: <– 3310
IP address clamd will listen on: <– 127.0.0.1
Перезапустите демоны ClamAV:
/etc/init.d/clamav-daemon restart
/etc/init.d/clamav-freshclam restartПроверьте, что clamd слушает на localhost:3310:
netstat -tap | grep clamdОжидемый вывод (пример):
server1:~# netstat -tap | grep clamd
tcp 0 0 localhost.localdom:3310 *:* LISTEN 29430/clamd
server1:~#3 Пересборка ProFTPd с mod_clamav
По умолчанию mod_clamav не входит в пакеты ProFTPd Debian. Мы используем исходники ProFTPd, добавим модуль в contrib и соберём .deb-пакеты.
Установите зависимости для сборки ProFTPd:
aptitude build-dep proftpdЕсли не установлен, добавьте libpam-dev:
aptitude install libpam-devСкачайте исходники ProFTPd в /usr/src:
cd /usr/src
apt-get source proftpdСкачайте mod_clamav и распакуйте:
wget --no-check-certificate https://secure.thrallingpenguin.com/redmine/attachments/download/1/mod_clamav-0.11rc.tar.gz
tar xzvf mod_clamav-0.11rc.tar.gzСкопируйте файлы модуля в каталог contrib исходников ProFTPd:
cp mod_clamav-0.11rc/mod_clamav.* proftpd-dfsg-1.3.1/contribПримените патч к исходникам ProFTPd:
cd proftpd-dfsg-1.3.1
patch -p1 < ../mod_clamav-0.11rc/proftpd.patchОтредактируйте debian/rules — добавьте флаг –with-modules=mod_clamav в CONF_ARGS. Найдите секцию CONF_ARGS и добавьте модуль, например:
[...]
CONF_ARGS := --prefix=/usr \
--with-includes=$(shell pg_config --includedir):$(shell mysql_config --include|sed -e 's/-I//') \
--mandir=/usr/share/man --sysconfdir=/etc/$(NAME) --localstatedir=/var/run --libexecdir=/usr/lib/$(NAME) \
--enable-sendfile --enable-facl --enable-dso --enable-autoshadow --enable-ctrls --with-modules=mod_readme \
--enable-ipv6 --enable-nls --with-modules=mod_clamav
[...]После правок соберите пакеты:
dpkg-buildpackageПерейдите на уровень выше и установите созданные .deb-пакеты:
cd ..
ls -l(Вы увидите список созданных файлов .deb в каталоге /usr/src.)
Установите их:
dpkg -i proftpd*.debВажно: сборка может зависеть от архитектуры и версий пакетов. Если сборка падает, смотрите логи debuild/dpkg-buildpackage и установите недостающие -dev зависимости.
4 Настройка ProFTPd для использования mod_clamav
Откройте конфигурацию ProFTPd:
vi /etc/proftpd/proftpd.confДобавьте блок конфигурации mod_clamav (например ниже секции mod_ctrls_admin):
ClamAV on
ClamServer 127.0.0.1
ClamPort 3310
Пример размещения в файле:
[...]
AdminControlsEngine off
ClamAV on
ClamServer 127.0.0.1
ClamPort 3310
#
# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
Include /etc/proftpd/sql.conf
[...]Перезапустите ProFTPd:
/etc/init.d/proftpd restartПроверьте, загружен ли модуль:
proftpd -vvВ выводе должен присутствовать модуль mod_clamav.c, например:
server1:~# proftpd -vv
- ProFTPD Version: 1.3.1 (stable)
- Scoreboard Version: 01040002
- Built: Fri Oct 1 03:31:03 CEST 2010
- Module: mod_core.c
- Module: mod_xfer.c
- Module: mod_auth_unix.c
- Module: mod_auth_file/0.8.3
- Module: mod_auth.c
- Module: mod_ls.c
- Module: mod_log.c
- Module: mod_site.c
- Module: mod_delay/0.6
- Module: mod_dso/0.4
- Module: mod_auth_pam/1.0.1
- Module: mod_clamav.c
- Module: mod_cap/1.0
- Module: mod_ctrls/0.9.4
- Module: mod_lang/0.8
server1:~#Теперь при загрузке файла через ProFTPd модуль отправит его на clamd. При обнаружении вредоносного содержимого файл будет удалён.
Тестирование
Скачайте тестовый файл EICAR и попробуйте загрузить его на сервер через FTP. Если всё настроено верно, файл будет удалён модулем.

5 Полезные ссылки
- ProFTPd: http://www.proftpd.org/
- mod_clamav: http://www.thrallingpenguin.com/resources/mod_clamav.htm
- ClamAV: http://www.clamav.net/
- Debian: http://www.debian.org/
Когда это может не сработать
- Если clamd недоступен на указанном IP/порту или слушает только Unix-сокет.
- При ошибках прав доступа внутри chroot (ProFTPd не может обратиться к сокету).
- Если модуль не был корректно включён при сборке ProFTPd.
- Если политика удаляет или помещает файл в карантин не так, как вы ожидаете — проверьте логи.
Совет: проверьте логи /var/log/clamav/ и /var/log/proftpd/ для диагностики.
Альтернативные подходы
- Использовать внешний сканер на стороне хранения (scan-on-access) вместо интеграции в FTP-сервер.
- Настроить upload-скрипт (например, hook post-upload) для передачи файлов на отдельный сканер.
- Перенести сервис FTP на более современные решения с поддержкой модулей безопасности.
Выбор зависит от архитектуры, требований к задержке и ответственности за хранение.
Критерии приёмки (тесты)
- При загрузке EICAR файл обнаруживается и удаляется.
- proftpd -vv показывает mod_clamav.c в списке модулей.
- netstat подтверждает, что clamd слушает 127.0.0.1:3310.
- Логи не содержат ошибок прав доступа или отказов соединения при загрузках.
Чек-листы по ролям
Системный администратор:
- Установить clamav, clamav-daemon, libclamav-dev.
- Переконфигурировать clamd на TCP.
- Пересобрать ProFTPd с модулем и установить .deb.
- Перезапустить службы и проверить статусы.
Безопасность / Compliance:
- Подтвердить удаление/карантин заражённых файлов.
- Задокументировать поведение системы при обнаружении угроз.
- Проверить соответствие политике хранения и уведомлений.
DevOps / CI:
- Автоматизировать сборку пакета (скрипты сборки).
- Добавить тесты развертывания и интеграции.
Короткий глоссарий (1‑строчные определения)
- ClamAV — свободный антивирусный движок для обнаружения вредоносного ПО.
- clamd — демон ClamAV, который сканирует файлы по запросу.
- mod_clamav — модуль ProFTPd, позволяющий интегрировать scannирование через clamd.
- chroot / DefaultRoot — ограничение пользователей в корне их домашнего каталога.
Рекомендации по безопасности и приватности
- Не открывайте clamd на внешние интерфейсы — ограничьте адрес 127.0.0.1 или внутренней сетью.
- Логи могут содержать пути к файлам — соблюдайте политику хранения логов и доступ к ним.
- Обновляйте базы вирусных сигнатур и сам ClamAV регулярно (freshclam).
Резюме
Интеграция ClamAV в ProFTPd через mod_clamav обеспечивает автоматическое сканирование загружаемых файлов и удаление обнаруженных угроз. Процесс включает установку ClamAV, перевод clamd на TCP, пересборку ProFTPd с модулем, настройку конфигурации и тестирование загрузок. Следуйте чек-листам и проверяйте логи для стабильной работы.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента