# cd /usr/ports/www/havp/ /usr/ports/www/havp# make
Опции оставляем «как есть»
[X] SSL Enable SSL proxying (not scanned, only forwarded!) [X] CLAMAV Enable libclamav support
За собой оно потянуло следующее:
После успешной сборки делаем
# make install # make clean
НастройкаClamavСобственно сам Clamav в виде работающего демона не нужен, нужна только библиотека, поэтому большого смысла в его конфиге помоему нет, но на этапе отладки Clamav приходилось дергать, поетому и чегото менял в конфиге. Резервную копию первоначальных конфигов сделали за нас.Правим /usr/local/etc/clamd.confЧасть опций менять нет смысла, но я остановился на следующих параметрах:
< #LogTime yes > LogTime yes < LocalSocket /var/run/clamav/clamd > #LocalSocket /var/run/clamav/clamd < FixStaleSocket yes > #FixStaleSocket yes < ScanMail yes > ScanMail no < #MaxScanSize 150M > MaxScanSize 15M < #MaxFileSize 30M > MaxFileSize 8M < #MaxRecursion 10 > MaxRecursion 3 < #MaxFiles 15000 > MaxFiles 1500
Правим /usr/local/etc/freshclam.conf
< NotifyClamd /usr/local/etc/clamd.conf > #NotifyClamd /usr/local/etc/clamd.conf
Это чтобы freshclam не ругался на незапущенный clamd: WARNING: Clamd was NOT notified: HAVPОпять же, о дефолтовых конфигах позаботились за нас,Правим: /usr/local/etc/havp/havp.config
< REMOVETHISLINE deleteme > #REMOVETHISLINE deleteme < # LOG_OKS true > LOG_OKS false < # FORWARDED_IP false > FORWARDED_IP true < # PORT 8080 > PORT 3127 < # BIND_ADDRESS 127.0.0.1 > BIND_ADDRESS 127.0.0.1 < # TEMPLATEPATH /usr/local/etc/havp/templates/en > TEMPLATEPATH /usr/local/etc/havp/templates/ru < # FAILSCANERROR true > FAILSCANERROR false < # SCANNERTIMEOUT 10 > SCANNERTIMEOUT 5 < # RANGE false > RANGE true < ENABLECLAMLIB false > ENABLECLAMLIB true < # CLAMDBDIR /path/to/directory > CLAMDBDIR /var/db/clamav < # CLAMMAXFILESIZE 100 > CLAMMAXFILESIZE 25 < # CLAMMAXRECURSION 8 > CLAMMAXRECURSION 3
Хотел бы отметить опцию LOG_OKS - играясь ею можем логировать как все запросы поступающие на HAVP так и только запросы с заразой. Фича очень полезная на этапе отладки в состоянии «true», после настройки имеет смысл выключить.По умолчанию HAVP в логах пишет источником всех запросов адрес дочернего прокси (127.0.0.1 в даном случае), опция FORWARDED_IP позволяет отображать в логах HAVP IP-адрес пользователя, который может передавать Squid при включеном «forwarded_for on» (который при обычном раскладе целесообразно отключать). Сам HAVP по умолчанию не передает IP-адрес пользователя дальше на веб сервера, что есть хорошо. Теперь нужно переместить шаблоны сообщений HAVP (русские, английские или все что есть)./usr/local/share/examples/havp/ папка templates. Ее нужно положить в /usr/local/etc/havp/Еще о шаблонах: Дефолтовые шаблоны русских сообщений содержат мелкий недочет - сообщения выводятся в красной рамочке красными буквами.З.Ы. знакомый отписал что "трабл с цветами пофиксили в портах" - сам еще не проверял. Так что юзайте нижеописаное при необходимости.Я решил вопрос кардинально - везде где надо было поставил «color: black». Вот что и где менялось:
Также надо создать файлы чернобелых списков для havp:
# touch /usr/local/etc/havp/whitelist /usr/local/etc/havp/blacklist
Оформляем автозапуск/etc/rc.conf
### Antivirus for HTTP #clamav_clamd_enable="YES" clamav_freshclam_enable="YES" havp_enable="YES"
Предварительный запускЗапускаем обновление антивирусных баз:
# /usr/local/etc/rc.d/clamav-freshclam start Starting clamav_freshclam.
Смотрим чего получилось:
Пробуем стартовать havp:
# /usr/local/etc/rc.d/havp start Starting havp. Starting HAVP Version: 0.88 Mandatory locking disabled! KEEPBACK settings not used! # netstat -an |grep 3127 tcp4 0 0 127.0.0.1.3127 *.* LISTEN
Скорее всего полет нормальный, порт слушается, havp запустился. в логах:
SQUIDПредполагая что сквид уже настроен и работает - проводим следующий финт - в конфиг /usr/local/etc/squid/squid.conf лепим:
cache_peer 127.0.0.1 parent 3127 0 default no-query acl FTP proto FTP always_direct allow FTP always_direct allow SSL_Ports #acl no_avir urlpath_regex -i \.avi$ \.jpg$ \.gif$ \.mp3$ #always_direct allow no_avir #never_direct allow all
Теперь подробнее о содеянном: первой строчкой заворачиваем все потенциально кешируемые запросы которых нет «у себя» на родительский прокси которым выступает HAVP. Преимуществом (или недостатком, кому как) есть то, что в родительский кеш не будут попадать запросы описанные параметром сквида hierarchy_stoplist, а это запросы содержащие {'cgi-bin'|'?'} - т.е. запросы к веб скриптам. Вероятность что скрипты будут возвращать вирусы есть, но при определенных условиях эту вероятность можно игнорировать. Таким образом проверятся будут только файлы на которые можно попасть прямой ссылкой (без «cgi-bin» и »?» в адресе). Позитивным моментом есть тот факт, что когда родительский кеш «упал» - то для пользователей это никак не проявляется, сквид работает как обычно.Если такое поведение не устраивает - то можно запретить сквиду ходить «напрямую», и все запросы переадресовывать на родительский прокси. Для этого включаем опцию «never_direct allow all».В одном мз двух запусков этой мегасистемы были замечены проблемы с работой аськи через HTTPS (проблем с другим ПО работающим через сквид по HTTPS вродь не замечалось). Для лечения есть смысл исключить HTTPS трафик от отправки на HAVP, всеравно он HTTPS не раскрывает, а по документации только умеет форвардить через себя напрямую (видать не очень хорошо умеет). Собственно для этого пользуем «always_direct allow SSL_Ports». Еще вылезла "фича" - HAVP сам не умеет ходить на FTP, только умеет пересылать такие запросы на вышестоящий прокси. Строить такую связку нет не смысла не желания, поетому выпускаем FTP в мир прямо со squid'а «always_direct allow FTP».Кстати, таким же образом можно исключить определенные типы файлов из проверки. Достаточно написать нужный ACL.В конфиге сквиды есть еще другие опции касающиеся работы иерархии кешей, но я с ними пока не разбирался. Если сквид сконфигурирован с delay pools - то перезапускаем его, иначе можно просто передернуть:
# squid -k parse # squid -k reconfigure
Еще раз о «forwarded_for on» - если хотим видеть на HAVP IP-адреса пользователей а не сквида - то в сквиде нужно включить эту опцию(вроде включена по умолчанию). ИтогоДля проверки заходим на http://www.lissyara.su/scripts/redirect_link.php?link=http://www.eicar.org/anti_virus_test_file.htm и пытаемся качать:http://www.lissyara.su/scripts/redirect_link.php?link=http://www.eicar.org/download/eicar.com.txthttp://www.lissyara.su/scripts/redirect_link.php?link=http://www.eicar.org/download/eicar_com.ziphttp://www.lissyara.su/scripts/redirect_link.php?link=http://www.eicar.org/download/eicarcom2.zipЕсли все сделали правильно - должны увидеть в браузере красивое уведомление.И как доказательство в логах /var/log/havp/access.log
Недостатки решенияПока вроде полет нормальный. Единственное что HAVP при запуске ругается на «Mandatory locking», да и в документации на него говорят что это нужно для работы. Хотя и без него вродь нормально. Из того что не долго разбираясь вычитал - то это уходит корнями в Линуксы, и к Фряхе непонятно каким боком относится. Может когда по свободе разгребу. Сцылки1. http://www.lissyara.su/scripts/redirect_link.php?link=http://www.server-side.de/index.htm - HAVP Домашняя страница2. http://www.lissyara.su/scripts/redirect_link.php?link=http://www.lissyara.su/?id=1128 - SQUID & ICAP & ClamAV «это почти ни у кого не работает» 3. http://www.lissyara.su/scripts/redirect_link.php?link=http://www.markelov.net/articles.php?lng=ru&pg=186 - Проверяем HTTP-трафик на лету (Старое, ориентированное на линукс)4. http://www.lissyara.su/scripts/redirect_link.php?link=http://linuxforum.ru/index.php?showtopic=56867 - Squid + HAVP помогите с настройкой5. http://www.lissyara.su/scripts/redirect_link.php?link=http://havp.hege.li/forum/viewtopic.php?t=179 - Squid Sandwich and SSL/FTPДругие варианты:6. Squid+Clamav через squidGuard и viralator