Данное описание применимо к Debian 4.0 (Etch). Все сервисы, кроме squidclamav, установлены из доступных в репозитарии, пакетов. Перед началом необходимо убедиться в наличии и рабочем состоянии следующих сервисов (пакетов):
- Squid (2.6.5)
- Apache (1.3.34)
- ClamAv (0.90.1)
- libcurl3-dev (7.15.5)
- libcurl3 (7.15.5)
Apache и ClamAv не требуют дополнительной настройки после установки через apt-get. Описание "Установка Debian-маршрутизатора с возможностями прозрачного proxy-сервера" содержит подборную установку и настройку Squid.
Связующим звеном между Squid и ClamAv является редиректор squidclamav (написан на С, на момент написания этих строк последней версией была версия 3.0). Существует еще один редиректор squidclamav, но он написан на python и мною не тестировался.
Перед тем, как остановить свой выбор на squidclamav, я рассмотрел еще 3 реализации антивирусной проверки на базе Squid + Clamav:
- i-cap - так как хотелось использовать Squid из Debian репозитария, пришлось отбросить данный вариант, так как в дебиановской сборке отсутствует поддержка i-cap, и мне не удалось найти i-cap патча для ручной пересборки.
- squidclam - очень сырой, так и не удалось добиться работоспособности
- viralator - требует наличия squidGuard, но заставить работать мне его так и не удалось. Запрашиваемые файлы передаются на обработку этому скрипту, но он только показывает popup, а сам ничего не выполняет. Да и popup - для каждого скачиваемого файла - очень неудобно.
Лог действий:
1. Собрать из исходников данный редиректор
tar zxf squidclamav-x.x.tar.gz
cd squidclamav
./configure --prefix=/usr/local/squidclamav
make
make install
2. Отредактировать конфигурационный файл, взяв за основу идущий в дистрибутиве
cp squidclamav.conf.dist /etc/squidclamav.conf
Пример рабочего конфигурационного файла (проверяет все файлы c mime-type application и с расширениями .dll):
logfile /var/log/squid/squidclamav.log
redirect http://192.168.1.254/cgi-bin/clwarn.cgi
debug 0
force 1
stat 1
clamd_local /var/run/clamav/clamd.ctl
timeout 60
abort ^.*\.php$
abort ^.*\.gz$
abort ^.*\.bz2$
abort ^.*\.pdf$
abort ^.*\.js$
abort ^.*\.html$
abort ^.*\.css$
abort ^.*\.xml$
abort ^.*\.xsl$
abort ^.*\.js$
abort ^.*\.ico$
aborti ^.*\.gif$
aborti ^.*\.png$
aborti ^.*\.jpg$
aborti ^.*\.swf$
content ^.*application\/.*$
regexi ^.*\.dll$
3. Добавить описание редиректора в основной конфигурационный файл Squid'a - /etc/squid/squid.conf
redirect_program /usr/local/squidclamav/bin/squidclamav
redirect_children 15
4. Разместить в cgi-bin директории файл clwarn.cgi, на который будет пересылаться запрос в случае обнаружения вируса
cp clwarn.cgi /usr/lib/cgi-bin/clwarn.cgi
5. Перезапустить Squid, проверить в логах Squid'а запустились ли процессы squidclamav-редиректора. Если всё ок, попробовать скачать файл, содержащий вирус. Тестовые вирусы можно найти здесь.
Ссылки:
- Squidclamav
- eicar THE ANTI-VIRUS OR ANTI-MALWARE TEST FILE