Мы — долго запрягаем, быстро ездим, и сильно тормозим.

Авторы
История сайта
Статистика
Архив
  CVSup
  EXIM & courier-imap
  postfix & courier-imap
  SQUID
  SAMBA
  IPsec
  C-ICAP
  exim & dbmail
  vpnd
  Samba как PDC
  pureftpd
  diskless
  gmirror
  SAMBA + LDAP
  IPSEC
  SAMBA+ACL
  Lightsquid
  LiveCD (+restore)
  1С:Предприятие 8.2
Карта сайта
поисковые слова
Личные настройки
Реклама
Друзья сайта


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, с ней эта связка работает более стабильно.



Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=758.

размещено: 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.
В общем и целом мне очень нравится.


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной

Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server

Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs

Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec

Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash

Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT

Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3

Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN

На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm

Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth&quota

Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli

Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master

MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones

Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)

Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4

Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3

Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2

Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
2010-03-01, BlackCat
Шлюз: Часть 1

Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat

Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
2010-01-23, gonzo111
squid+sams+sqstat

Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
2009-12-19, schizoid
mpd5 + radius + ng_car + Abills

Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
2009-11-16, lissyara
UFS->ZFS

Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
2009-11-13, gx_ua
fusefs-ntfs

Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD
2009-11-12, Morty
LiveCD

Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД.
2009-09-27, lissyara
Samba как PDC

Контроллер домена - аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =)
2009-08-30, terminus
ipfw nat

Подробное руководство по ipfw nat, сложные случаи конфигурации.
2009-08-24, levantuev
HotSpot

Установка Hotspot системы в общественное заведение.
2009-08-18, lissyara
diskless

Создание бездисковых терминалов под управлением FreeBSD - с загрузкой по сети. Используются для старта rdesktop и подключения к виндовому серверу терминалов.
2009-07-29, BAV_Lug
Видеонаблюдение

Настройка бюджетного варианта видеонаблюдения на удаленном объекте
2009-07-22, Cancer
OpenLDAP адресная книга

Настройка и создание адресной книги на базе OpenLDAP + phpLDAPadmin
2009-06-30, SergeySL
AimSniff

Руководство по созданию системы мониторинга ICQ-переписки на базе AimSniff, использующей базу данных MySQL для хранения и Web-интерфейс WAS (Web Aim Sniff) для просмотра перехваченных сообщений
2009-06-25, atrium
Управление правами доступа

Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС UNIX.
2009-06-16, DNK
Exim+PgSQL

Установка почтовой системы exim+pgsql на FreeBSD 7.1
2009-05-30, mvalery
HDD(mbr) -> HDD(gpt)

Как разбить диск размером более 2TB на разделы, сделать загрузочным, а затем перенести на него информацию с рабочей системы — донора.
2009-05-22, Cancer
SendXMPP

Отправка сообщений на Джаббер сервер по средствам SendXMPP
2009-05-11, Raven2000
Network UPS Tools

Network UPS Tools представляет собой набор программ, которые обеспечивают общий интерфейс для мониторинга и администрирование UPS оборудования.
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 22 чел.
За последние 30 мин было: 73 человек
За сегодня было
8584 показов,
1011 уникальных IP
 

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

© lissyara 2006-10-24 08:47 MSK

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