Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> главная —> Архив —> C-ICAP

SQUID & ICAP & ClamAV

Автор: lissyara.


Статья перемещена в архив, по причине, что это почти ни у кого не работает.
Если у вас заработает - отпишитесь в форум, вместе с настройками :)


   Встала ребром проблема вирусов, которые народ тащил из инета. Внутри локалки, на серваках, и на производительных машинах, стояли антивирусы, но на все машины поставить не было возможности - некоторые машины относительно слабые, на других по сети работали с большими файлами - и народ начинал буянить, когда по две-три минуты приходилось ждать открытия файла - с учётом того, что файл ещё и открывается столько же... Короче, идея была оставить антивири на серваках, и профильтровать всё, что попадает в локалку. С ftp и почтой проблемы не было - для этого был поставлен frox и проверка всей почты. C http всё оказалось несколько сложнее - под squid нашлось несколько решений, все через редиректор - что тоже не очень хорошо, ибо редиректор может быть только один - если я ставлю антивирус, то лишаюсь своей баннерорезалки (которая ещё и порнуху очень шикарно режет)... Плюс - у этих решений оказались и свои минусы - траффик прилично возрастал - инет нынче стал динамический, и многие страницы не кэшируются вообще...
   Гугление и яндексение дало ключевое слово - icap. В портах его не оказалось:
/usr/ports/>make search name='icap'
/usr/ports/>

Чтож. Пока будем ставить антивирь, поищем icap и поконфигурим :) Антивирь - ClamAV:
/usr/home/lissyara/>cd /usr/ports/security/clamav
/usr/ports/security/clamav/>make && make install && make clean

Выбираем следующие опции:

[ ] MILTER    Compile the milter interface
[X] CURL      Support URL downloading
[ ] LIBUNRAR  Support for external Unrar library

CURL - можно не выбирать, я его выбрал с прицелом на своё будущее, а моё может отличаться от Вашего :) КОРОЧЕ, в данном случае он не нужен. Надо заметить, что ClamAV тащит за собой приличное чило всяких архиваторов (вернее будет сказать - разархиваторов.) - arc, lha, unarj, unrar, unzip, zoo... Также надо обновить БД антивируса:
/usr/local/etc/rc.d/>freshclam
freshclam: Command not found.
/usr/local/etc/rc.d/>rehash
/usr/local/etc/rc.d/>freshclam
ClamAV update process started at Sun Jan 22 00:57:53 2006
main.cvd is up to date (version: 35, sigs: 41649, f-level: 6, builder: tkojm)
Downloading daily.cvd [*]
daily.cvd updated (version: 1247, sigs: 849, f-level: 6, builder: sven)
Database updated (42498 signatures) from database.clamav.net (IP: 62.181.41.8)
ERROR: Clamd was NOT notified: Can't connect to clamd through /var/run/clamav/clamd
connect(): No such file or directory
/usr/local/etc/rc.d/>

clamd нам не нужен - icap работает сам по себе, без clamd, потому его не запускаем. Вообще, неплохо бы обновление засунуть в рутовый кронтаб, раза три-четыре в сутки.
icap берём отсюда. Распаковываем в `мусорную` папку и конфигурим со следующими параметрами:

/usr/home/lissyara/>ls -lah | grep icap
-rw-r--r--   1 lissyara  wheel   385K 22 янв 15:43 c_icap-220505.tar.gz
/usr/home/lissyara/>cd /tmp
/tmp/>mkdir icap
/tmp/>cd icap/
/tmp/icap/>cat /usr/home/lissyara/c_icap-220505.tar.gz | \
? gunzip | tar --extract --file=-
/tmp/icap/>ls -lah
total 6
drwxr-xr-x   3 root  wheel   512B 22 янв 15:53 .
drwxrwxrwt  14 root  wheel   1,0K 22 янв 15:52 ..
drwxr-xr-x   7 500   squid   1,5K 22 май  2005 c_icap-220505
/tmp/icap/>cd c_icap-220505/
/tmp/icap/c_icap-220505/>
/tmp/icap/c_icap-220505/>./configure --enable-static \
? --with-clamav=/usr/local --prefix=/usr/local

После чего собираем, проверяем, что насобиралось и устанавливаем:

/tmp/icap/c_icap-220505/>make
...........
...........
/tmp/icap/c_icap-220505/>make check
Making check in .
Making check in modules
Making check in services
Making check in echo
Making check in sguard
Making check in clamav
/tmp/icap/c_icap-220505/>make && make install

После инсталляции копируем исходные конфиги, на вcякий случай:

/usr/local/etc/>ls | grep icap
c-icap.conf
c-icap.magic
/usr/local/etc/>cp c-icap.conf c-icap.conf.default
/usr/local/etc/>cp c-icap.magic c-icap.magic.default
/usr/local/etc/>

И рихтуем кофиг с-icap до следующего состояния:
/usr/local/etc/c-icap.conf
PidFile /var/run/c-icap.pid
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 600
StartServers 3
MaxServers 10
MinSpareThreads     10
MaxSpareThreads     20
ThreadsPerChild     10
MaxRequestsPerChild  0

Port 1344
User squid
Group squid

TmpDir /tmp
MaxMemObject 131072

#ServerLog /var/log/icap-server.log
#AccessLog /var/log/icap-access.log

ModulesDir /usr/local/lib/c_icap/
Module logger sys_logger.so
Module perl_handler perl_handler.so

sys_logger.Prefix "icap"
sys_logger.Facility local1

Logger sys_logger

# надо признать - с acl`ами мне ничё толком сделать не
# удалось - я хотел запретить всё кроме локалхоста,
# но squid, к моему удивлению, ломится с адреса 0.0.0.0
# поэтому придётся 1344 порт прикрыть файрволлом
acl squid_respmod src 0.0.0.0 type respmod
icap_access allow squid_respmod

ServicesDir /usr/local/lib/c_icap
Service echo_module srv_echo.so
Service squard_module srv_sguard.so
Service antivirus_module srv_clamav.so

srv_clamav.ScanFileTypes TEXT DATA EXECUTABLE ARCHIVE GIF JPEG MSOFFICE
srv_clamav.SendPercentData 5
srv_clamav.StartSendPercentDataAfter 2M

srv_clamav.MaxObjectSize  5M
srv_clamav.ClamAvMaxFilesInArchive 0
srv_clamav.ClamAvMaxFileSizeInArchive 100M
srv_clamav.ClamAvMaxRecLevel 5

# следующеи строки - это когда похоже на режим какого-то 
# `виралатора` - поюзал, непонравилось...
#srv_clamav.VirSaveDir /usr/local/squid/infected/
#srv_clamav.VirHTTPServer  "http://192.168.254.254/"
#srv_clamav.VirUpdateTime   15
#srv_clamav.VirScanFileTypes ARCHIVE EXECUTABLE

После чего создаём нужные директории и даём на них права пользователю, от которого будет работать icap:

/usr/local/etc/>mkdir -p /usr/local/squid/infected/
/usr/local/etc/>chown -R squid:squid /usr/local/squid/infected
/usr/local/etc/>

Также добавляем такие строки в /etc/syslog.conf по необходимости (логов довольно много получается):

# c-icap
*.local1                                  /var/log/c-icap.log

После чего можно запускать icap (эти ключи для отладки, обычный запуск без них), после чего проверяем - запустился ли он.

/usr/local/etc/>/usr/local/bin/c-icap -d 1 -D
Setting parameter :PidFile=/var/run/c-icap.pid
Setting parameter :Timeout=300
Setting parameter :KeepAliveTimeout=600
Setting parameter :StartServers=3
Setting parameter :MaxServers=10
Setting parameter :MinSpareThreads=10
Setting parameter :MaxSpareThreads=20
Setting parameter :ThreadsPerChild=10
Setting parameter :Port=1344
Setting parameter :User=squid
Setting parameter :Group=squid
Setting parameter :TmpDir=/tmp
Setting parameter :MaxMemObject=131072
Setting parameter :ServerLog=/var/log/icap-server.log
Setting parameter :AccessLog=/var/log/icap-access.log
Setting parameter :ModulesDir=/usr/local/lib/c_icap/
Loading service :logger path sys_logger.so
Loading service :perl_handler path perl_handler.so
Uknown type of module:perl_handler
Error loading service
Going to search variable Prefix in table sys_logger
Setting parameter :Prefix=C-ICAP:
Going to search variable Facility in table sys_logger
Setting parameter :Logger=sys_logger
Setting parameter :ServicesDir=/usr/local/lib/c_icap
Loading service :echo_module path srv_echo.so
Found handler C_handler for service with extension:.so
Initialization of echo module......
Loading service :squard_module path srv_sguard.so
Found handler C_handler for service with extension:.so
Initialization of sguard module......
Loading service :antivirus_module path srv_clamav.so
Found handler C_handler for service with extension:.so
Going to search variable ScanFileTypes in table srv_clamav
Going to search variable SendPercentData in table srv_clamav
Setting parameter :SendPercentData=5
Going to search variable StartSendPercentDataAfter in table srv_clamav
Setting parameter :StartSendPercentDataAfter=2097152
Going to search variable MaxObjectSize in table srv_clamav
Setting parameter :MaxObjectSize=5242880
Going to search variable ClamAvMaxFilesInArchive in table srv_clamav
Setting parameter :ClamAvMaxFilesInArchive=0
Going to search variable ClamAvMaxFileSizeInArchive in table srv_clamav
Setting parameter :ClamAvMaxFileSizeInArchive=104857600
Going to search variable ClamAvMaxRecLevel in table srv_clamav
Setting parameter :ClamAvMaxRecLevel=5
Going to search variable VirSaveDir in table srv_clamav
Setting parameter :VirSaveDir=/usr/local/squid/infected/
Going to search variable VirHTTPServer in table srv_clamav
Setting parameter :VirHTTPServer=http://192.168.254.254/infected.php
Going to search variable VirUpdateTime in table srv_clamav
Setting parameter :VirUpdateTime=15
Going to search variable VirScanFileTypes in table srv_clamav
/usr/local/etc/>
/usr/local/etc/>
/usr/local/etc/>sockstat | grep icap
squid    c-icap     33144 3  tcp4   *:1344                *:*
squid    c-icap     33144 4  dgram  -> /var/run/logpriv
squid    c-icap     33143 3  tcp4   *:1344                *:*
squid    c-icap     33143 4  dgram  -> /var/run/logpriv
squid    c-icap     33142 3  tcp4   *:1344                *:*
squid    c-icap     33142 4  dgram  -> /var/run/logpriv
squid    c-icap     33141 3  tcp4   *:1344                *:*
squid    c-icap     33141 4  dgram  -> /var/run/logpriv
/usr/local/etc/>

Если почему-то не запустился, то неплохо поставить уровень отладки 10, для максимума подробностей, тогда всё встанет на свои места.
   После этого ставим squid из портов:
/usr/local/etc/>cd /usr/ports/www/squid
/usr/ports/www/squid/>make && make install && make clean

В окошке выбираем следующие опции (если пересобираете - то перед этим надо запустить `make config` - иначе окошка не будет и он соберётся с прежними опциями):
[ ] SQUID_LDAP_AUTH       Install LDAP authentication helpers
[X] SQUID_DELAY_POOLS     Enable delay pools
[ ] SQUID_SNMP            Enable SNMP support
[ ] SQUID_CARP            Enable CARP support
[ ] SQUID_SSL             Enable SSL support for reverse proxies
[ ] SQUID_PINGER          Install the icmp helper
[ ] SQUID_DNS_HELPER      Use the old 'dnsserver' helper
[ ] SQUID_HTCP            Enable HTCP support
[ ] SQUID_VIA_DB          Enable forward/via database
[ ] SQUID_CACHE_DIGESTS   Enable cache digests
[ ] SQUID_WCCP            Enable Web Cache Coordination Protocol
[X] SQUID_UNDERSCORES     Allow underscores in hostnames
[X] SQUID_CHECK_HOSTNAME  Do hostname checking
[ ] SQUID_STRICT_HTTP     Be strictly HTTP compliant
[X] SQUID_IDENT           Enable ident (RFC 931) lookups
[ ] SQUID_USERAGENT_LOG   Enable User-Agent-header logging
[ ] SQUID_ARP_ACL         Enable ACLs based on ethernet address
[ ] SQUID_PF              Enable transparent proxying with PF
[ ] SQUID_IPFILTER        Enable transp. proxying with IPFilter
[ ] SQUID_FOLLOW_XFF      Follow X-Forwarded-For headers
[X] SQUID_ICAP            Enable ICAP client functionality
[ ] SQUID_AUFS            Enable the aufs storage scheme
[ ] SQUID_COSS            Enable the COSS storage scheme
[ ] SQUID_LARGEFILE       Support log and cache files >2GB
[ ] SQUID_STACKTRACES     Create backtraces on fatal errors
[X] SQUID_RCNG            Install an rcNG startup script

После установки, рихтуем конфиг сквида:
/usr/local/etc/squid/squid.conf
http_port 3128
icp_port 0

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 32 MB
maximum_object_size 8092 KB
maximum_object_size_in_memory 512 KB
cache_dir ufs /usr/local/squid/cache 1024 16 64
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
cache_mgr lissyara@lissyara.int.otradno.ru
visible_hostname lissyara.int.otradno.ru
tcp_outgoing_address 10.21.64.215
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320

icap_enable on
icap_preview_enable on
icap_preview_size 128
icap_send_client_ip on

acl     all             src             0.0.0.0/0.0.0.0
acl     localhost       src             127.0.0.0/8
acl     our_networks    src             192.168.254.0/24
http_access     allow   our_networks
http_access     allow   localhost
http_access     deny    all

icap_service         service_1 reqmod_precache 0 icap://localhost:1344/srv_clamav
icap_service         service_2 respmod_precache 1 icap://localhost:1344/srv_clamav
icap_class           class_antivirus service_2 service_1
icap_access          class_antivirus allow all

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_uses_host_header on
coredump_dir /usr/local/squid/cache
pid_filename /usr/local/squid/logs/squid.pid

Для автоматического запуска icap пишем следующий скриптик:
/usr/local/etc/rc.d/icap.sh
#!/bin/sh
case "$1" in
start)
        if [ -f /var/run/c-icap.pid ]
        then
            echo "Сервер ICAP уже запущщен!"
            echo ""
        else
            /usr/local/bin/c-icap
            echo -n "Сервер ICAP запущщен!"
            echo ""
        fi
        ;;
stop)
        if [ -f /var/run/c-icap.pid ]
        then
            kill -TERM `cat /var/run/c-icap.pid`
            rm -f /var/run/c-icap.pid
            echo -n "Сервер ICAP остановлен!"
            echo ""
        else
            echo "Сервер ICAP не запущен!"
            echo ""
        fi
        ;;
restart)
        if [ -f /var/run/c-icap.pid ]
        then
            kill -HUP `cat /var/run/c-icap.pid`
            echo "Сервер ICAP перезапущщен!"
            echo ""
        fi
        ;;
*)
        echo "Использование: ${0##*/}: { start | stop | restart }" >&2 
        echo ""
        exit 64
        ;;
esac

   Вот и всё. Должно работать. Если не взлетело - пробуем всё в отладочном режиме. Для проверки пройдут ли вирусы - можно сходить сюда, и попробовать скачать файлики, что предложены - в них тестовый вирус. Если всё пучком - вылезет страничка про то, что найден вирус :)
   Также надо заметить, что решение это весьма красивое - позволяет строить проверку как на прозрачном, так и на непрозрачном прокси - но при этом достаточно ресурсоёмкое - на тестовой машине (AMD K6-II 450 MHz, 256RAM) уходило 50-60% ресурсов хотя линия у меня дома 160кб и юзер я один. На работе на 2GHz P-IV об 1 гектаре ОЗУ на 8 мегабитной линии, при 30 пользователях тормозов не видно (хотя, все 30 одновременно в инет не лезут)...
   На `бис` рашил развлечься - русифицировать то сообщение что вылазиет, про вирус - которое врезано намертво в код. Для этого рихтуем строки в файле (в исходниках):
services/clamav/srv_clamav_vir.c
char *e_message="<H1>A VIRUS FOUND</H1>"\
                  "You try to upload/download a file that contain the virus<br>";
char *t_message="<p>This message generated by C-ICAP srvClamAV/antivirus module";

const char *msg="<p>Your file was saved as<b>:";
const char *msg2="</b><p>Ask your administration for info how to get it";

на такие, например:
char *e_message="<HTML>\n<HEAD>\n<TITLE>В запрошенной странице содержался вирус "\
        "-> доступ запрещщён.</TITLE>\n<META http-equiv=\"Content-Type\""\
        " content=\"text/html;charset=koi8-r\">\n"\
        "</HEAD>\n<BODY>\n<br>\n<H1>"\
        "В запрошенной странице содержался вирус!</H1><br>\n\n"\
        "Вы попытались зайти на страницу содержавшую вирус:<br><b>";
char *t_message="</b><br><p>Это сообщение автоматически сгенерированно сервером."\
                " Модуль: \"C-ICAP srvClamAV/antivirus module\"";

const char *msg="\n<p>Запрошенный Вами файл сохранён как:<b>";
const char *msg2="</b>\n\n<p>Если он Вам действительно нужен - "\
                  "спросите системного администратора, как его получить."\
                  "\n\n<BODY>\n<HTML>\n";

И в файле services/clamav/srv_clamav.c
char *error_message="<H1>A VIRUS FOUND</H1>"\
                      "You try to upload/download a file that"\
                      "contain the virus<br>";
char *tail_message="<p>This message generated by C-ICAP "\
                             "srvClamAV/antivirus module";

на такие:
char *error_message="<HTML>\n<HEAD>\n<TITLE>В запрошенной странице"\
        " содержался вирус "\
        "-> доступ запрещщён.</TITLE>\n<META http-equiv=\"Content-Type\""\
        " content=\"text/html;charset=koi8-r\">\n"\
        "</HEAD>\n<BODY>\n<br>\n<H1>"\
        "В запрошенной странице содержался вирус!</H1><br>\n\n"\
        "Вы попытались зайти на страницу содержавшую вирус.<br>";

char *tail_message="<br><p>Это сообщение автоматически сгенерированно сервером."\
         " Модуль: \"C-ICAP srvClamAV/antivirus module\"\n</BODY>\n</HTML>";

После чего пересобираем, и переставляем icap.
   
   Баги, что нашёл (или мои кривые руки): вирусы вида *.com и *.txt не находил до перезагрузки машины... Почему - не знаю. Зато архивы находил... После ребута - всё встало на свои места. Всё находит.
   Также баг - неверно определяется ось (в FreeBSD4.11, в 6-ке всё нормально), в итоге приходится править несколько файлов руками, т.к. фрёвый gcc работает несколько иначе, чем в линухах - вылетает ошибка
/usr/libexec/elf/ld: cannot find -lpthread

И приходится шуршать по всем файлам (предварительно сделав `make clean`) и заменять
-lpthread на -pthread. Файлов немного - штуки 4, и в двух не в одном месте а паре - итого 6 раз.
   Из той же оперы (и тоже в 4.11!):
/usr/libexec/elf/ld: cannot find -lgdbm

Лечится точно также как и в предыдущем случае, только мест побольше. Также оно должно стоять (может у Вас просто не установлена):
/usr/ports/>cd /usr/ports/databases/gdbm
/usr/ports/databases/gdbm/>make && make install && make clean

Надо также заметить, что если на машине включен режим эмуляции линуха - третьей ошибки не будет.

P.S. c-icap появился в портах.
/usr/ports/>make search name='icap'
Port:   c-icap-220505
Path:   /usr/ports/www/c-icap
Info:   An implementation of an ICAP server
Maint:  b3k@mail.ru
B-deps: libtool-1.5.22_2
R-deps:
WWW:    http://www.chtsanti.net/c-icap

/usr/ports/>

На данный момент (2006-03-28) порт собран неправильно, там на весь каталог /var/log даётся команда по смене пользователя, да ещё и рекурсивно :). Поэтому перед установкой правим файл /usr/ports/www/c-icap/files/pkg-install.in на предмет закомментить такую строку:
chown -R "$CICAP_USER:$CICAP_GROUP" "$LOG_PATH" || exit 1

Надо просто поставить перед ней решётку, она третья снизу. При установке ставим крестик про ClamAV (он по дефолту уже стоит), и всё. Запускается с теми же настройками, что и в статье. На данный момент уже вышла следующая версия сквида с поддержкой icap - 2.5.STABLE13, с ней эта связка работает более стабильно.



размещено: 2006-01-22,
последнее обновление: 2008-07-09,
автор: lissyara


deviel aka pasha, 2006-02-09 в 19:55:11

#========================================================
вместо скрипта /usr/local/etc/rc.d/icap.sh использую следующий:
#!/bin/sh
/usr/local/bin/c-icap -f /usr/local/etc/c-icap.conf -D
#========================================================
настройки ACL в /usr/local/etc/c-icap.conf у меня пошли такие:
# --—  My ACL Rules  --— #
acl localhost_options src 127.0.0.1/255.255.255.255 type options
acl localhost_respmod src 127.0.0.0/255.255.225.255 type respmod
acl localhost src 127.0.0.1/255.255.255.255
acl all src 0.0.0.0/0.0.0.0
icap_access allow localhost_options
icap_access allow localhost_respmod
icap_access allow localhost
icap_access deny all

Abigor, 2006-03-28 в 11:30:01

Задам вопрос здесь, настроил, при попытки скачать файло со спробной страницы выдает
>>ОШИБКА
>>Доступ к кэшу запрещён
это так и должно быть?
и еще, отличие от всего этого, я c_icap ставил из портов

lissyara, 2006-03-28 в 11:52:12

:) Там чел, что порт составлял, догадался влепить команду
chown -R cicap:cicap /var/log
Руки надо отрывать за такое. Сам щас сидел, права восстанавливал...

Ищи, где и что не так. У меня завёлся, с теми же настройками что и в статье, после того как все права перевыставил...

ALex_hha, 2006-04-26 в 18:49:25

Уже есть в портах, так что ставим от туда :)

NuN, 2006-05-18 в 13:39:53

Всё стало только , хех наоборот ловит com и txt  а zip нет :( И работает только ./c-icap -D -N -d 10 если просто запустить ./c-icap - слетает :(

-|LSV|-, 2006-05-28 в 7:27:15

А как такое лечить?
Error creating mutexError creating mutexCan't init shared memory.Fatal error, exiting!

Baneff, 2006-06-14 в 17:30:18

> Баги, что нашёл (или мои кривые руки): вирусы вида *.com
> и *.txt не находил до перезагрузки машины... Почему - не
> знаю. Зато архивы находил... После ребута - всё встало на
> свои места. Всё находит.

> Всё стало только , хех наоборот ловит com и txt а
> zip нет :(

У меня аналогично. Проблема в кеше бровзера. Я пытался эти тестовые файлы смотреть до включения c-icap, поэтому те файлы, которые якобы не ловились, бровзер брал из своего кеша, а не тянул через сквида. Чтение файлов с принудительным обновлением моментально привела к тому, что ловиться стало все, что должно.

UnlimiteD, 2006-09-19 в 22:49:30

Отличная статья. Спасибо!

Zevs, 2007-03-01 в 18:42:45

Огромное спасибо за статью!
Долго мучился почему c_icap-030606rc1 не хочет грузить модуль srv_clamav, а вылетает с ошибкой string "service" not found. Заработало только с версией clamav-0.88. Поскольку нужна только библиотека, на хосте остался новый clamav-0.90.

Andrew, 2007-03-12 в 11:04:56

На сайте c-icap http://sourceforge.net/projects/c-icap выложили исправление для ошибки string "service" not found:
New patch for libclamav-1.0.40 and newer 2007-03-04
С ним все работает (c_icap-030606rc1 и clamav-0.90)

Alex, 2007-03-13 в 19:39:02

Пропатчил все работает c_icap-030606rc1 и clamav-0.90 (из портов), только когда натыкается на вирус выдает HTTP Error 403 - Forbidden, и на  srv_clamav.VirSaveDir и srv_clamav.VirHTTPServer ни какой реакции.

iTango, 2007-04-19 в 16:49:54

Ставил всё согласно статьи, но при попытке запустить:

c-icap -d 1 -D

на уровне:
...

Setting parameter :ClamAvMaxFileSizeInArchive=104857600
Going to search variable ClamAvMaxRecLevel in table srv_clamav
Setting parameter :ClamAvMaxRecLevel=5


выпадает ошибка:

can not init loggers. Exiting...

и полный стоп!

как это можно побороть???

lexy, 2007-04-20 в 17:44:10

ставил все из портов, при поытке запустить вываливает следующее

Starting c_icap.
Initialization of echo module......
Initialization of url_check module......
Segmentation fault (core dumped)

vasilich, 2007-04-23 в 12:13:21

Если freebsd6.X, то в скрипт configure надо добавить

      freebsd6.*)
       CFLAGS="-D_THREAD_SAFE  $CFLAGS"
       THREADS_LDADD="-XCClinker -lthr"
       THREADS_LDFLAGS=""

     ;;
тк clamav на freebsd6.X в портах собирается с lthr.

spmn, 2007-05-11 в 15:49:38

В какой файл добавлять надо? в patch-configure?
Если в него добавляю, то при команде make случается:
===>  Applying FreeBSD patches for c-icap-030606_3,1
1 out of 1 hunks failed--saving rejects to configure.rej
File to patch:

И просит какой-то файл. ??? Что ему надо?

vasilich, 2007-05-15 в 15:56:05

>>В какой файл добавлять надо? в patch-configure?
Добавить в файл /usr/ports/www/c-icap/work/c_icap-030606rc1/configure после выполнения команды make path, потом вернуться в /usr/ports/www/c-icap (cd /usr/ports/www/c-icap) и make install

spmn, 2007-05-16 в 18:41:35

Не помогло :(
Бум ждать новой версии ... скорее бы

Demon, 2007-05-18 в 15:34:56

>>выпадает ошибка:
>>can not init loggers. Exiting...
>>и полный стоп!

если делал по статье то сервер стартует с правами узверя  squid а папка /var/c-icap имеет права на cicap:cicap делай выводы )

>>Не помогло :(
>>Бум ждать новой версии ... скорее бы
была таже проблема обошел так)
ее /usr/ports/www/c-icap/files/path-configure

/////////////////////////////////////////////////////////
-      freebsd5.*)
+      freebsd6.*)
## If I understand how all those threading models works correctly
## in FreeBSD I will make an option in configure script
## --with-freebsd-threads={c_r,pthreads,linuxthreads,thr}
@@ -19454,9 +19454,9 @@
#      THREADS_LDADD="-llthread -lgcc_r"
#      THREADS_LDFLAGS="-L/usr/local/lib"

-##    FreeBSD Standard threads
+##    FreeBSD 6.x
-       CFLAGS="-pthread -D_THREAD_SAFE  $CFLAGS"
+       CFLAGS="-D_THREAD_SAFE  $CFLAGS"
-       THREADS_LDADD="-XCClinker -lc_r"
+       THREADS_LDADD="-XCClinker -lthr"
       THREADS_LDFLAGS=""
/////////////////////////////////////////////////////
и все)))) заработало

spmn, 2007-05-19 в 4:45:28

Demon
Все равно:
Setting parameter :ServicesDir=/usr/local/lib/c_icap/
Loading service :echo_module path srv_echo.so
Found handler C_handler for service with extension:.so
Initialization of echo module......
Loading service :antivirus_module path srv_clamav.so
Found handler C_handler for service with extension:.so
Going to initialize srvclamav
Ошибка сегментации(core dumped)

:(

hopeful, 2007-06-21 в 14:54:03

В дополнение хочу поделиться опытом запуска Squid+c-icap+ClamAV в рабочую эксплуатацию на маршрутизаторе офиса из 50 компьютеров.

Итак имеем:
Железо – Intel PIII-1000/512Ram.
ОС - FreeBSD 5.5 Release.

Установка и настройка ClamAV.
Можно установить из портов. Версия на момент написания комментариев – 0.90.3. Когда делаем make – может выдать ошибку и ругнуться:
«On FreeBSD before 6.2 ports system unfortunately can not set default X11BASE by itself so please help it a bit by setting X11BASE=${LOCALBASE} in make.conf.
On the other hand, if you do wish to use non-default X11BASE, please set variable USE_NONDEFAULT_X11BASE»
Чтобы это устранить добавляем в /etc/make.conf строку: X11BASE=${LOCALBASE} и повторяем сборку.
##
#> cd /usr/ports/security/clamav
#> make
#> make install clean
##
В /etc/rc.conf прописываем строчки:
clamav_clamd_enable=
NO    # демон clamd для работы c-icap не нужен
clamav_freshclam_enable=
YES # запуск демона обновления антивирусных баз

Хотя если вам не нужен висящий в системе процесс, в предыдущем пункте можно поставить
NO, и запускать обновление баз из крона, добавив в /etc/crontab строчку:
##
0    0,6,12,18    *    *    *    /usr/local/bin/freshclam
##
И, разумеется, необходимо настроить конфиг, отвечающий за обновление баз ClamAV -     /usr/local/etc/feshclam.conf, например так:

##
DatabaseDirectory /var/db/clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogVerbose no
LogSyslog yes
LogFacility LOG_MAIL
DatabaseOwner clamav
AllowSupplementaryGroups no
DatabaseMirror database.clamav.net
MaxAttempts 3
ScriptedUpdates yes
Checks 6
##


Установка и настройки c-icap с поддержкой ClamAV
Самое интересное.
На момент написания комментариев в системе портов 5 ветки FreeBSD есть порт c-icap который установит в систему i_cap-030606rc1. Скажу сразу, это не самый лучший вариант. Добиться устойчивой работы этого создания мне не удалось. В случайные моменты c-icap отказывался работать, начиная отчаянно «мусорить» в лог сообщениями: «general SIGPIPE signal received» (проблема в инете известная). В общем чуть не утроил мне локальный DoS. В итоге был безжалостно удален.
С сайта проекта с-icap http://c-icap.sourceforge.net/ , а точнее отсюда: http://sourceforge.net/project/showfiles.php?group_id=123427 , был скачан самый свежий на момент написания комментариев c_icap-180407.tar.gz а так же Squid, немного пересобранный авторами проекта, squid-icap-2.5.STABLE12-20051102. Именно их и будем устанавливать.

Начнем с c_icap.
##
#> cd /distfiles/сicap
#> tar –xzf c_icap-180407.tar.gz
#> cd c_icap-180407
#> ./configure --enable-static --with-clamav=/usr/local --prefix=/usr/local/c_icap
#> make
#> make check
#> make install
##
   На последнем этапе, когда делаем make install, будет вылет по ошибке. Чтобы не править make-файл – просто запустите make install еще раз, все должно закончиться хорошо. Настраиваем: /usr/local/c_icap/etc/c-icap.conf. Например так:
##
PidFile /var/run/c-icap.pid
CommandsSocket /var/run/c_icap/c-icap.ctl
Timeout 100
#
#KeepAlive выключаем. Никакого влияния на быстродействие я не заметил, а количество
#коммуникационных ошибок резко уменьшилось.
KeepAlive Off
#
#При выключенном KeepAlive следующие 2 опции не принципиальны
MaxKeepAliveRequests 200
KeepAliveTimeout 600
#
#Умолчальный вариант конфига для следующих 5 параметров писался наверное для пары #клиентов, поэтому при работе на настройках по умолчанию вам гарантирована высокая #загруженность системы, тормоза, неполная загрузка страниц. В общем, добавляем не #скупясь
StartServers 3
MaxServers 30
MinSpareThreads     10
MaxSpareThreads     300
ThreadsPerChild     30
MaxRequestsPerChild  0
#
Port 1344
#
#От имени этого пользователя будет работать с-icap
User cicap
Group cicap
TmpDir /var/tmp/c_icap
MaxMemObject 131072
#
#Писать логи удобнее в файлы, не используя syslog
ServerLog /var/log/c_icap/server.log
AccessLog /var/log/c_icap/access.log
Logger file_logger
#
ModulesDir /usr/local/lib/c_icap/
Module logger sys_logger.so
Module perl_handler perl_handler.so
#
#При отказе от syslog следующие две опции не принципиальны
sys_logger.Prefix "c-icap:"
sys_logger.Facility local1
#
#Стандартный acl, подходит, если squid работает на том же компьютере, что и c-icap
acl localsquid_respmod src 127.0.0.1 type respmod
acl localsquid src 127.0.0.1
acl externalnet src 0.0.0.0/0.0.0.0
icap_access allow localsquid_respmod
icap_access allow localsquid
icap_access deny externalnet
#
ServicesDir /usr/local/c_icap/lib/c_icap
Service echo_module srv_echo.so
Service squard_module srv_sguard.so
Service antivirus_module srv_clamav.so
ServiceAlias avscan srv_clam?allow204=on&sizelimit=off&mode=simple
#
# Типы проверяемых файлов, описаны в /usr/local/c_icap/etc/c-icap.magic
srv_clamav.ScanFileTypes TEXT DATA EXECUTABLE ARCHIVE GIF JPEG MSOFFICE
srv_clamav.SendPercentData 5
srv_clamav.StartSendPercentDataAfter 2M
#
# Урезал максимальные значения, если железо позволяет – можно оставить умолчальные
srv_clamav.MaxObjectSize  5M
srv_clamav.ClamAvTmpDir /var/tmp/c_icap
srv_clamav.ClamAvMaxFilesInArchive 50
srv_clamav.ClamAvMaxFileSizeInArchive 5M
srv_clamav.ClamAvMaxRecLevel 5
#
#Скажу сразу: прелести режима «варилатора» я не понял. Подробного описания не нашел,
#режим экспериментальный, предназначен для взаимодействия с web-клиентом, если  #функционал нам не нужен – смело выключаем.
#srv_clamav.VirSaveDir …
#srv_clamav.VirHTTPServer …
#srv_clamav.VirUpdateTime …
#srv_clamav.VirScanFileTypes …
##
Подробное описание всех параметров ищите на сайте проекта.
Добавляем в систему пользователя cicap с группой cicap.
Создаем нужные каталоги и файлы и делаем владельцем каталогов и логов cicap:cicap.
##
#> cd /var/log
#> mkdir c_icap
#> touch c_icap/access.log c_icap/server.log
#> chown –R cicap:cicap ./c_icap
#> mkdir /var/tmp/c_icap /var/run/c_icap
#> chown cicap:cicap /var/tmp/c_icap /var/run/c_icap
##
Далее можно запускать и тестировать.
##
#> /usr/local/c_icap/bin/c-icap
#> sockstat -4 | grep 1344
##
Для ротации журнальных файлов в /etc/newsyslog.conf можно добавить строчки:
##
/var/log/c_icap/access.log    cicap:cicap 640     7  * @T00  J  /var/run/c-icap.pid
/var/log/c_icap/server.log    cicap:cicap 640 7  * @T00  JN
##
По умолчанию посылаем –HUP с-icap.pid, что заставит c-icap перечитать конфигурацию и писать в новые файлы логов.


Установка и настройка прокси-сервера Squid.
Устанавливаем версию Squid от c-icap: squid-icap-2.5.STABLE12-20051102.
##
#> cd /distfiles/squid
#> tar –xzf squid-icap-2.5.STABLE12-20051102.tar.gz
#> cd squid-icap-2.5.STABLE12-20051102
##
Конфигурить можно по-разному, главное включить поддержку c-icap. Например так:
##
#>./configure --prefix=/usr/local/squid \    # путь по умолчанию
   --enable-ipf-transparent \    # поддержка прозрачного прокси
   --enable-delay-pools \        # управление ограничением трафика
   --enable-useragent-log \    # журнализовать заголовок Useragent
   --enable-kill-parent-hack \    # помогает сделать shutdown чисто
   --enable-arp-acl \    # возможность использования mac – адреса в ACL
   --enable-icmp \            # измерять путь до каждого HTTP-сервера
   --enable-icap-support \    # поддержка c_icap
   --enable-err-language=
English \ # язык сообщений об ошибках
   --enable-default-err-language=English # язык сообщений об ошибках по умолчанию

#> make all
#> make install
##
Проверяем строки в squid.conf, относящиеся к поддержке c_icap:
##
icap_enable          on
# выключаем предпросмотр
# ничего, кроме ошибок я от него не получил
icap_preview_enable  off
icap_preview_size    128
icap_send_client_ip  on
icap_service  service_avi_req reqmod_precache 0 icap://localhost:1344/srv_clamav
icap_service  service_avi respmod_precache 1 icap://localhost:1344/srv_clamav
icap_class    class_antivirus service_avi service_avi_req
icap_access   class_antivirus allow all
##
Если вы настраиваете Squid в первый раз, рекомендую сначала выключить поддержку c_icap (icap_enable off), отстроить работу прокси, и только потом подключать c_icap.

Вот и все.
Решение работает достаточно устойчиво, что является еще одним подтверждением разумности данного подхода.

mikola, 2007-07-03 в 12:08:50

Clamav не захотел собираться, пришлось руками в маке файлах в местах указания CFLAGS дописать опции -lbind -L/usr/lib
наверняка есть более правильный способ, но я за 3 дня смог победить его тока так, фряха к стати 5.4.

mikola, 2007-07-03 в 12:27:31

c-icap уже есть в портах /usr/ports/www/c-icap

SergSS, 2007-10-10 в 19:47:39

Включаю в сквиде icap и сё... висит.(

FreeBSD 6.2-RELEASE #0: Fri Jan 12 11:05:30 UTC 2007
Squid Cache: Version 3.0.PRE7+PatchSets-20070919
icap ставил и из портов и с оффа.

Вот такой у мну вывод sockstat почему-то...
#>sockstat | grep icap
squid    c-icap     99182 5  tcp4   *:1344  *:*
squid    c-icap     99181 5  tcp4   *:1344  *:*
squid    c-icap     99180 5  tcp4   *:1344  *:*
squid    c-icap     99179 5  tcp4   *:1344  *:*

Почему нет строчек с датаграммами: ???
squid    c-icap     33144 4  dgram  -> /var/run/logpriv

Логи сквида:
2007/10/10 21:16:08.153| The request GET http://www.lissyara.su/?id=1128 is ALLOWED, because it matched 'auth_users'
2007/10/10 21:16:08.153| client_side_request.cc(1012) Doing calloutContext->icapAccessCheck()
2007/10/10 21:16:08.153| ICAPAccessCheck::check
2007/10/10 21:16:08.153| ICAPAccessCheck::check: class 'class_req' has candidate service 'service_req'
2007/10/10 21:16:08.153| ACLChecklist::preCheck: 0x8cb50a0 checking 'icap_access class_req allow all'
2007/10/10 21:16:08.153| ACLList::matches: checking all
2007/10/10 21:16:08.153| ACL::checklistMatches: checking 'all'
2007/10/10 21:16:08.154| aclMatchIp: '192.168.77.26' found
2007/10/10 21:16:08.154| ACL::ChecklistMatches: result for 'all' is 1
2007/10/10 21:16:08.154| aclmatchAclList: 0x8cb50a0 returning true (AND list satisfied)
2007/10/10 21:16:08.154| ACLChecklist::markFinished: 0x8cb50a0 checklist processing finished
2007/10/10 21:16:08.154| ACLChecklist::check: 0x8cb50a0 match found, calling back with 1
2007/10/10 21:16:08.154| ACLChecklist::checkCallback: 0x8cb50a0 answer=1
2007/10/10 21:16:08.165| ICAPAccessCheck::do_callback
2007/10/10 21:16:08.165| ICAPAccessCheck::do_callback matchedClass = class_req
2007/10/10 21:16:08.165| ICAP/ICAPConfig.cc(257) do_callback: with service icap://127.0.0.1:1344/request
2007/10/10 21:16:08.165| client_side_request.cc(504) 0x8cb1070 icapAclCheckDone called
2007/10/10 21:16:08.165| client_side_request.cc(1086) 0x8c606c8 ClientHttpRequest::startIcap() called
2007/10/10 21:16:08.176| entering AsyncJob::noteStart(0x8cdd098)
2007/10/10 21:16:08.176| ICAPModXact constructed, this=0x8ce11c0 [icapx4]
2007/10/10 21:16:08.176| exiting AsyncJob::noteStart(0x8cdd098)
2007/10/10 21:16:08.187| entering AsyncJob::noteStart(0x8ce11c0)
2007/10/10 21:16:08.187| exiting AsyncJob::noteStart(0x8ce11c0)
2007/10/10 21:16:08.290| storeMaintainSwapSpace: f=1, max_scan=500, max_remove=80
2007/10/10 21:16:08.290| UFSSwapDir::maintain: /usr/local/squid/cache removed 0/80 f=1 max_scan=500
2007/10/10 21:16:09.302| storeMaintainSwapSpace: f=1, max_scan=500, max_remove=80
2007/10/10 21:16:09.302| UFSSwapDir::maintain: /usr/local/squid/cache removed 0/80 f=1 max_scan=500
2007/10/10 21:16:10.314| storeMaintainSwapSpace: f=1, max_scan=500, max_remove=80
2007/10/10 21:16:10.314| UFSSwapDir::maintain: /usr/local/squid/cache removed 0/80 f=1 max_scan=500



Лог icap server:
Wed Oct 10 21:04:07 2007, general, Waiting for a request....
Wed Oct 10 21:04:07 2007, general, Waiting for a request....
Wed Oct 10 21:04:07 2007, general, Waiting for a request....
Wed Oct 10 21:04:07 2007, general, Child 97274 getting requests now ...
Wed Oct 10 21:04:07 2007, general, Waiting for a request....
Wed Oct 10 21:04:07 2007, general, Waiting for a request....
Wed Oct 10 21:04:07 2007, general, Waiting for a request....
Wed Oct 10 21:04:07 2007, general, Waiting for a request....
Wed Oct 10 21:04:07 2007, general, Waiting for a request....
Wed Oct 10 21:04:07 2007, general, Waiting for a request....
Wed Oct 10 21:04:08 2007, general, Server stats:
        Childs:3
        Free servers:9
       Used servers:0
       Requests served:0
Wed Oct 10 21:04:09 2007, general, Server stats:
        Childs:3
        Free servers:9
       Used servers:0
       Requests served:0
...................
Wed Oct 10 21:04:46 2007, general, Server stats:
        Childs:3
        Free servers:8
       Used servers:1
       Requests served:0
Wed Oct 10 21:04:47 2007, general, Server stats:
        Childs:3
        Free servers:8
       Used servers:1
       Requests served:0
...................
Wed Oct 10 21:04:51 2007, general, Error parsing headers :(0)
Wed Oct 10 21:04:51 2007, general, Process request timeout or interupted....
Wed Oct 10 21:04:51 2007, general, Waiting for a request....
Wed Oct 10 21:04:52 2007, general, Server stats:
        Childs:3
        Free servers:9
       Used servers:0
       Requests served:0
Wed Oct 10 21:04:53 2007, general, Server stats:
        Childs:3
        Free servers:9
       Used servers:0
       Requests served:0


Совсем мозг сломал уже)

_az_, 2007-12-26 в 17:01:37

У меня аналогичная ситуация:
Вот такой у мну вывод sockstat почему-то...
#>sockstat | grep icap
squid    c-icap     99182 5  tcp4   *:1344  *:*
squid    c-icap     99181 5  tcp4   *:1344  *:*
squid    c-icap     99180 5  tcp4   *:1344  *:*
squid    c-icap     99179 5  tcp4   *:1344  *:*

И в логах:
general, Error parsing headers :(0)
Может ктото розобрался?

andrew, 2007-12-26 в 17:06:01

какая версия icap?

Sam, 2008-01-28 в 14:06:14

С последними версиями C-ICAP 180407 и squid-3 c отключением
preview РАБОТАЕТ. Машина 2Xeon 4MB, RAM4 GB RAM, дискиSATA.
FreeeBSD-7.0PRERELEASE.

vasilich, 2008-01-29 в 15:30:42

To Sam: А если в консоли набрать Ctrl+C, c-icap 180407
не выгружается из памяти, на оф. сайте этот случай описан.

mrlexy, 2008-01-29 в 17:20:28

пробовал обуздать icap, так и не победил, то здесь вывалется - то там отвалится, поставил связку squid+havp+clamd, четенько все работает даже при учете того, что havp в соседней клетке (jail) сидит.

Sam, 2008-01-29 в 17:54:37

to vasilich:
а с какой целью Ctrl+C?
я c_icap скриптом запускаю от версии из портов

squid+havp+clamd -пробовал - тоже ничего
но мне логи нужны от squida - с havp получается, что все
под одним IP ходят. Хотя я может чего-то недосмотрел

mrlexy, 2008-01-30 в 10:27:25

Sam> с havp получается, что все
под одним IP ходят. Хотя я может чего-то недосмотрел
по другому цепочку построй - сначала squid, потом havp

squid.conf

# были проблемы с авторизацией по сессиям/печенькам
# на некоторых сайтах, здесь их можно зарулить без каскада
hierarchy_stoplist host_to_path_thru

# здесь указываем хост/порт havp
cache_peer HAVP.HOST parent 8080 0 no-query

# использовать сначала havp
prefer_direct off

в данной конфигурациии не валится даже если сдох havp, просто все идет только через squid

единственно, немного тоскливо искать заразника, примерно так:

# tail /var/log/havp/access.log
29/01/2008 15:35:33 192.168.x.x GET 200 http://meddesk.ru/ 284+56791 VIRUS Clamd: Exploit.IFrame.Gen-1

# cat /var/squid/logs/access.log | grep 'http://meddesk.ru/'
1201610133.246    823 192.168.y.y TCP_MISS/200 3431 GET http://meddesk.ru/ - FIRST_UP_PARENT/mail.office.atl text/html

где 192.168.y.y - IP? с которого была попытка доступа к зараженной странице

vasilich, 2008-01-30 в 12:01:32

To Sam: Вопрос в том, что просматривать любой лог,
например, tail -f /var/lol/maillog, а потом дать в
консоли Ctrl+C, c-icap успешно перехватывает этот сигнал и прекращает работу. Из-за этого перешли на
squid+havp+libclamav+squid. Работает успешно.

mrlexy, 2008-01-30 в 12:09:51

2 vasilich:
сначала тоже пробовал на libclamav, но он грузит систему больше чем clamd, как следствие куча форкнутых havp'ов в процессах.

vasilich, 2008-01-30 в 12:49:09

To mrlexy: Спасибо за подсказку, а то shared memory растет дико и ругань в kernel.log и messages:
Jan 25 10:00:03 mail kernel: collecting pv entries — suggest increasing PMAP_SHPGPERPROC
Лечил PMAP_SHPGPERPROC=230 в конфигурации ядра.

Sam, 2008-01-30 в 14:50:16

to vasilich:
удаленно или прямо на серваке?

vasilich, 2008-01-30 в 15:30:45

To Sam: я работал удаленно через ssh-сессию, вот ссылка, где я описал эту ситуацию [url=http://sourceforge.net/tracker/index.php?func=detail&atid=696477&aid=1702703&group_id=123427]

smilealex, 2008-01-30 в 15:38:37

ГРАЖДАНЕ! А вы не обратили внимание как вас несёт нехило???

lissyara, 2008-01-30 в 15:56:48

та ладно...
Любимая тема всех времён и народов - ИКАП =)
Изредка он у кого-то заработает - обсуждения на месяцы потом =)))
===========
А вот гражданам обсуждающим - форум для чего придуман?
И обсуждение ваше по почте читает полторы сотни человек подписанных на комменты сайта. Не думаю что оно всем интересно...

Andrew, 2008-04-10 в 9:41:42

Тут на форуме товарищ alive правильно указал:
>Re: c-icap
> alive 2008-03-22 18:24:57
>
>c-icap качать надо с оффсайта и ставить вручную..
>./configure --enable-static --with-clamav=/usr/local — prefix=/usr/local && make && make install
>с порта только rc скрипт выдрать не помешает.
>я так подозреваю что в порте ошибка мейнтейнером допущена


скачал c_icap-180407.tar.gz, собрал ручками, и он нормально заработал с clamav-0.92.1.tar.gz из портов.

Так что красный текст в шапке можно поправить на что-то вроде: "работает, но после танцев с бубном"  :)

А так реально глючноватый этот c-icap. Я его где-то год назад поставил, так он у меня после этого www.price.ru отказался открываться. Всё остальное открывается, а price.ru - нет. Пришлось исключить его из антивирусной проверки. Новый с-icap похоже чуть получше - сайт открывает, но ошибка в squid-е всё равно проскакивает (не только про этот сайт):
2008/04/10 12:27:00| comm_call_handlers(): WARNING defer handler for fd=29 (desc=http://www.price.ru/bin/price/prodlist?curr=2&base=1&pnam=flash) does not call commDeferFD() - backing off manually

hopeful, 2008-04-10 в 13:53:55

Было дело, здесь делился опытом по настройке i-cap (пост выше). Но разочаровался. Нестабильная вещь или просто мне не повезло ;-). Поставил SQUID+HAVP и забыл о проблеме вирусов по HTTP.

m1h, 2008-05-23 в 10:53:53

Внесу свои 5 копеек...

Сперва ставил c-icap из порта (freeBSD7), пересобрал Сквид с потдержкой icap... ничо не заработало!
2 дня парился, хотя особой нужды в clamav на страже офисного HTTP трафика не вижу, т.к. стоит Нортоновский Сервер... просто хотелось попробовать!

2м шагом было скачать с сайта проекта c-icap исходники и самого c-icap и Сквида 2.5-icap, всё встало, но не заработало... выдавало в лог
Error creating mutexError creating mutexCan't init shared memory.Fatal error, exiting!

в Итоге... скачал я последний на тот момент сквид (05222008) и всё вроде заработало, писало тока warning на то что к icap_class не можно прикручивать сразу 2 сервиса... чтож сделал 2 класса.
Ну и... всё заработало, тестовый вирус ловит... ошибку 403 в IE поправил правкой сорсов + русифицировал выводимое предупреждение.

З.Ы. но от всего этого хозяйства пришлось отказаться до лучших времён, т.к. на машине где всё это крутится (Cel2600\256) c-icap откушивает 90-95% процессорного времени при количестве пользователей 15 чел.

MAPTbIH, 2008-07-09 в 17:17:18

два дня настраивал, сделал пашет, пока без вылетов.
взял последние исходники icap с офсайта, clamav 0.93.3 из портов, и squid3.0 stable7 так же из портов.
брал потому что HAVP не очень привлекает т.к. squid с ним общается как с parent proxy. в остальном пока рад.

zersh, 2008-07-11 в 16:15:54

делал подобную связку на нескольких серверах, все работает ловится и без проблем!

MAPTbIH, 2008-07-11 в 17:10:12

Для тех у кого узкий канал в мир, к примеру 256kbps
рекомендую поиграться с параметрами icap'a
у себя выставил:
srv_clamav.StartSendPercentDataAfter 256K
так же советовал бы поиграться с остальными параметрами, сказывается при закачке файлов.

Nichls, 2008-07-19 в 13:06:11

Проделал в точь как описал hopeful. Никаких проблем при сборке не возникло.
OC:
[root@piton ~/src/squid-icap-2.5.STABLE12/src]# uname -a
FreeBSD piton 6.2-RELEASE-p7 FreeBSD 6.2-RELEASE-p7 #0: Sat Jan  5 09:39:15 MSK 2008     root@piton:/usr/obj/usr/src/sys/P
ITON-KERNEL  i386
[root@piton ~/src/squid-icap-2.5.STABLE12/src]
#

c-icap: 060708      July 6, 2008
squid: squid-icap      2.5.STABLE12-20051102      November 3, 2005

Домашние теперь защищены.
Попробую на днях поднять на 800 пользователях на работе и посмотреть, как все это заработает под большой нагрузкой.

Storoge, 2008-12-16 в 17:17:32

Я тоже поставил взятый с сайта c-icap 060708, а squid у меня squid-3.0.10. Единственный нюанс:если делать по статье, то при запуске squid пишет WARNING: Multiple ICAP services per icap_class are not yet supported. See Squid....
Я сделал так:
icap_service  service_avi_req reqmod_precache 0 icap://localhost:1344/srv_clamav
icap_service  service_avi respmod_precache 1 icap://localhost:1344/srv_clamav
icap_class    class_antivirus service_avi_req
icap_class    class_antivirus2 service_avi
icap_access   class_antivirus allow all
icap_access   class_antivirus2 allow all

И все нормально заработало.

zersh, 2010-05-31 в 16:21:41

для связки
Squid-3.1.0.17 + c-icap-060708_1,1 (7.3-RELEASE)
в squid.conf нужно прописать следующее:

icap_enable on
icap_preview_enable on
icap_preview_size 128
icap_send_client_ip on
icap_send_client_username on
icap_service service_req reqmod_precache bypass=1 icap://localhost:1344/srv_clamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=1 icap://localhost:1344/srv_clamav
adaptation_access service_resp allow all

AlexRay, 2012-04-06 в 14:26:09

Заработало без особых проблем. Ставил из портов.
Squid-3.1.0.19 + c-icap-060708-2,1 (9.0 RELEASE)

с-icap.conf:
PidFile /var/run/c-icap.pid
CommandsSocket /var/run/c-icap/c-icap.ctl
Timeout 300
KeepAlive On
MaxKeepAliveRequests 300
KeepAliveTimeout 600  
StartServers 3
MaxServers 10
MinSpareThreads     10
MaxSpareThreads     30
ThreadsPerChild     10
MaxRequestsPerChild  0
Port 1344
User squid
Group squid
TmpDir /var/tmp
MaxMemObject 131072
ServerLog /var/log/c_icap/server.log
AccessLog /var/log/c_icap/access.log
DebugLevel 3
ModulesDir /usr/local/lib/c_icap
Module logger sys_logger.so
sys_logger.Prefix "C-ICAP:"
sys_logger.Facility local1
Logger sys_logger
acl localsquid_respmod src 127.0.0.1 type respmod
acl localsquid src 127.0.0.1
acl externalnet src 0.0.0.0/0.0.0.0
icap_access allow localsquid_respmod
icap_access allow localsquid
icap_access deny externalnet
ServicesDir /usr/local/lib/c_icap
Service echo_module srv_echo.so
Service url_check_module srv_url_check.so
Service antivirus_module srv_clamav.so
ServiceAlias  avscan srv_clamav?allow204=on&sizelimit=off&mode=simple
srv_clamav.ScanFileTypes TEXT DATA EXECUTABLE ARCHIVE GIF JPEG MSOFFICE
srv_clamav.SendPercentData 5
srv_clamav.StartSendPercentDataAfter 2M
srv_clamav.MaxObjectSize  5M
srv_clamav.ClamAvTmpDir /var/tmp
srv_clamav.ClamAvMaxFilesInArchive 0
srv_clamav.ClamAvMaxFileSizeInArchive 100M
srv_clamav.ClamAvMaxRecLevel 5

squid.conf:
icap_enable on
icap_preview_size 128
icap_send_client_ip on
icap_send_client_username on
icap_service service_req reqmod_precache bypass=1 icap://localhost:1344/srv_clamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=1 icap://localhost:1344/srv_clamav
adaptation_access service_resp allow all

Demis, 2012-09-01 в 18:13:03

Применяю c-icap примерно с января 2009 года.
По этой статье (в то время+что-то еще почитать пришлось).
Собрано несколько площадок с повязкой vpn через ракун2.
Нагрузка sendmail,squid,racoon2,dummy,voice-ip и т.д. (около 150 портов на каждом сервере) в офисах 15-20 человек.
Нареканий особых и проблем нет.

Первоначальная машина P-II 233 Asus P2B 320Мб RAM.
Потом, через год добавил память до 512Мб и процессор поменял на 266.
Все регулярно обновлялось (версия системы, мир, порты...)
Весной 2012 года пришлось заменить железо. Как-никак комп был изначально куплен в феврале 1998 года и пошли микротрещины на материнке.

На новом железе вылезла фишка:
Чтобы систему не переустанавливать все делалось переносом.
Винт (80Гб но в режиме 32Гб, иначе биос виснет на старом компе) подключался к новому серваку  через платку переходник IDE->SATA.
Потом банально все перенесено на новый винт.
Все работало.
Потом перекомпилирован мир на SMP.
Все работало.
Потом перекомпилирован мир на x64 (adm64).
Все работало.
Потом перекомпилированы все порты.

И вот после последнего действия c-icap сказал КРЯ в виде ошибки протокола icap (подробности опускаю).

Не найдя решения (а надо сказать на сайте автора я нашел такую ошибку как возникла у меня, но найденные  рекомендации ни к чему не привели, а трабл у него висит открытым уже несколько лет) был просто поднят c-icap на другой машине и привязан через сокет.
Полет полгода нормальный.

Следущая фишка возникла после июня 2012, когда вышла новая версия c-icap-0.2.1_1,2.
В этой версии введена модульность и проверка на вирусы через clamv ушла в модуль. Причем при переустановке об этом ни слова, ни гу-гу.
Результат - не забудьте после обновления доустановить /usr/ports/www/c-icap-modules .
Обратите внимание что при установке порта c-icap  надпись "Build with srv_clamav service" теперь отсутствует, но это никак не мешает.

В новой версии пользователь меняется с cicap на c_icap .
И меняются названия библиотек с srv_clamav на virus_scan .
Старый конфиг нужно переименовать, перекинуть из /usr/local/etc в /usr/local/etc/c-icap .
А в новый перенести свои параметры. Так проще будет.
В новом /usr/local/etc/c-icap.conf добавить инклуд (как сделать написано в /usr/local/etc/virus_scan.conf).
Поменять в /etc/rc.conf соответственно ссылку на новое место конфига.
Логи тоже теперь передвинулись в каталог /var/log/c-icap .
Да и еще фишка, не знаю у кого как, но в новом конфиге от (теперь уже) модуля /usr/local/etc/c-icap/virus_scan.conf есть параметры virus_scan.UseClamd off и virus_scan.ClamdSocket
Пришлось закомментировать их иначе c-icap не запускался.
Комментариев теперь в конфиге намного больше.
В общем причесали c-icap.
В общем и целом мне очень нравится.



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0619 секунд
Из них PHP: 57%; SQL: 43%; Число SQL-запросов: 54 шт.
Исходный размер: 121976; Сжатая: 29056