Лучшая система размещения статей
 Добавить в избранное |  Сделать стартовой 
Поиск По Сайту
Навигация
     Главная
     Форум
     Новости
     Обзор новостей
     Гостевая
     Статьи
     Файлы
     Магазин
     Пользователи
     Контакты
     О Проекте
     Карта Сайта
Вход
Логин:

Пароль:


Запомнить меня
Вам нужно Авторизоваться.
Забыли Пароль?
Регистрация
Атестат
Подписка на новости: Подписаться

HTTP Antivirus Proxy (HAVP): Руководство по установке.

Автор: DRVTiny
E-Mail: mudraia@list.ru
Источник: asplinux.net
Добавлено: 2006-08-28 11:09:01

HTTP Antivirus Proxy - это прокси-сервер, единственной задачей которого является антивирусное сканирование входящего HTTP-трафика. В отличие от большинства альтернативных решений, представляющих собой либо специальные надстройки-редиректоры для SQUID, либо расширения фильтрующего прокси DansGuardian, процедура установки и настройки HAVP отличается прямолинейной незамысловатостью и позволяет Вам воспользоваться наиболее эффективным путём для достижения гарантированного положительного результата и, таким образом, избежать лишней головной боли, связанной с "доводкой напильником" монстроидного SQUID (при том, что обычному пользователю SQUID в принципе не нужен) или бесконечным циклом "либерализации" правил фильтрации излишне назойливого (по меньшей мере) "опекуна Дэна" (DansGuardian).


Установка и настройка HAVP

1) Качаем по ссылке: http://prdownloads.sourceforge.net/havp/havp-0.74.tar.gz?download исходники антивирусного прокси HAVP, мизерность размеров которого не то, что удивляет - шокирует изрядно (76Кб!!).
1.1 Отсюда: http://privoxy.asplinux.net/ar/HAVP/havp-rus.tar.bz2 берём руссифицированные шаблоны страниц, с помощью которых HAVP информирует пользователя о возникновении нестандартных ситуаций (ощибка DNS, обнаружение вируса, ощибки 404 и 503 и т.д.), в этом же архиве находится написанный мною скрипт для стартового сервиса HAVP, который в отличие от оригинала, поставляемого в тарболле с исходниками, соответствует стандарту System V, к тому же в целом является более "предсказуемым", чем оригинал, судя по всему написанный "абы как" на скору руку.
1.2 Распаковываем исходники:
---
cd <каталог для сборки программ из исх. кодов>
tar -xzf <путь до архива havp-0.74.tar.gz>/havp-0.74.tar.gz
cd havp-0.74
---
1.3 Распаковываем руссификацию HAVP и скрипт havpd:
---
tar -xvjf <путь до архива havp-rus.tar.bz2>/havp-rus.tar.bz2
---
2) Компилируем исходники HAVP:
Поскольку HAVP, начиная с версии 0.72, может кооперироваться не только со свободным антивирусом ClamAV, но также и с антивирусами AVP (Лаборатория Касперского) и F-Prot (который позволяет не платить за лицензию на версию "для индивидуального пользования"), существует возможность указать при сборке, какой из вышеперечисленных антивирусных сканеров следует ипользовать. Для этого предусмотрена опция --with-scanner скрипта configure. Для того, чтобы HAVP работал в связке с ClamAV, необходимо указать эту опцию таким образом: --with-scanner=libclamav, если же у Вас установлены AVP или F-Prot, то об этом можно уведомить HAVP, соответственно указав либо --with-scanner=aveclient, либо --with-scanner=fprot.
При сборке havp со флагами оптимизации кода под определённую модель процессора (в моём случае это Athlon 1800XP), у разработчиков HAVP вышла неувязочка: в Makefile, автоматически созданном после configure, "в хвост" к заданному мной (CFLAGS=...; export CFLAGS) значению CFLAGS почему-то добавился флаг "-O2", что полностью нивелировало ожидаемый эффект от задания высокой степени оптимизации кода. Пришлось вручную подредактировать Makefile (благо там параметр CFLAGS определяется прямо в первой строке), удалив этот самый "-O2". Вам же я рекомендую вообще не задавать переменную CFLAGS для configure, выбрав в данном случае более простой и разумный путь и прописав подходящее значение напрямую в Makefile, который после нормальной (безошибочной) отработки configure должен появиться у Вас в подкаталоге havp дерева исходников, для чего я предлагаю Вам воспользоваться поточным редактором sed, чтобы в результате последовательность действий по сборке HAVP выглядела следующим образом:
---
2.1 make clean
# Подставьте вместо содержимого угловых скобок одно из предлагаемых значений
2.2 ./configure --with-scanner=

2.3 sed -r 's/^(\s*CFLAGS\s*=).*$/\1 впишите_сюда_свои_флаги_оптимизации/' havp/Makefile | tee 1>/dev/null havp/Makefile
(Например, в моём случае флаги оптимизации для процессора Athlon были заданы следующим образом:
-O3 -march=athlon -mmmx -msse -m3dnow -pipe -funroll-loops -fomit-frame-pointer -fPIC )

2.4 make && su -c 'make install && cp etc/init.d/havpd /etc/init.d'
---

3) Создаём в оперативной памяти специальный буфер для временного хранения блоков контента, передаваемых HAVP'ом антивирусному сканеру:
Файловая система, в которой будет размещаться каталог для временного хранения контента, анализируемого HAVP посредством внешнего антивирусного сканера, должна быть смонтирована с указанием опции поддержки механизма mandatory locks (опция mand команды монтирования mount). Поскольку эта опция при подключении обычных файловых систем используется крайне редко (возможно, даже и зря), то скорее всего Вам придётся либо отдать под нужды HAVP отдельный раздел на жёстком диске, либо создать файловую систему в обычном файле и подмонтировать её через интерфейс сетевой петли lo (как loop-устройство, используя опцию loop команды mount), либо, если у Вас достаточно оперативной памяти, выделить для HAVP отдельный блок в ОЗУ. Последний вариант при наличии "на борту" 384Мб и более (в зависимости от максимального объёма параллельно закачиваемого контента, нуждающегося в проверке), является оптимальным в плане быстродействия.
---
mkdir /var/tmp/havp
chown nobody:nobody /var/tmp/havp
mount -t tmpfs -o size=100M,mand tmpfs /var/tmp/havp
# Прописываем в fstab автомонтирование временного раздела для HAVP при старте системы
echo -e "\ntmpfs /var/tmp/havp tmpfs auto,size=100M,mand,nosuid,noexec,nodev\t0\t0\n" >> /etc/fstab
---
В данном случае под временный буфер для HAVP отводится 100Мб оперативной памяти. Вы можете по собственному разумению уменьшить или увеличить это число, хотя в принципе, учитывая крайнюю нестабильность, свойственную HAVP при работе с большими файлами (даже "заражённые" архивы объёмом порядка 30Мб могут быть полностью скачаны, хотя в логах HAVP отрапортует об обнаружении вируса и даже его "кодовое имя" назовёт правильно), 100Мб или даже чуть меньше по сути является пределом реальных потребностей HAVP (большие же архивы лучше вообще скачивать в обход антивирусного прокси, поскольку с одной стороны HAVP даже обнаружив вирус в потоке пропускаемого через него трафика при вытягивании сотни-другой мегабайт какой-нибудь программулины, вопреки Вашим ожиданиям закачку не остановит, зато он сделает это тогда, когда окажется, что архив, совершенно "чистый" с точки зрения присутствия в нём характерных вирусных сигнатур, после поточной распаковки очередной его порции уже не помещается во временный буфер).
4) Создаём каталог для протоколов (журнальных файлов) havp и устанавливаем корректные права доступа к нему:
---
mkdir /var/log/havp; chown nobody:nobody /var/log/havp
---
5) Лезем в /usr/local/etc/havp.config
5.1) При необходимости меняем значение
---
PORT 8080
---
на соответствующее нашим пожеланиям (на этот порт по умолчанию претендуют чуть ли не все прокси, так что по моему личному мнению лучше здесь сразу же поменять значение на 8008 или на ещё какое-нибудь, не чреватое потенциальными конфликтами)
Раскомментируем параметр BIND_ADDRESS со значением NULL и меняем этот самый NULL на реальный IP (если HAVP будет принимать подключения только с той системы, на которой он стартует, то пишем BIND_ADDRESS 127.0.0.1, иначе - IP-адрес в локальной сети, "видимый" клиентскими машинами)
5.2) При необходимости работать с прокси, стоящим **ЗА** HAVP (т.е. "ближе к провайдеру"), прописываем соответствующие значения для PARENTPROXY и PARENTPORT, например, так:
---
PARENTPROXY 127.0.0.1
PARENTPORT 8118
---
(см. http://privoxy.org или http://privoxy.asplinux.net :-))
Не рекомендую прописывать здесь любые кеширующие прокси, а вот использование прокси, фильтрующих контент без кеширования (Privoxy) в данном случае будет вполне и даже "более чем" уместным.
5.2) Раскомментируем следующие строки:
---
USER nobody
GROUP nogroup
---
и меняем последнюю на
---
GROUP nobody
---
5.3) Позаботимся о том, чтобы в конфиге были следующие строки:
---
PIDFILE /var/run/havp/havp.pid
ACCESSLOG /var/log/havp/access.log
ERRORLOG /var/log/havp/havp.log
SCANTEMPFILE /var/tmp/havp/havp-XXXXXX

# Либо установите значение DBRELOAD равным периоду между проверками обновлений антивирусных баз,
# либо "нейтрализуйте" действие параметра DBRELOAD, присвоив ему какое-нибудь очень большое
# значение, а к тому заданию CRON, которое у Вас выполняет проверку обновлений баз, добавьте
# команду посылки сигнала SIGHUP всем процессам HAVP, например таким образом: killall -s HUP havp
DBRELOAD 120
DAEMON true
TRANSPARENT false
LOG_OKS true
---
5.4) Если Вы хотите использовать русскоязычные шаблоны для HAVP, то в havp.config у Вас должна присутствовать следующая строка:
---
TEMPLATEPATH /usr/local/etc/havp/templates/ru
---
6) Запускаем HAVP и прописываем его загрузку в стартовые сервисы определённых runlevel'ов:
---
service havpd start && chkconfig --add havp && chkconfig --level 35 havpd on
---

7) Настраиваем браузер, либо дочерний прокси (стоящий **ДО** HAVP на пути к провайдеру. Прокси, например, может относится к числу кеширующих, таких как: SQUID, MiddleMan, WWWOffle), на использование HTTP прокси по адресу BIND_ADDRESS:PORT (см. пункт 5.1)
8) Проверяем эффективность работы HAVP+ClamAV, последовательно скачивая вирусные сигнатуры по адресу:
http://www.eicar.org/anti_virus_test_file.htm
9) Кратковременно наслаждаемся результатами своей трудовой деятельности, после чего крепко задумываемся над проблемой анализа HTTPS-трафика (поскольку HAVP с ним работать, к большому сожалению, не умеет), решаем эту проблему, делимся с товарищами по форуму соответствующими методическими рекомендациями :-)
10) В императивной форме предлагаем разработчикам ASPLinux включить крохотных размеров HAVP в состав 11-й версии дистрибутива или хотя бы в грядущие обновления ASP.

Понравилась статья? Поделись с друзьями!
Facebook Опубликовать в LiveJournal Tweet This


Оглавление   |  ?? ????

Оглавление        Вернуться к Статье

Скачай CMS сейчас!
Текущая версия системы управления сайтом WebCodePortalSystem:
v.7.1.00
Скачать CMS v.7.1.00
Обновление с версии 6.2.01

Сайт разработчика:
Новые бета версии

На Сайте
Гостей: 8
Пользователей: 0


10 новых статей
Наши Партнеры


Copyright WebCode-Command © 2003-2012
Работает под управлением WebCodePortalSystem v. 6.2.01
Rambler's Top100