The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Проверка web-трафика Squid на вирусы при помощи ClamAV и c-i..."
Отправлено hopeful, 21-Июн-07 14:39 
В дополнение хочу поделиться опытом запуска 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.

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

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру