☆ Linux Mint ☆

среда, 12 мая 2010 г.

Настройка Squid - ClamAv

Когда говорят о прокси-сервере Squid в первую очередь вспоминают кэширование и блокировку баннеров. Вообще баннеры не самая не приятная вещь, которую можно встретить на Интернет сайтах. Именно здесь большая часть пользователей подхватывают вирусы и задача любого админа недопустить этого. Одним из вариатов решения проблемы является блокировка файлов имеющих определенное расширение или тип. Но такой подход применим далеко не всегда. Поэтому реализуем проверку трафика антивирусом.Как обычно все действия производим в Ubuntu.

Для этой цели подходят как минимум два проекта. Решение SquidClamAv (http://sf.net/projects/squidclamav>) является редиректором, который работая в паре с демоном clamd антивируса ClamAV, проверяет выборочно файлы, основываясь на содержимом или контексте. Как альтернативу можно использовать несколько более продвинутый и поэтому несколько более сложный в настройке вариант – HAVP (HTTP Anti Virus Proxy, www.server-side.de), пакет которого имеется в репозитарии большинства дистрибутивов в том числе и Ubuntu. Он уже умеет проверять трафик на лету при помощи нескольких антивирусов (ClamAV, F-Prot, Kaspersky, NOD32, Sophos, AVG, Dr.Web и некоторыми другими). Его можно использовать как в связке со Squid, так и в одиночку обеспечивая прозрачный прокси с проверкой на вирусы. Более того, учитывая, что HAVP именно прокси, а не редиректор это позволяет связку Squid + HAVP подключить несколькими схемами: squid+havp, havp+squid, squid+havp+squid, havp+squid. Плюс сюда можно добавить решения для борьбы с баннерами.

Пакета с SquidClamAv в репозитарии нет, поэтому будем компилировать сами (давно я этого не делал). Если еще не устанавливали компиллятор самое время это сделать:

$ sudo apt-get install build-essential

Естественно нам понадобится и демон clamd:

$ sudo apt-get install clamav-daemon

Последний пакет потянет за собоей еще несколько, в том числе и clamav-freshclam, который необходим для автоматического обновления антивирусных баз.

Теперь скачиваем с сайта проекта последнюю версию SquidClamAv. Распаковываем и компилируем.

$ tar xzvf squidclamav-3.5.tar.gz

$ cd squidclamav-3.5

$ ./configure -prefix=/usr –sysconfdir=/etc

$ make

$ sudo make install

В архиве содержится шаблон конфигурационного файла, копируем его на место:

$ sudo cp squidclamav.conf.dist /etc/squidclamav.conf

Создаем файл для журнала и делаем его владельцем пользователя proxy (в некоторых дистрибутивах squid работает от имени пользльвателя squid).

$ sudo touch /var/log/squidclamav.log

$ sudo chown proxy /var/log/squidclamav.log

Дополнительно пользователя proxy в файле /etc/groups нужно добавить в группу clamav, просто дописав:

clamav:x:proxy
Настройка SquidClamAv

SquidClamAv подключается аналогично другим редиректорам. Добавляем в конфигурационный файл squid.conf строку с указанием полного пути к исполняемому файлу. Узнать куда он установлен можно введя «whereis squidclamav«.

Для версий Squid 2.5 и 3.0:

redirect_program /usr/bin/squidclamav

redirect_children 15

И для версии 2.6:

url_rewrite_program /usr/bin/squidclamav

url_rewrite_children 15

И приступаем к редактированию /etc/squidclamav.conf. Сначала общие параметры.

# указываем адрес и порт на котором работает Squid

proxy http://127.0.0.1:3128/

# файл журнала

logfile /var/log/squidclamav.log

# страница куда перенаправляется пользователь при обнаружении вируса

redirect http://localhost/cgi-bin/clwarn.cgi

# исполняемый файл squidGuard (если он установлен) и отладочная информация

# squidguard /usr/bin/squidguard

debug 0

force 1

Теперь нужно связать SquidClamAv с демоном clamd. Это можно сделать двумя способами: через локальный сокет или указав IP-адрес и порт на котором clamd принимает соединения. Узнать эти параметры легко, достаточно посмотреть в файл /etc/clamav/clamd.conf. На сокет указывает переменная LocalSocket. В Ubuntu по умолчанию она выглядит так:

LocalSocket /var/run/clamav/clamd.ctl

Поэтому в squidclamav.conf записываем:

clamd_local /var/run/clamav/clamd.ctl

Теперь нужно указать SquidClamAv, какие собственно файлы будем проверять, а какие пропускать без проверки. Для этого используется еще ряд параметров: regex|regexi, abort|aborti, content|contenti или whitelist. Параметры имеющие букву «i» в имени игнорируют регистр. Самый простой whitelist все, что будет приходить с этого адреса проверятся не будет.

whitelist www.tux.in.ua

Параметр content указывает на проверку файлов, основанную на типе (тип можно узнать из логов Squid). Например, для проверки всех приложений, пишем такое правило.

content ^.*application\/.*$

Параметр abort позволяет исключить из проверки антивирусом файлы попадающие под шаблон:

abort ^.*\.pdf$

aborti ^.*\.png$

aborti ^.*\.mp3$

И наконец, что проверять указываем при помощи regex:

regexi ^.*\.exe$

regexi ^.*\.com$

regexi ^.*\.zip$

И так далее. Запускаем демон clamd:

$ sudo /etc/init.d/clamav-demon start

И перезапускаем Squid:

$ sudo /etc/init.d/squid restart

Для проверки работоспособности настраиваем веб-браузер на работу через Squid и заходим на страницу «http://www.eicar.org/anti_virus_test_file.htm» и пробуем скачать тестовый вирус (он неопасен). Если файл заблокируется можно идти дальше.

Добавляем в crontab строчку для автоматического обновления антивирусных баз:

0 * * * * /usr/bin/freshclam -quiet

Чтобы пользователь перенаправлялся на страницу с пояснением, нужно иметь под рукой рабочий веб-сервер.




Если есть настроеный веб-сервер, достаточно скопировать файл clwarn.cgi в каталог cgi-bin (в Ubuntu /usr/lib/cgi-bin). Этот шаблон также можно изменить по своему вкусу, хотя бы просто локализовать. Удачной охоты.



www.tux.in.ua

0 Коментарии::

Отправить комментарий

Написать комментарий

Подписаться

Twitter Delicious Facebook Digg Stumbleupon Favorites More