Проверка трафика на вирусы 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-ти этажки. Да и антенна серьезная планируется.

Анонс

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

Статья была опубликована 1 февраля 2010 года в 00:00, а последний раз правилась 1 февраля 2010 года в 10:46.

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

Использование Squid с помощью ClamAV и c-icap для проверки web-трафика на вирусы

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

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

Для дальнейших действий понадобится:

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

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

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

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

Распакуем архив c_icap-220505.tar.gz в /usr/src (или туда, где у вас лежат исходные коды). Скрипт configure в каталоге с исходниками c-icap следует запускать со следующими параметрами:

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

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

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

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

Теперь необходимо исправить некоторые настройки в c-icap.conf. В случае нашего --prefix=/usr/local/c_icap не трудно догадаться, что конфиги лежат в /usr/local/c_icap/etc.

Рекомендую обратить внимание на следующие параметры:

  • User лучше поставить nobody, поскольку wwwrun, указанный по умолчанию, скорее всего отсутствует в системе.
  • TmpDir /tmp — ваш каталог временных файлов.
  • Далее необходимо настроить ACL — Access Control Lists — список IP-адресов, которые могут использовать данный ICAP-демон:

Так можно определить, откуда разрешен доступ к нашему сервису icap, а откуда — нет. Заметьте, что в данных ACL определяется не список непосредственных клиентов прокси-сервера, а именно список клиентов демона ICAP, т.е. список прокси-серверов (их IP-адреса).

Я составил ACL для случая работы демона ICAP и Squid на одном хосте.

Можно попробовать и так:

— URL скрипта на локальном web-сервере, ссылка на который будет сообщена пользователю в уведомлении о попытке доступа к инфицированному объекту.

Необходимо некоторое пояснение: опция srv_clamav.VirSaveDir может быть задана несколько раз — таким образом, что инфицированные файлы будут сохраняться в множестве мест. Если задать одним из карантинных каталогов корень web-сервера, то можно дать пользователям возможность осознанно скачать инфицированный файл. Остается только воспользоваться файлом contrib/get_file.pl в исходных кодах c-icap.

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

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

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

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

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

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

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

Распакуем в /usr/src полученный ранее Squid:

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

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

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

Необходимо найти пару строк:

Раскомментировать их и установить собственное значение, вместо 192.168.1.0/24 192.168.2.0/24 (в моем случае пользователи прокси-серверs находились в сети 172.16.194.0/24):

Перейдите в /usr/local/squid/var, создайте каталог cache. Теперь там же выполните команду:

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

Осталось создать структуру каталогов для кэширования. Перейдите в /usr/local/squid/sbin и выполните:

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

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

На данном этапе мы имеем рабочий Squid, но без поддержки ICAP, т.е. обычной кэширующий прокси-сервер.

Более подробно о настройке Squid можно узнать на squid.opennet.ru.

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

Добавление поддержки ICAP в squid.conf

Найдите по слову icap_enable и выставите значение icap_enable on. Найдите по слову icap_preview_enable и выставите значение icap_preview_enable on. Найдите по слову icap_preview_size и выставите значение icap_preview_size 128. Найдите по слову icap_send_client_ip и выставите значение icap_send_client_ip on. Найдите по слову icap_service и добавьте пару таких icap-сервисов:

Найдите по слову icap_class и добавьте такой icap-класс:

Найдите по слову icap_access и добавьте следующие права доступа:


Суммарно для поддержки ICAP в squid.conf должны быть добавлены следующие строки:

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

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

Обратите внимание, что кэш прокси-сервера не должен содержать инфицированных объектов! Поэтому перед началом использования 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 — тип и группа, к которой следует относить файл с данной magic-последовательностью. Desc — краткое описание, технической нагрузки не несет.

Для примера загляните в c-icap.magic.

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

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

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

Попробуйте завершить процессы Squid и c-icap, а затем запустить их в следующем порядке: сначала c-icap, а затем Squid.

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

Если проблема так и не решилась, то попробуйте запустить Squid с параметрами -d 10 -N -X:

И c-icap c параметрами -N -d 10 -D: Увидите подробную информацию, по которой можно разобраться, что и где не так. Squid выдает сообщение ICAP protocol error только на некоторых страницах (на одних и тех же).

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

Попробуйте запустить c-icap и Squid в режиме отладки (как это сделать, сказано выше).

Также неплохо посмотреть логи c-icap.

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

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

И помните, что разработчики пишут на своем сайте:

  • >The Antivirus ClamAV service
  • >This service is under development.

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

Системные администраторы Linux


Большая часть операторов связи сейчас уже предоставляют маршрутизируемый доступ в Интернет, где фильтрация и антивирусная защита входящего траффика несколько более проблематична. В случаях, когда требуется ограничить пользователям доступ к определенным сайтам по категориям или по URL, а также требуется реализация проверки входящего веб-трафика, то в этом варианте использование прокси сервера является самым простым решением.

Squid на сегодняшний день является наиболее функциональным прокси сервером, который поддерживает большое количество возможностей. Для реализации антивирусной защиты предлагается использовать ClamAV – открытая реализация средств антивирусной защиты. Фильтрация контента по категориям будет реализована средствами Dansguardian.

Общая диаграмма решения схематично отражена ниже:


У нас есть Linux сервер под управлением CentOS 7. Сервер имеет маршрутизируемый доступ в Интернет.

  • Обновляем пакеты в системе

  • Подключаем EPEL репозиторий, который нам понадобится для дополнительных пакетов

  • Устанавливаем пакеты для squid

    Настраиваем конфигурационный файл /etc/squid/squid.conf (никакие изменения не требуются на данном этапе). Детальная настройка squid (ACL, авторизация и тп) находится за пределами данной статьи. Здесь мы используем конфигурационный файл, предоставляемый

  • Устанавливаем необходимые пакеты

    Правим конфигурационный файл.

показана разница с оригинальным файлом

  • Создаем необходимые файлы для работы

  • Настраиваем обновление антивирусных баз

  • Активируем автоматические обновление баз

Я не смог найти пакетов c-icap, squidclamav и danguardian в стандартных репозиториях для CentOS 7. По этой причине пришлось собрать из src.rpm пакетов. Сборка производилась на другой рабочей станции. Разумеется, сборку под root лучше не производить.

  • Собираем c-icap

  • Далее необходимо выложить пакеты из папки /root/rpmbuild/RPMS/x86_64 в общедоступное место

  • Устанавливаем пакеты для работы c-icap (пакеты были собраны ранее)

  • Редактируем конфигурационный файл (нужно добавить “Service squidclamav squidclamav.so” и отредактировать параметры производительности)

  • Редактируем систему для правильной установки права на временные файлы

  • Создаем сервис для systemd

  • Устанавливаем squidclamav через yum, так как он потянет зависимости

  • Редактируем конфигурационный файл. Здесь важно, чтобы squidguard был закомментирован

  • ВНИМАНИЕ! При активации опции squidguard сервис squidclamav не сможет инициализироваться
  • Запускаем сервис c-icap

  • Добавляем в конец конфигурационного файла squid

  • Мне не удалось поднять этот сервис, так как при указанном в squidclamav c-icap сообщал об ошибке инициализации squidclamav. Возможно, в других ОС или с другими опциями компиляции это будет работать
  • Устанавливаем squidGuard

  • Правим конфигурационный файл /etc/squid/squidGuard.conf

  • Создаем необходимые файлы для работы

  • Проверяем, что данные доступны

  • Устанавливаем dansguardian (был собран ранее)

  • Правим конфигурационный файл

  • Добавляем в автозагрузку и запускаем

    Если требуется, то можем настроить категории и

  • Запускаем и добавляем в автозагрузку

  • Копируем скрипты от squidclamav в CGI директорию

  • Прописываем параметры прокси сервера у себя в веб-брауззере
    — Адрес: маршрутизируемый адрес вашего сервера
    — Порт: 8080 (порт Dansguardian)
  • Пробуем подключаться к веб-сайтам (должно работать)
  • Пробуем скачать тестовый вирус eicar. Здесь вы должны увидеть следующее сообщение:



  • Пробуем открыть запрещенные ссылки (http://badboys.com). Должны увидеть следующее сообщение от Dansguardian:


Данная статья показывает, что настройка связки прокси сервера squid с антивирусным ПО ClamAV является несложным занятием, которое под силу даже начинающему администратору Linux/Unix.

Предварительно требуется знакомство с основной статьёй о Squid.

Для блокировки вирусов при работе с прокси-сервером squid можно использовать следующие схемы:

  • между пользователем и основным прокси-сервером Squid ставится специализированный прокси-сервер, который пропускает результат через антивирусный сканер - HAVP
  • в качестве редиректора используется программа, которая самостоятельно закачивает и проверяет объект - viralator и squidclam
  • использование протокола ICAP для обмена с отдельным антивирусным сервером (передача заголовка запроса перед получением объекта и самого объекта после закачки) сервер ICAP может проверить URI по чёрным спискам, а содержимое антивирусным сканером - c-icap

Во всех случаях используется антивирус clamav, который необходимо установить предварительно. Коммерческие антивирусы имеют в своём составе собственные ICAP серверы.

Использование промежуточного прокси-сервера HAVP. К сожалению, браузеры пользователей должны быть настроены на обращение к этому промежуточному прокси, что означает повторную борьбу с аутентификацией/авторизацией.

viralator использует сложную схему: браузер обращается к squid, squid использует squidGuard, в настройках squidGuard делается перенаправление на локальный сервер apache, у которого в качестве cgi-скрипта использует viralator, который в свою очередь пропускает запрос через clamscan (описание настройки). Помимо некоторой громозкости (мягко говоря) данная архитектура предполагает самостоятельную загрузку объектов из Интернет в дополнение к загрузке их squid-ом.

Squidclam Squid использует squidclam в качестве редиректора. Архитектура проще, чем в предыдущем случае, но опять-таки этот специализированный редиректор самостоятельно загружает объекты из Интернет в дополнение к загрузке их squid-ом (с помощью libcurl).

c-icap представляет собой сервер протокола icap, squid выступает клиентом данного сервера. Протокол icap позволяет направить запросы браузера к прокси на сервер icap для проверки прав доступа, а ответы от HTTP-сервера для проверки на вирусы. Пока сервер обеспечивает сервис проверки на вирусы с помощью clamav (libclamav), сервис проверки URL (не описан) и тестовый сервис echo. Сервер c-icap поддерживает модули (logger, service_handler, access_controller, auth_method, authenticator) и сервисы (echo_module, url_check_module, antivirus_module). Обрабатывается только HTTP трафик.

Установка c_icap (версия от 18 апреля 2007) на CentOS4.5:

  • предварительно необходимо установить clamav (и пакет clamav-devel)
  • убедиться, что /usr/local/lib находится в /etc/ld.so.conf
  • создать специльную группу icap и пользователя icap в ней (/var/run/c-icap)
  • загрузить и распаковать архив
  • ./configure --enable-large-files
  • make
  • make install (какой-то глюк, проходит со второго раза)
    • /usr/local/lib/libicapapi.so.0.0.1 (и ссылки libicapapi.so.0, libicapapi.so)
    • /usr/local/lib/libicapapi.la
    • /usr/local/bin/ (c-icap, icap-client, icap-stretch)
    • /usr/local/etc/c-icap.conf
    • /usr/local/etc/c-icap.magic
    • /usr/local/include/c_icap/
    • /usr/local/lib/c_icap/ (sys_logger.*, srv_echo.*, srv_url_check.*, srv_clamav.*)
  • поменять права для /var/run/c-icap
  • настроить c-icap (/usr/local/c-icap/etc/c-icap.conf)
  • тестовый запуск:
    /usr/local/bin/c-icap -N -D -d 3
  • тестирование режима echo - запустить icap-client на этом же компьютере
  • тестирование файла без вирусов
    icap-client -f /bin/ls -s "srv_clamav?allow204=on&force=on&sizelimit=off&mode=simple"
    должен быть получен ответ: "No modification needed (Allow 204 responce)"
  • тестирование файла с вирусом
    icap-client -f /tmp/Virus -s "srv_clamav?allow204=on&force=on&sizelimit=off&mode=simple"
    должен быть получен ответ "VIRUS FOUND"
  • !создание /etc/init.d/c-icap и обеспечение автоматического запуска (chkconfig, service)

Настройка типов файлов и групп типов по их содержимому задаётся в c-icap.magic (идея от file, но простенько). Группы: EXECUTABLE, ARCHIVE, GRAPHICS, STREAM, DOCUMENT, TEXT, DATA.

Ключи запуска:

  • -f имя-конфигурационного-файла
  • -N (не уходить в фоновый режим)
  • -D (печатать отладочную информацию на стандартый вывод)
  • -d уровень-отладочной-печати (10 - максимум)

Управление сервером производится через сокет, команды:

  • stop
  • reconfigure (повторное чтение файла настройки)
  • srv_clamav:dbreload (перезагрузка БД с сигнатурами вирусов)

Ключи тестового клиента icap-client:

  • -i имя-сервера
  • -s имя-сервиса-и-параметры
  • -f имя-тестового-файла
  • -v
  • -d уровень-отладочной-печати

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

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