Проверка трафика на вирусы squid

Разное.

Главное событие недели случилось неожиданно. В любимой московскими чиновниками игре "за власть" кто-то наплевал на правила, и поменял "снос". В результате господин Рейман "получил" во владение уже месяц как упраздненное министерство.

Впрочем, смакование подковерной борьбы оставим традиционным газетам форматов от A4 до Tabloid. Важнее результат. Хоть какая-то призрачная надежда на перемены к лучшему угасла. Прежний министр, прежние люди, прежний тотальный непрофессионализм, безграмотность и "бескорыстное" лоббирование.

Только лицензий и сертификатов обещают сделать больше. Что бы независимые операторы не расслаблялись, и платили, платили. Нет, не государству конечно, что за глупость. Есть же специальные частные фирмы для этого! Тут надо дать слово профессионалу - Особенности национальной сертификации и Черная дыра Антона Богатова.

Традиционная цитата. Можно много говорить о достоинствах и недостатках отечественной сертификации вообще и системы ССС в частности. Ясно одно: сертификация в России нуждается в радикальной реформе, поскольку в нынешнем виде имеет место элементарная профанация международной практики подтверждения соответствия, что наносит серьезный ущерб и национальным операторам связи, и поставщикам и производителям оборудования, а главное - мировой репутации России.

И с этим трудно не согласиться - тем более на фоне "возвращения" минсвязи.
:-(

Перейдем к забавному. На дворе весна, и нужно поздравить читателей с наступлением садово-огородного сезона (прислал Sergei Bershadsky).


Вот интересно, подвязывать малину можно только патчкордами Категории 5, или Категория 3 то же сгодится?

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


Грозозащита стояла на абонента. Свитч Surecom, пятипортовый, в металлическом ящике, все порты защищены аналогичными устройствами. Постороннего проникновения в ящик не было. Механического повреждения не было.

Однако порт целый, компьютер абонента целый, остальные защиты целые. Разорван основной защитный элемент (высоковольтный стабилитрон), оплавлен провод заземления, линейные элементы (диоды) целые. Что могло случиться - загадка до сих пор.

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

Краткий смысл проекта. Деньги получают абоненты - владельцы интернет-ресурсов (ftp-архивов). Если у пользователя есть файловый архив и он зарегистрирован в каталоге КАБiNET, то за каждый мегабайт трафика, скачанный с него абонентами КАБiNET из других сегментов, на его лицевой счет перечисляется 5 копеек. Для того, кто трафик скачивает, он стоит 20 копеек.

С момента начала проекта прошло всего несколько дней, но уже можно говорить о успехе. В каталоге зарегистрировано более 300 ресурсов пользователей (это из почти 6000 абонентов сети). Подробной статистики нет, но известно, что одному пользователю за день было начислено 72 рубля (т.е. с его компьютера было скачано 1440 мегабайт).

Конечно не хорошо считать деньги в чужом кармане. Но с провайдерами интереснее говорить именно о бизнесе, а значит и о прибыли - тут никуда не деться. Несложно подсчитать, что фирма-организатор проекта получила за день на одном из участников проекта 216 рублей. И это на третий день работы файлового архива.

Если сделать приблизительную прикидку, то с 300 ресурсов и при распространении идеи в массах абонентов, можно будет получать около $500 в день, или $10-15 к$ в месяц. Не то, что бы это было очень много для сети такого большого масштаба, но лишние $1-2 с абонента получить вполне вероятно. А это уже совсем не плохо.

Конечно есть и подводные камни - при активном потреблении внутренних ресурсов может упасть более выгодный (для оператора) внешний трафик. Хотя это маловероятно - "тяжелые" ресурсы в Екатеринбурге мало кто потребляет в заметных объемах, это слишком дорого (3-4 рубля за мегабайт). С другой стороны, у "перепродажи" внутреннего трафика есть резерв роста - сейчас подсчет ведется только между сегментами, внутри (а это 200-300 пользователей) ничего не считается.

Думаю, более точные результаты будут известны через несколько месяцев. А пока - есть только интересная и довольно красивая идея, как можно загрузить сеть трафиком без особых вложений. Ну и не без прибыли, конечно. ;-)

Обновления в разделах.

Минули те времена, когда по сети можно было ходить "просто так". Современный интернетчик снаряжен как рейнджер - без "свежего" фаервола, антивируса и антитрояна выходить за пределы локалки можно. Но не долго.

При широкополосном подключении достаточно одного неосторожного клика мышью. И компьютер превращается в бомбу немедленного, или, хуже того, замедленного действия. Да, в 95% случаев в появлении вирусов виноваты сами пользователи. Но бывает, что от неприятностей не спасает даже 15-ти летний опыт работы в интернет.

Поэтому предлагаю текст, который написал Эдуард Афонцев, Екатеринбург.

Пакетные фильтры и их модификации.

К первой группе несомненно относится linux netfilter - штатный файерволл в современных linux ядрах. После наложения дополнительного патча становится возможно настраивать пакетный фильтр для фильтрации по содержимому пакетов. Например, для блокирования вируса Code Red достаточно запретить прохождение пакетов, содержащих подстроку "cmd.exe" :

iptables -I INPUT -j DROP -p tcp -m string --string "cmd.exe"

Layer 7 filter - это новый пакетный классификатор для ядра linux. В отличие от других классификаторов, данный выполняет поиск регулярных выражений на уровне приложений. Практически представляет собой патч для linux ядра и iptables. В принципе является расширением netfilter для обработки layer 7 трафика.

Предназначен для фильтрации не на транспортном уровне, как большинство файерволлов, а на уровне приложений. Создает дополнительную очередь в netfilter, которую можно обрабатывать например антивирусной проверкой. В настоящее время данный проект еще не реализован в виде программного кода.

IDS (системы детектирования вторжений).

Snort - это мощный перехватчик и анализатор сетевого трафика, основанный на библиотеке libpcap. Может производить как анализ протоколов (выявлять пакеты несоответствующие стандартам) так и анализ сигнатур (в перехватываемых пакетах выявляются враждебные образцы). Как таковой антивирусной проверки не производит, но может сигнализировать о характерном для распространения вирусов трафике и с использованием многочисленных расширений управлять файерволлами для блокирования.

Расширения проксирующих серверов по принципу встраивания в цепочку передаваемых данных.

По сути php скрипт, осуществляющий антивирусную проверку в сложной цепочке:

В настоящее время проект заморожен.

Mod_clamav - это Apache 2 фильтр, который сканирует контент, доставляемый модулем mod_proxy, используя clamav антивирус. Для того, чтобы при обработке больших файлов браузер не выдавал таймаут, браузеру раз в минуту передается по байту запрошенного содержимого.

Mod_vscan является аналогом mod_clamav, только для проверок используется open antivirus.

Squid-vscan представляет собой патч для прокси сервера squid, позволяющий сканировать передаваемые данные на наличие вирусов. Входит в проект open antivirus.

В принципе dansguardian предназначен для фильтрации передаваемого контента в связке с прокси сервером squid. Существует патч для добавления антивирусных проверок.

Расширения прокси серверов на основе специальных протоколов.

Вероятно, первыми были программисты фирмы CheckPoint, предложившие для своих продуктов протокол CVP (Content Vectoring Protocol). Однако в силу нераспространенности мы его рассматривать не будем.

По пути использования протокола icap пошли такие известные производители программного обеспечения как drweb, symantec, trend micro. Думаю, что ожидаются и другие.

Рассмотрим некоммерческие решения.

Shweby - прокси сервер с поддержкой ICAP протокола, что позволяет передавать данные ICAP серверу, который может осуществлять антивирусную проверку.

Основанный на ICAP программный комплекс для фильтрации интернет контента.

Расширение известного прокси сервера squid для поддержки ICAP протокола. Наиболее перспективное решение, позволяющее осуществлять антивирусную (и не только) обработку кэшируемого контента. Недаром программисты DrWeb, сначала использовавшие подход viralatora, в дальнейшем перешли на squid + ICAP (практически разработав ICAP сервер с функциями антивирусной проверки).

Выводы.

Практически все решения на основе пакетных фильтров базируются на расширении функций подсистемы netfilter ядра ОС linux. Очевидно, что полноценная антивирусная проверка в данном случае трудновыполнима - ведь на транспортном уровне (TCP/IP) данные представлены в виде отдельных блоков. Наиболее просто осуществлять поиск отдельных регулярных выражений (вирусных сигнатур), что и реализуется. В принципе, на мой взгляд, аналогичное решение можно выполнить, используя netgraph ОС FreeBSD, но пока подобных проектов нет.

Использование систем IDS позволяет отследить и блокировать поток данных, генерируемый вирусами, тем самым предотвращая их распространение. Однако данный метод ограничен только вирусами, использующими сетевые функции.

Наиболее эффективным является использование прокси сервисов - приложение посредник имеет большие возможности по обработке передаваемых клиенту данных.

Широкораспространенный прокси сервер squid (http, ftp) допускает подключение внешних программ (редиректоров) для манипуляций с обрабатываемыми url. Запрашиваемый клиентом url передается редиректору, который может с ним манипулировать и возвращать результат для дальнейшей обработки прокси серверу. Недостатки данного метода для антивирусной проверки выражаются в том, что обращение к редиректору происходит до скачивания данных прокси сервером и необходимо принимать дополнительные меры для кэширования и предотвращения таймаутов для клиентской программы.

Остается применение прокси сервисов с поддержкой протокола ICAP - наиболее современное и развивающееся на сегодня решение. По этому пути пошли известные производители антивирусных решений, такие как Symantec, Trend Micro, Dr Web. Однако к великому огорчению некоммерческого программного продукта (сервера icap с антивирусной проверкой) пока нет.

Небольшие зарисовки.

Вот так выглядит "малобюджетная стойка".



Прислал Юрий, компания Имилайн

Небольшая зарисовка о интернете в Казахстане, прислал Дибров Вадим.

Раньше жил я в Казахстане, в Кустанайской области (граничит с Челябинской) и сейчас иногда туда езжу.

Так вот, с интернетом там беда. Нет, возможно в столице, Акмоле, все нормально, но в моем городе (Рудный, 140 тыс. население) и в областном центре, Кустанае, ситуация печальная.

Самое распространенное подключение, diulUp есть 2-х видов, внутренний и внешний. Они так его и называют, казахский интернет и российский интернет. Единый модемный пул, универсальный для любого региона, как и тарифы. Как руснет так и казнет, номера телефонов отличаются незначительно. Набирается как межгород, через 8-ку. Подключение через КазНет ограничивает работу только казахскими ресурсами, видимо по IP. Внешние ресурсы не пингуются.

В моем городе других вариантов подключения нет. Слово "провайдер" там не знают. Даже крупнейшее в регионе предприятие – горно-обогатительный комбинат (3 огромнейших карьера, добывающих железную руду) до недавнего времени ходило в нет через обычные модемы. Совсем недавно на этом предприятии появился xDSL.

Установка антенн на здании (прислал Александр Авдеев):


Думаю что здание на фотографиях представлять не нужно.

Верхолазы.

Вот так вот приходится иногда ставить антенны (прислал Yury Green):


Это явно не крыша 5-ти этажки. Да и антенна серьезная планируется.

Анонс

  • Зарисовки узлов разных провайдеров (в основном стойки). Наконец-то ожидаются "положительные" примеры.
  • Переход через железную дорогу (несколько фотографий);
  • В галерее - сети в Якутске.
  • Сети учебных заведений в Германии (долгострой);
  • Традиционный пункт - ссылки на интересные места Сети. Присылайте письма - они очень нужны для обзоров. Обязательно сообщайте, нужна ли Ваша подпись, ссылка, или лучше обойтись без нее;
  • В "ужастиках" - "узел в холодильнике", Улан-Удэ.

Есть разные способы свызывания Squid&Havp, вплоть до [5], я остановился на такой схеме: User->Squid->Havp->WWW. Преимуществом даного метода есть то, что в кеш не попадают вирусы, и файлы которые отдаются пользователям из кеша прокси не сканируются по несколько раз антивирусом.

Теперь касаемо железа: HAVP очень любит RAM, к процессору заметных требований не наблюдалось. Из примеров - на мегабитном канале с месячным трафиком порядка 30гб и 20 пользователями нагрузка на процесор 300Mhz около 10% и порядка 150мб занято ОЗУ. На более нагруженных серверах еще не проверял.

В дальнейшем подразумевается что имеется УЖЕ рабочий настроеный сквид. Рассматривать настройку сквиды нет смысла, об этом не писал только ленивый, и установка простейшей конфигурации на FreeBSD не представляет никаких проблем.

Установка
Обновляем коллекцию портов удобным для Вас способом и после запускаем сборку havp.

За собой оно потянуло следующее:

havp-0.88.tar.gz 113 kB
clamav-0.93.tar.gz 15 MB
gmp-4.2.2.tar.gz 2226 kB
arc-5.21o.tgz 80 kB
arj-3.10.22.tar.gz 421 kB
m4-1.4.9.tar.bz2 595 kB
help2man-1.36.4.tar.gz 83 kB
gettext-1.05.tar.gz 7693 B
lha-114i.tar.gz 63 kB
unzoo_4.4.orig.tar.gz 25 kB

После успешной сборки делаем

Clamav
Собственно сам Clamav в виде работающего демона не нужен, нужна только библиотека, поэтому большого смысла в его конфиге помоему нет, но на этапе отладки Clamav приходилось дергать, поетому и чегото менял в конфиге. Резервную копию первоначальных конфигов сделали за нас.
Правим /usr/local/etc/clamd.conf
Часть опций менять нет смысла, но я остановился на следующих параметрах:

Это чтобы freshclam не ругался на незапущенный clamd: WARNING: Clamd was NOT notified:

HAVP
Опять же, о дефолтовых конфигах позаботились за нас,
Правим: /usr/local/etc/havp/havp.config

Теперь нужно переместить шаблоны сообщений HAVP (русские, английские или все что есть).
/usr/local/share/examples/havp/ папка templates. Ее нужно положить в /usr/local/etc/havp/

Также надо создать файлы чернобелых списков для havp:


Предварительный запуск
Запускаем обновление антивирусных баз:

Пробуем стартовать havp:

Скорее всего полет нормальный, порт слушается, havp запустился.

в логах:

# tail -f /var/log/havp/error.log
08/05/2008 17:12:51 === Starting HAVP Version: 0.88
08/05/2008 17:12:51 === Mandatory locking disabled! KEEPBACK settings not used!
08/05/2008 17:12:51 Running as user: havp, group: havp
08/05/2008 17:12:51 --- Initializing ClamAV Library Scanner
08/05/2008 17:12:51 ClamAV: Using database directory: /var/db/clamav
08/05/2008 17:12:58 ClamAV: Loaded 277836 signatures (engine 0.93)
08/05/2008 17:12:58 ClamAV Library Scanner passed EICAR virus test (Eicar-Test-Signature)
08/05/2008 17:12:58 --- All scanners initialized
08/05/2008 17:12:58 Process ID: 85924


SQUID
Предполагая что сквид уже настроен и работает - проводим следующий финт - в конфиг /usr/local/etc/squid/squid.conf лепим:

Если сквид сконфигурирован с delay pools - то перезапускаем его, иначе можно просто передернуть:

размещено: 2008-05-20,
последнее обновление: 2008-05-21,
автор: KrivoSoft

Первый нах!
Кста, в портах траблю с цветом букаф/фона уже пофиксили. Еще можно запускать havp от имени clamav:clamav, убиваем зайца при использовании clamd_socket вместо libclamav. Еще исправь в статье ссылку на havp_krivosoft.tar..
Во всем остальном - работает как огонь :)

Мега-респект! Долго трахался с icap (безуспешно), поэтому статья очень полезна.

psj, 2008-05-20 в 18:30:39

АГРОМАДНОЕ СПАСИБО. Всё завелось с полпинка

Т.к. ссылки на обсуждение в форуме нет, пишу тут. 1) Проверял ли автор реакцию пользователя на скачивания больших файлов? ИМХО Пользователь часто в Виндовсе нажимает скип и повторно пытается закачать файл, если не видит прогресса статус-бара по скачиванию.
2) Как работает банк-клиент и прочие, подобные, софтины если их не добавлять в блэклист?

sava, 2008-05-20 в 21:47:10

c_icap с третьим сквидом кстати (!)почти прекрасно работает, единственное из-за чего отказался - невозможность докачки файлов.

razor, 2008-05-21 в 9:45:50

юзал довольно длительное время пока не уперся в невозможность сабжа и delay_pool"ов. не работают пулы при этом похоже :(

Да вот по поводу вопроса FreeDy, действительно интересно
Когда пользователь прерывает закачку гигового файлика :)
потом начинает опять, ну и т.д в разных вариациях.
Ну и с Делй Пулами как я понимаю в такой системе проблем нет?

2FreeDy:
1)Большие файлы качаются абсолютно нормально. Присутствует небольшая задержка, но это все настраивается в конфиге хавп. Т.е. можно явно указать какой кусок "большого файла" пытатся сканить. Вот собственно и все. Читаем коментарии к параметрам конфига havp!
2)Вопервых - блеклисты применительно к хавп - это "List of URLs that are denied access". Т.е. если добавить клиентбанки в блеклист - то точно работать не будут :-)
А вот если не трогать ничего - то ситуация следующая:
клиентбанки работающие по HTTPS уйдут со сквида в мир напрямую, и никто ничего не заметит. А те кто работают по HTTP - им то какая разница?

HAVP я уже внедрил на 3х среднемелких конторах - пока никаких жалоб. Юзеры абсолютно ничего не заметили.

2razor
А вот и неправда! С делай пулами полный порядок! Между юзером и сквидом ведь ничего не добавилось. С чего бы перестали делай пулы работать?!

razor, 2008-05-21 в 10:48:13

2 KrivoSoft
это точно? я сколько ни крутил, так и не вышло объединить. и в инете тоже читал жалующихся. ну сейчас может еще разок попробую.

Sash, 2008-05-21 в 10:52:47

не совсем понятно каким макаром конфиги править. вот, например, что значат стрелочки вот тут и других конфигах?

2razor
С делай пулами 100% порядок. Никаких аномалий.

2Sash
Для тех кто не вкурсе - стрелочки уходят корнями в diff.
И символизируют приблизительно то, какую строчку конфига убрали (" "). Мне такое представление кажется удобным, т.к. явно отражает измененные параметры, и избавляет от необходимости приводить огромные конфиги в статье.

З.Ы. Я ссылку на форум дорисовал, вопросы плз туда.

Sash, 2008-05-21 в 11:26:54

kazavochka, 2008-05-22 в 12:33:48

Ничего не поняла, но судя по количеству буквочек все должно быть очень интерестно!

PainKilleR, 2008-05-24 в 20:05:06

Жесть! Всё завелось! Спасибо!

Вот еще что придумал:
кому интересно - вот скрипт, который будет статистику по отловленым вирусам писать в secutity отчет.

(не забываем права! 555, root:wheel)
/usr/local/etc/periodic/security/451.havp
#!/bin/sh -f
# Copyright (c) 2008 KrivoSoft. All lefts reserved.

yesterday=`/bin/date -v-1d "+%d/%m/%Y"`
logfile='/var/log/havp/access.log'

echo
echo "`/usr/bin/grep -c $ $` virus(es) detected by HAVP:"
echo
/usr/bin/grep $ $
# echo "`/usr/bin/grep -c $ $` virus(es) total."
exit 0

Еще вылезла "фича" - для того чтоб работало радио через прокси желательно в конфиге havp раскоментировать строчку:
STREAMUSERAGENT Player Winamp iTunes QuickTime Audio RMA/ MAD/ Foobar2000 XMMS

ashgdw, 2008-06-25 в 16:37:12

Дает ошибку часто"HAVP Ошибка при запросе службы доменных имён."
Приходится сайт несколько раз загружать. В чем может быть дело

Скорее всего какие то проблемы с разрешением имен с этой машины. Смотри конфигурацию ДНС.
Как вариант завести bind как кеширующий ДНС (если это еще не сделано), и пусть сам он резолвит имена обращаясь к корневым ДНС итд.
Еще проверь насколько хорошо работают те ДСНы шо указаны в данный момент. Может к ним пакеты медленно лазят, и по таймауту убиваются.
Вроде вот так.

ashgdw, 2008-06-25 в 19:34:53

Блин, ступил, проблема была в squid.

Супер! Молодец что отписался с пол пенка взлитело, скоро поставлю на свои два объекта там примерно 20 и 50 машин потестирую, серванта конфиг 2 гб озу двуядерный интел с 3 метрами кеши и обслуживает 3 сети, 3 интерфейса смотрят во внутерь, посмотрим там и анти спам с анти вирусом ещё постфикс контролируют! Огромное спасибо за статью.

Amadeus, 2009-03-27 в 15:19:22

Автору респект) сейчас делаю так сказать мфу сервер для удаленной сети)данное решение взлетело без проблем и косяков.

gonzo111, 2009-07-02 в 13:34:20

опечатка в /usr/local/etc/clamd.conf вместо MaxFileSize 8M,MaxRecursion 3,MaxFiles 1500
наверно должно быть ArchiveMaxFileSize, ArchiveMaxFiles 1500 . и тд

/dev/VolGroup00/LogVol00 / ext3 defaults,mand 1 1


необходимо врубить опцию mand на ту партицую где будут расположенны

Уважаемый, скорее всего вы забылы установить драйвера для рук :-)
Если "связка" пропускает eicar - то Вы явно чето пропустили при настройке (или eicar у Вас уже в сквидовом кеше сидит):-)
С рар-ами у меня точно все нормально, такшо опять же см. п.1

guest777, 2010-02-04 в 17:23:14

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

Автору респект! все работает, вроде.
не могу только понять как сделать так чтобы хавп понимал аксесс листы сквида и не блокировал то что разрешено сквидои.

Все работает.
Только вот в логи сквида cache.log
пишется постоянно вот такое,

ZPH: Preserving TOS on miss, TOS=0

Весь лог забит.
Как избавиться?
И что это вообще такое

Тупит интернет после установки HAPV. Особенно при попытке скачать файл.

viv, 2012-07-06 в 8:54:30

Спасибо огромное за статью. сразу все заработало, прикрутил к связке [url=http://www.lissyara.su/articles/freebsd/traffic_count/squid+sams+rejik/] , мну доволен =)

8.3-RELEASE FreeBSD 8.3-RELEASE #0: Mon Apr 9 21:23:18 UTC 2012 root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64

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

В предыдущей статье (см. СР № 10 за 2005 г.) я описал настройку совместной работы ClamAV и Samba для прозрачной проверки загружаемых файлов. Но Samba - не единственный источник потенциальной вирусной угрозы, обычный веб-серфинг представляет собой намного большую угрозу, поскольку является внешним источником опасности. Samba же - внутренний источник. В антивирусной защите следует прежде всего контролировать (проверять) всю поступающую извне информацию, и на сегодняшний день один из основных таких источников - Интернет.

В этой статье я обратил внимание на проверку веб-трафика, проходящего через Squid на вирусы, используя ClamAV и c-icap.

Я принимал участие в бета-тестировании ICAP-демона от DrWeb, остался им доволен (несмотря не некоторые проблемы, не решенные на этот момент), но финансовая сторона вопроса меня сильно ограничивает, поэтому, в очередной раз, мой выбор пал на ClamAV.

получение необходимых файлов

установка и настройка ClamAV

О процессе установки и настройки ClamAV можно более подробно узнать из предыдущей статьи - "Использование ClamAV для проверки ресурсов Samba". Для работы не понадобится работающий демон clamd, так что можете смело пропустить его конфигурирование (clamd.conf), если он не используется или не будет использоваться в иных целях.

c-icap использует свой антивирусный модуль, основанный на ClamAV, поэтому нас интересует наличие в системе libclamav (он должен там быть, если установлен ClamAV). В случае отсутствия в системе libclamav c-icap просто не соберется.

установка и настройки c-icap с поддержкой ClamAV

Распакуем архив c_icap-220505.tar.gz в /usr/src (или туда, где у вас лежат исходные коды).

configure в каталоге с исходниками c-icap следует запускать со следующими параметрами:

$ ./configure --enable-static --with-clamav --prefix=/usr/local/c_icap

/* Или так, например, если --prefix=/opt/clamav для configure от ClamAV:

$ ./configure --enable-static --with-clamav=/opt/clamav --prefix=/usr/local/c_icap

*/

Демон c_icap собирается статически. --prefix так же можно указать по вкусу.
Можно собирать и сам демон:

$ make

Необходимо проверить, все ли верно собралось:

$ make check

И непосредственно установить c-icap в систему (в тот каталог, который был указан через --prefix):

# make install

Теперь необходимо исправить некоторые настройки в c-icap.conf. В случае нашего --prefix=/usr/local/c_icap не трудно догадаться, что конфиги лежат в /usr/local/c_icap/etc.
Рекомендую обратить внимание на следующие параметры:
- User лучше поставить nobody, поскольку wwwrun, указанный по умолчанию, скорее всего отсутствует в системе;
- TmpDir /tmp - ваш каталог временных файлов.
Далее необходимо настроить ACL (Access Control Lists) - список IP-адресов, которые могут использовать данный 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

Так возможно определить, откуда доступ к нашему сервису ICAP разрешен, а откуда нет. Заметьте, что в данных ACL определяется не список непосредственных клиентов прокси-сервера, а именно список клиентов демона ICAP, то есть список прокси-серверов (их IP-адреса).
Я составил ACL для случая работы демона ICAP и Squid на одном хосте.
- srv_clamav.ClamAvTmpDir /tmp - временный каталог для модуля ClamAV;
- srv_clamav.VirSaveDir /var/infected/ - каталог карантина;
- srv_clamav.VirHTTPServer "DUMMY".

/* Можно попробовать и так:
- srv_clamav.VirHTTPServer "http://proxy.your_srv_name.ru/cgi-bin/get_file.pl?usename=%f&remove=1&file="- URL скрипта на локальном веб-сервере, ссылка на который будет сообщена пользователю в уведомлении о попытке доступа к инфицированному объекту;
- опция srv_clamav.VirSaveDir может указывать на корень веб-сервера. Так можно дать пользователям возможность осознанно скачать инфицированный файл. Остается только воспользоваться файлом contrib/get_file.pl в исходных кодах c-icap.

У меня необходимости в этом не было. */

Создайте каталог /var/infected и сделайте его владельцем пользователя nobody.

Произведем пробный запуск c-icap:

# cd /usr/local/c_icap/bin
# ./c-icap

Если сообщений об ошибках нет, то стоит так же убедиться, что c-icap прослушивает нужный сокет:

# netstat -apn | grep 1344

Если видим нечто похожее на следующую строку, значит все в порядке:

tcp 0 0 *:1344 *:* LISTEN 24302/c-icap

Оставим демона c-icap работать и перейдем к дальнейшим настройкам.

установка и настройка прокси-сервера Squid

Распакуем в /usr/src сорсы Squid’а:

# tar zxvf squid-icap-2.5.STABLE11-20050927.tgz

Перейдем в каталог с исходниками и запустим configure так:

$ ./configure --enable-icap-support

/* До запуска configure в Squid от DrWeb необходимо запустить bootstrap.sh, находящийся в корневом каталоге исходных кодов Squid.
Если вы используете Squid от DrWeb, то обязательно прочитайте документацию из пакета drweb-icapd! */
Собираем Squid:

$ make

Устанавливаем:

# make install

Имеем установленный Squid в /usr/local/squid.
Теперь изменим настройки в squid.conf.
Необходимо найти пару строк:

#acl our_networks src 192.168.1.0/24 192.168.2.0/24
#http_access allow our_networks

Раскомментировать их и установить собственное значение, вместо 192.168.1.0/24 192.168.2.0/24 (в моем случае пользователи прокси-сервера находились в сети 172.16.194.0/24):
Перейдите в /usr/local/squid/var, создайте каталог cache.
Теперь там же выполните команду:

# chown nobody cache/ logs/

Сменить владельца необходимо по той причине, что демон прокси-сервера будет запущен от пользователя nobody и не сможет писать логи и использовать кэш.
Осталось создать структуру каталогов для кэширования. Перейдите в /usr/local/squid/sbin и выполните:

# ./squid -z

/* По умолчанию параметр cache_dir в squid.conf задан так:

cache_dir ufs /usr/local/squid/var/cache 100 16 256

Вы можете изменить путь к кэшу (например, если он расположен у вас на другом разделе или жестком диске), и тогда необходимо проверить права на указанный вами каталог. */

На данном этапе мы имеем рабочий Squid, но без поддержки ICAP, то есть обычный кэширующий прокси-сервер.
/* Более подробно о настройке Squid можно узнать на squid.opennet.ru. */

добавим поддержку ICAP

Для поддержки ICAP в 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 service_avi service_avi_req
icap_access class_antivirus allow all

На этом минимальное конфигурирование прокси-сервера закончено.
Запустим его:

# cd /usr/local/squid/sbin
# ./squid

Если все верно, то сообщений в консоли быть не должно.

Добавьте прокси-сервер в вашем браузере (если проксирование не прозрачное) и откройте страницуhttp://www.eicar.com/anti_virus_test_file.htm.Попытайтесь скачать файл eicar.com. Если вы увидите подобное сообщение "A VIRUS FOUND . " - значит все работает нормально.

Обратите внимание, что кэш прокси-сервера не должен содержать инфицированных объектов! Поэтому, перед началом использования Squid совместно с c-icap кэш лучше очистить.
Также учтите, что браузер имеет свой кэш.

обновление антивирусных баз ClamAV

Добавьте freshclam в crontab, как это сделать описывалось в предыдущей статье.

Реинициализация баз c-icap производится каждые srv_clamav.VirUpdateTime минут, этот параметр можно указать в c-icap.conf (по умолчанию - 15 минут).

файл c-icap.magic и типы проверяемых объектов

Данный файл может быть найден в том же каталоге, что и c-icap.conf, он представляет собой описание форматов различных групп-типов файлов (TEXT, DATA, EXECUTABLE, ARCHIVE, GRAPHICS, STREAM, DOCUMENT - определенные группы в c-icap.magic по умолчанию).

Антивирусная проверка строится по типам файлов, проходящих через проски-сервер, некоторые типы, например, можно исключить или добавить свои типы.

Формат записи строки, для определения файла по его magic-числу (последовательности):

offset:Magic:Type:Group:Desc

Offset - смещение, с которого начинается Magic-последовательность.
Type и Group - тип и группа, к которой следует относить файл с данной magic-последовательностью.
Desc - кратное описание, технической нагрузки не несет.

Обратите также внимание, что в c-icap.conf параметр srv_clamav.ScanFileTypes определяет группы и типы файлов (можно прописывать и группы, и типы), которые следует проверять.

Что определяет srv_clamav.VirScanFileTypes я окончательно не понял, но подозреваю, что принудительно проверяемые группы файлов (EXECUTABLE и ARCHIVE по умолчанию) либо группы файлов, которые пользователю скачивать запрещено. Если возникают проблемы с недоступнойстью некоторых файлов заданных типов, то предполагаю, проблема может скрываться в этой опции.

В моем конфиге c-icap вышеописанные параметры выглядят так:

srv_clamav.ScanFileTypes TEXT DATA EXECUTABLE ARCHIVE GRAPHICS STREAM DOCUMENT
srv_clamav.VirScanFileTypes EXECUTABLE ARCHIVE

возможные проблемы

1. Squid выдает сообщение "ICAP protocol error", страницы не открываются.
Проверьте верно ли вы указали ACL в c-icap.conf, в данном ACL должен быть разрешен доступ не для пользователей, а для прокси-сервера. Попробуйте завершить процессы Squid и c-icap, а затем запустить их в следующем порядке - сначала c-icap, а затем Squid.
Также такая ошибка может возникать, если демону с-icap не хватает прав на запись в карантинный каталог или в лог-файлы.
Если проблема так и не решилась, то попробуйте запустить Squid и c-icap со следующими параметрами:

# ./squid -d 10 -N -X
# ./c-icap -N -d 10 -D

Увидите подробную информацию, по которой можно разобраться что где не так.

2. Squid выдает сообщение "ICAP protocol error" только на некоторых страницах (на одних и тех же).
Все-таки проверьте, есть ли у c-icap права на запись в карантинный каталог (а еще лучше сделать владельцем всех карантинных каталогов пользователя, под которым запущен c-icap).
Попробуйте запустить c-icap и Squid в режиме отладки (как это сделать сказано выше).

Также неплохо посмотреть логи c-icap.
Попробуйте снова загрузить объект, на котором возникает ошибка. Возможно вы узнаете намного больше о проблеме и сможете ее решить.

Теперь и веб-серфинг защищен от вирусов и прочего вредоносного кода (в том числе и некоторых эксплойтов для MSIE), теперь можно путешествовать по Интернет намного безопаснее.

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

О некоторых принципах работы протокола ICAP на русском можно узнать из руководства DrWeb-ICAPd - одна из успешных коммерческих реализаций протокола ICAP. Также можно прочесть RFC 3507.

Комфортной и безопасной вам работы! Спасибо за внимание.

Читайте также:

Пожалуйста, не занимайтесь самолечением!
При симпотмах заболевания - обратитесь к врачу.

Copyright © Иммунитет и инфекции