squid+icap [Solved]

День добрый всем!

Достаточно долго бьюсь со связкой clamav+icap+squid. Проблема такая...
Поставил из сырцов 3-й squid, прикрутил к нему icap... И все-то запускается... И работает все спокойно... Но стоит попытаться качнуть тестовый вирус - клиенту выдается ошибка 403 и все... Никаких сообщений о вирусе, ничего. Можно было бы тут успокоиться (ибо вирус-то все таки не закачен), но при попытке качать любой файлик получается такая штука: он заливается на шлюз... И пока он заливается, пользователь ничего не видит. Если пользователь прерывает закачку повторным началом закачки, то получает 403 ошибку, а icap говорит в логах, что не может создать такой временный файл (конечно, он же уже создан, но не докачен). Если дождаться докачки, то можно его забирать... Но это только в том случае, если мы терпеливо ждали (без видимых изменений на экране), когда пройдет закачка.

В общем вопрос - если кто эту связку настроил, подскажите, какова нормальная работа сквида и икапа? Как это выглядит для клиента и что должно светиться в логах

Тройку не

Тройку не пробовал, ветка 2.6-icap из cvs работает с января этого года. C-icap тоже из cvs. При попытке скачать вирус выводит html страничку с предупреждением и типом вируса. Чтобы пользователи не пугались, перевел ее на русский и немного подрихтовал. В логах это выглядит примерно так:

Thu May  8 14:59:55 2008, general, Error uncompressing gzip encoded obejct
Thu May  8 15:21:21 2008, general, Object size is 5367296 . Bigger than max scannable file size (5242880). Allow it....
Fri May  9 18:42:55 2008, general, Timeout sending data. Ending .......
Sat May 10 10:18:11 2008, general, VIRUS DETECTED:JS.Paypop-1.
Take action.......
 Sat May 10 10:19:17 2008, general, VIRUS DETECTED:JS.Paypop-1.
Take action.......
 Sat May 10 10:19:40 2008, general, VIRUS DETECTED:JS.Paypop-1.
Take action.......
 Sat May 10 10:19:57 2008, general, VIRUS DETECTED:JS.Paypop-1.
Take action.......
 Sat May 10 10:20:23 2008, general, VIRUS DETECTED:JS.Paypop-1.
Take action.......
 Sat May 10 10:21:33 2008, general, VIRUS DETECTED:JS.Paypop-1.
Take action.......
 Mon May 12 11:32:56 2008, general, Object size is 13937569 . Bigger than max scannable file size (5242880). Allow it....
Mon May 12 14:48:31 2008, general, VIRUS DETECTED:JS.Agent-2.
Take action.......
 Tue May 13 09:51:15 2008, general, Error uncompressing gzip encoded obejct

Немного напрягает Error uncompressing gzip encoded obejct, как побороть не нашел, похоже это кривизна самого icap, использую так.
В c-icap.conf есть параметр srv_clamav.StartSendPercentDataAfter, который отвечает за отображение процентов пересылки данных, он по умолчанию стот 2M. Я поставил 200К, теперь практически сразу видно, как файл качается.

Дистр какой?

А то вроде как не генто-вау ставить из сырцов :)
squid3 давно есть в портежах, не забудь про флаги, связаные с icap,
сам ebuild c-icap-а возми у меня http://vi.net.ua/portage/net-misc/c-icap
он уже с патчами, сообщение о вире на русском и красиво показывает.

А для разруливания ситуации - желательно видеть конфиг сквида (только ICAP секцию)
и конфиг самого c-icap

в логах icap у

в логах icap у меня всплывает VIRUS DETECTED.... TAKING ACTION....Только при этом акшена не заметно ((
Дистр-то Gentoo ) На счет сырцов - простите ) Я только осваиваю gentoo ) Сырцы уже были, поэтому и работал с ними. Я попробую поставить из портежей, но очень бы хотелось победить сложившуюся сейчас ситуацию. Ибо я совсем в тупике....

Приведу фрагменты конфов. squid.conf (тут все прилично...):

icap_enable on
icap_preview_enable on
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_req service_avi_req
icap_class class_antivirus service_avi
icap_access class_antivirus_req allow all
icap_access class_antivirus allow all

И c-icap.conf:

PidFile /var/run/c-icap.pid
CommandsSocket /var/run/c-icap/c-icap.ctl
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 600
StartServers 3
MaxServers 10
MinSpareThreads 10
MaxSpareThreads 20
ThreadsPerChild 10
MaxRequestsPerChild 0
Port 1344
User nobody
Group nobody
TmpDir /tmp
MaxMemObject 131072
ServerLog /opt/c_icap/var/log/server.log
AccessLog /opt/c_icap/var/log/access.log
DebugLevel 3
ModulesDir /opt/c_icap/lib/c_icap
Module logger sys_logger.so
Module perl_handler perl_handler.so
sys_logger.Prefix "C-ICAP:"
sys_logger.Facility local1
Logger file_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 deny externalnet
ServicesDir /opt/c_icap/lib/c_icap
Service echo_module srv_echo.so
Service url_check_module srv_url_check.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.Allow204Responces off
srv_clamav.MaxObjectSize 5M
srv_clamav.ClamAvTmpDir /tmp
srv_clamav.ClamAvMaxFilesInArchive 0
srv_clamav.ClamAvMaxFileSizeInArchive 100M
srv_clamav.ClamAvMaxRecLevel 1
srv_clamav.VirSaveDir /var/infected
srv_clamav.VirHTTPServer "http://10.0.0.1/cgi-bin/get_file.pl?usename=%f&remove=1&file="
srv_clamav.VirUpdateTime 15
srv_clamav.VirScanFileTypes ARCHIVE EXECUTABLE

Вроде все по шаблону... ((

У меня работает

У меня работает с этими конфигами
мой squid.conf

icap_enable on
icap_preview_enable on
icap_preview_size 128
icap_send_client_ip on
icap_service service_avi_req reqmod_precache 0 icap://localhost:1344/antivirus_module
icap_service service_avi respmod_precache 1 icap://localhost:1344/antivirus_module
icap_class class_antivirus_req service_avi_req
icap_class class_antivirus service_avi
icap_access class_antivirus allow all
icap_access class_antivirus_req allow all

и c-icap.conf

PidFile /var/run/c-icap/c-icap.pid
CommandsSocket /var/run/c-icap/c-icap.sock
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 600
StartServers 5
MaxServers 20
MinSpareThreads 15
MaxSpareThreads 30
ThreadsPerChild 15
MaxRequestsPerChild 0
Port 1344
User nobody
Group nobody
TmpDir /tmp
MaxMemObject 131072
ServerLog /var/log/c-icap/server.log
AccessLog /var/log/c-icap/access.log
DebugLevel 1
ModulesDir /usr/lib/c_icap
Module logger sys_logger.so
sys_logger.Prefix "C-ICAP:"
sys_logger.Facility local1
Logger file_logger
acl externalnet src 0.0.0.0/0.0.0.0
acl localsquid_respmod src 127.0.0.1 type respmod
acl localsquid src 127.0.0.1
icap_access allow localsquid_respmod
icap_access allow localsquid
ServicesDir /usr/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 /tmp
srv_clamav.ClamAvMaxFilesInArchive 0
srv_clamav.ClamAvMaxFileSizeInArchive 100M
srv_clamav.ClamAvMaxRecLevel 5

В конфиге сквида ты указываеш для икапа сервис srv_clamav - а где он у тебя описан в настройке икапа? нет его там...
Есть только сервис antivirus_module

Вири для тестирования можно взять здесь - http://www.nvkz.kuzbass.net/as - только обрати внимание что там дальше
по ссылкам надо вручную убирать \ которой оканчивается ссылка.

Не, вы будете

Не, вы будете смеяться, но даже дословное повторение приведенных выше конфов не привело к успеху... Все также: на вирус натыкаешься, в браузере запрет доступа, но ничего более. В логах icap пишеться, что обнаружен вирус... Я просто в тупике. Я пробовал сборку на squid 3-м и 2.5-м. Пробовал собирать на редхатовском дистрибе... Возможно косяк в самом с-icap. Попробую собрать из портежей... Может заработает :(

Урррра!

Урррра! Пересобрал все из портежей. А конкретно icap (спасибо за ebuild, кстати :)). И все стало ок! То есть проблема крылась в кривом icap, который я брал (вообще-то) с sourgeforge. Ну да ладно. Всем спасибо за содействие ;)

Хм. Сделал как

Хм. Сделал как написано, и получил один неприятный баг. Вирусы ищет, предупреждения выдает, но если зайти на сайт, который отдает контент в сжатом виде, получаем дулю с маком. links к приеру пишет (сначало задумывается на секунд 5) Error decompressing http://folding.extremeoverclocking.com/ with zlib: incorrect header check Хотя wget такие странички вроде как корректно закачивает. В чем может быть беда?

Читаем http://www.gento

Читаем
http://www.gentoo.ru/node/10655#comment-72512 в конце.

Очевидно надо отключить в броузерах запрос шифрования (для начала, а там уже смотреть где косяк).

Отключил в links

Отключил в links поддержку сжатых страниц и заработало.

Короче косяки

Короче косяки все равно замучили, посему пока пробую связку squid+havp+clamav вроде пашет. Завелось с пол пинка. Посмотрим как оно дальше будет.

Странички

Странички сжимаются только если браузер при установлении соединений подтвердил, что ймеет разжимать. wget не умеет. Я подозреваю что беда в том, что страничка на прокси-сервере разжимается и передается в разжатом виде, а зпголовки при этом не меняются и браузер считает, что страничка сжата.

Не сам прокси а

Не сам прокси а наверно c-icap разжимает... Может его можно научить не трогать страницы сжатые?

Точно

icap естественно их разжимает - иначе как он их проверит на вирусню? Кстати, обновился icap довольно основательно, ebuild что по ссылке выше я тоже обновил, работает нормально - тестирование идет на офисных работниках - не жалуются :)

Обновление Ebuild-а

Обновлен Ebuild c-icap что по ссылке выше.
Изменения - пофиксена работа с clamav версии 0.95 и выше, web-страница сообщения о вирусе нормально отформатирована
и сообщения на понятном языке, можно сразу посмотреть описание вируса.

а можно вопрос: c-icap +

а можно вопрос:
c-icap + clamav + squid работают на какой машине (Вы писали, что тестируете на офисном народе),
ибо у меня дома через прокси (amd5200+, x86, 4GB RAM) картинки приходится принудительно обновлять (клиент -- WinXP, Pentium-M, 1600, 512MB), на машине-прокси результат тот-же -- картинки загружаются через одну

:)

Помоему это не от железа зависит... Надо логи внимательно изучать.
У меня железо на маршрутизаторе Duron1200 512Mb RAM - ~30 клиентов одновременно держит отлично.
Тип кеша в squid - diskd, параметры использования памяти - по умолчанию.

СПАСИБО ЗА EBUILD!!!

СПАСИБО ЗА EBUILD!!!

gentoo centos fedora

СПАСИБО ЗА EBUILD!!! Все

СПАСИБО ЗА EBUILD!!!
Все установилось без проблем.
Буду тестировать вместе со Squid :^)

Все работает, вирусы

Все работает, вирусы ловит.
Это лучше чем ничего на шлюзе.
Вот только по https не ловит.
Я понял что эта функция еще не реализована?
Посоветуйте как правильно обновлять c-icap если используется неофициальный ebuid.
Если укажу в файле ebuild SRC_URI=путь к новому файлу с исх.кодами норм. собирётся? Вышел RC3. Хочу обновить.
Спасибо.

Beelzebub написал(а):Вот

Beelzebub написал(а):
Вот только по https не ловит.
Я понял что эта функция еще не реализована?

Я в icap ничего не понимаю, самому поставить интересно, зашел почитать, как другие борются. Но я понимаю в HTTPS. Там через прокси идет зашифрованный поток. Без всякой возможности расшифровать его на прокси (расшифровывает клиент, у которого для этого есть ключ; через прокси ключ, конечно, не проходит, иначе о какой безопасности транзакций речь?) Таким образом, вирус через HTTPS поймать на прокси невозможно в принципе...
Когда-то работал в банке, там сделали просто: запретили на прокси все браузеры, кроме Netscape - тогда еще был Netscape, а не Mozilla или после разделения на браузер, почтовый клиент и еще что-то Firefox... У себя так сделать не могу :( , но хотелось бы - проблем с безопасностью сразу гораздо меньше становится. Не садятся пока вирусы на лисичку... тьфу, чтоб не сглазить 8)

Поднимаем тему :)

Уже давно идет разработка нового c-icap, и старый, на который здесь есть ebuild, не собирается с новым clamav.
Старый ebuild удалил из оверлея, написан ebuild для c_icap-0.1.3 и модулей (clamav и url_check) - да, теперь 2 ebuilda.
Если стоит в системе c-icap со старого ebuild-а, то его придется удалить перед установкой нового.
Связано это со сменой наименования ebuilda - приведен к виду как у разработчиков.
Собственно вот тут брать его надо - http://portage.org.ua/portage/net-misc/

P.S.
Просьба оттестировать на x86 архитектуре.

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

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".