Донецкий техникум промышленной автоматики

OpenNET: стаття - Перевірка web-трафіку Squid на віруси за допомогою ClamAV і c-icap (web squid proxy filter virus clamav icap)

Перевірка web-трафіку Squid на віруси за допомогою ClamAV і c-icap (web squid proxy filter virus clamav icap)
Ключові слова: web

, squid , proxy , filter , virus , clamav , icap , ( знайти схожі документи )
From: umask aka Ілля <umask at yandex dot ru> Date: Thu, 29 Sep 2005 00:55:41 +0600 (YEKST) Subject: Перевірка web-трафіку Squid на віруси за допомогою ClamAV і c-icap Передісторія. В попередній статті я описав настройку спільної роботи ClamAV і Samba для прозорої перевірки завантаження. Але Samba - не єдине джерело потенційної вірусної загрози, звичайний web-серфінг є набагато більшу загрозу, оскільки є зовнішнім джерелом небезпеки. Samba ж - внутрішнє джерело. У антивірусного захисту слід перш за все контролювати (перевіряти) всю інформацію, що надходить ззовні інформацію, один з джерел - інтернет. Актуальність захисту Samba-ресурсів (ті, хто знайомий з Win32.Parite.2 мене добре зрозуміють) так само досить висока. У цій статті я звернув увагу на перевірку web-трафіку, що проходить через Squid (www.squid-cache.org) на віруси, використовуючи ClamAV ( http://www.clamav.net ) І c-icap ( http://c-icap.sourceforge.net ). З протоколом ICAP можна більш детально ознайомитися на сайті http://www.i-cap.org. Це найбільш вірний спосіб антивірусної перевірки web-трафіку. Редиректори в Squid так само можна використовувати, але при великих навантаженнях редиректори сильно обмежені і не дозволяють розподілити навантаження. Так само редиректори вкрай обмежені і по можливості зворотного взаємодії з користувачем. Я брав участь в бета-тестуванні icap-демона від DrWeb, залишився ним задоволений (незважаючи ні ще залишились деякі недоліки вирішені на цей момент), але фінансова сторона питання мене сильно обмежує, тому, в черговий раз, мій вибір припав на ClamAV. Отримання необхідних файлів. Для подальших дій знадобляться: - Тексти програм Squid Proxy Server з підтримкою ICAP. Одну з можливих варіацій можна отримати зі сторінки c-icap - http://sourceforge.net/projects/c-icap , Останньої на цей момент з цього джерела виявилася версія 2.5.STABLE11-20050927 (я використовував версію саме від розробників c-icap!). Так само можна отримати Squid з підтримкою ICAP від ​​DrWeb - http://download.drweb.com/unix/Linux + (Generic) /. Перше джерело відмінний від другого тим, що в перший не виправлена ​​проблема з обривом закачування, при обриві закачування клієнтом (тобто проксі-сервер з будь-якого викачує файл до кінця, що веде до витрати трафіку). - c-icap - демон ICAP - http://sourceforge.net/projects/c-icap , Остання версія на даний момент c-icap-220505. - остання версія ClamAV, яку нам надають розробники цього GNU / GPL антивіруса - http://www.clamav.net. Установка і настройка ClamAV. Про процес установки і настройки ClamAV можна більш детально дізнатися з попередньої статті - "Використання ClamAV для перевірки ресурсів Samba 3.0.x через VFS в Linux (на прикладі Slackware Linux 10.1)", її можна отримати тут - https://www.opennet.ru/base/net/samba_clamav.txt.html або тут - http://www.nixp.ru/articles/clamav_samba_vfs_linux Для роботи не знадобитися працює демон 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 (chown nobody / var / infected). Здійснимо пробний запуск 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 Перейдемо в каталог з вихідними кодами Squid'а і запустимо 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): acl our_networks src 172.16.194.0/24 http_access allow our_networks Перейдіть в / 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 можна дізнатися на http://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_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 і додайте такий icap-клас: icap_class class_antivirus service_avi service_avi_req Знайдіть по слову icap_access і додайте наступні права доступу: icap_access class_antivirus allow all Сумарно для підтримки 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.magic. Зверніть також увагу, що в 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 Можливі проблеми. > Squid видає повідомлення "ICAP protocol error", сторінки не відкриваються. Перевірте чи правильно ви вказали ACL в c-icap.conf, в даному ACL повинен бути дозволений доступ не для користувачів, а для проксі-сервера. Спробуйте завершити процеси Squid і c-icap, а потім запустити їх в наступному порядку - спочатку c-icap, а потім Squid. Так само така помилка може виникати, якщо демона з-icap не вистачає прав на запис в карантинний каталог або в лог-файли. Якщо проблема так і не зважилася, то спробуйте запустити Squid з параметрами -d 10 -N -X: # ./squid -d 10 -N -X а c-icap c параметрами -N -d 10 -D: # ./c -icap -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-ICAPd - одна з успішних комерційних реалізацій протоколу ICAP. Так само можна прочитати RFC 3507. Комфортною і безпечної роботи! Дякуємо за увагу. umask a / k / a Ілля (с), MATI-RSTU, app-math dept. mail to: umask at yandex dot ru. Wed Sep 28 17:38:31 MSD 2005.

  • 1.1 , Ещдиено (?), 00:26, 19/06/2006 [ відповісти ] [ +++ ] [ · · · ]
+

/ - <Що визначає srv_clamav.VirScanFileTypes я остаточно не зрозумів, але
підозрюю, що примусово перевіряються групи файлів (EXECUTABLE і
ARCHIVE за замовчуванням).>

Наскільки я зрозумів, ці файли примусово йдуть в карантин. По крайнього заходу поки я не закомментіровл цей рядок жоден архів не можна було скачати з інету.


  • 2.10 , evgeniy1 (Ok), 17:01, 25/10/2006 [ ^ ] [ ^^ ] [ ^^^ ] [ відповісти ]
+

/ - Зв'язка Сквід + HAVP працює відмінно.
Стабільно, мало жере ресурсів.
При цьому - набагато більше можливостей.
Правда, для повного щастя (+ ftp + ..) потрібні 2 СКВИДов + HAVP.

  • 3.15 , alexcom (Ok), 21:03, 09/11/2006 [ ^ ] [ ^^ ] [ ^^^ ] [ відповісти ]
+

/ - > Зв'язка Сквід + HAVP працює відмінно.
> Стабільно, мало жере ресурсів.
> При цьому - набагато більше можливостей.
> Правда, для повного щастя (+ ftp + ..) потрібні 2 СКВИДов + HAVP.


А з цього місця детальніше :)
Скільки користувачів? Великий трафік? Який сервер?
Вірусу як відловлює?


  • 1.11 , riban (?), 16:02 30/10/2006 [ відповісти ] [ +++ ] [ · · · ]
+

/ - У мене на Intel (R) Pentium (R) D CPU 3.20GHz і 2 Гб оперативної пам'яті C-ICAP віджирали 98% проца :( Зараз користувачів всього до 10, навантаження не пікова.

  • 2.12 , slava (??), 14:11, 31/10/2006 [ ^ ] [ ^^ ] [ ^^^ ] [ відповісти ]
+

/ - У мене така ж біда з завантаженням проца. І що характерно, тільки ОДИН процес c-icap віджирали 99.9% у проца .....
майже весь інет перерив ... нету відповіді.

  • 3.13 , riban (?), 16:53, 01/11/2006 [ ^ ] [ ^^ ] [ ^^^ ] [ відповісти ]
+

/ - а в тебе яка версія сквіду / icap?
У мене squid-2.5.STABLE10-drweb-patch, c_icap-030606rc1

  • 4.14 , slava (??), 14:48 03/11/2006 [ ^ ] [ ^^ ] [ ^^^ ] [ відповісти ]
+

/ - > А в тебе яка версія сквіду / icap?
> У мене squid-2.5.STABLE10-drweb-patch, c_icap-030606rc1

squid-2.6.STABLE4 + icap-2_6.patch, c_icap-030606rc1, антивирусник clamav-0.88.5.

  • 2.16 , Фігаро (?), 21:05, 10/11/2006 [ ^ ] [ ^^ ] [ ^^^ ] [ відповісти ]
+

/ - Вони повинні бути налаштовані в syslog, а не в файл - з'ясовано дослідним шляхом

  • 3.17 , alexcom (Ok), 9:42, 11/11/2006 [ ^ ] [ ^^ ] [ ^^^ ] [ відповісти ]
+

/ - > Вони повинні бути налаштовані в syslog, а не в файл - з'ясовано
> Дослідним шляхом
Якщо в syslog- тоді в messages купа матюків, а не в файлі балки ..
Я пробував і так і так-результат один

  • 2.21 , Egoroff (?), 8:37, 31/07/2007 [ ^ ] [ ^^ ] [ ^^^ ] [ відповісти ]
+

/ - squid-icap-2.5.STABLE12-20051102 - в цілому працює стабільно, але в ньому не працює delay-pools. Взагалі ніяк, тобто він з --enable-delay-pools збирається, але потім після прописування їх в конф ніяк не реагує, швидкість не ріже.

  • 3.22 , feniks2202 (?), 15:28 05/09/2007 [ ^ ] [ ^^ ] [ ^^^ ] [ відповісти ]
+

/ - /   -   Проблема така;   squid нерозуміючими конфиг icap'a Проблема така;
squid нерозуміючими конфиг icap'a!
Зупиняється squid: 2007/09/05 15: 10: 34 | parseConfigFile: line 35 unrecognized: 'icap_enable off'
2007/09/05 15: 10: 34 | parseConfigFile: line 36 unrecognized: 'icap_preview_enable off'
2007/09/05 15: 10: 34 | parseConfigFile: line 37 unrecognized: 'icap_preview_size -1'
2007/09/05 15: 10: 34 | parseConfigFile: line 38 unrecognized: 'icap_send_client_ip off'
2007/09/05 15: 10: 34 | parseConfigFile: line 39 unrecognized: 'icap_service service_1 reqmod_precache 0 icap: //192.168.0.1: 1344 / reqmod'
2007/09/05 15: 10: 34 | parseConfigFile: line 40 unrecognized: 'icap_service service_1 reqmod_precache 0 icap: //192.168.0.1: 1344 / reqmod no-keep-alive'
2007/09/05 15: 10: 34 | parseConfigFile: line 41 unrecognized: 'icap_service service_2 respmod_precache 0 icap: //192.168.0.1: тисяча триста сорок чотири / respmod'
2007/09/05 15: 10: 34 | parseConfigFile: line 42 unrecognized: 'icap_class class_1 service_1 service_2'
2007/09/05 15: 10: 34 | parseConfigFile: line 43 unrecognized: 'icap class class_2 service_1 service_3'
2007/09/05 15: 10: 34 | parseConfigFile: line 44 unrecognized: 'icap_access classname allow'
2007/09/05 15: 10: 34 | parseConfigFile: line 45 unrecognized: 'icap_access class_1 allow all'

  • 4.23 , KholAn (Ok), 11:05 08/09/2007 [ ^ ] [ ^^ ] [ ^^^ ] [ відповісти ]
+

/ - Думка номер 1: а чому "icap_enable off"? Потрібно "on".
Думка номер 2: є підозра, що squid зібраний без підтримки icap. Якщо так, то потрібно squid пересобрать з підтримкою icap.

  • 1.26 , AndySouth (?), 15:13, 18/05/2010 [ відповісти ] [ +++ ] [ · · · ]
+

/ - /   -   Спробував, все працює за винятком того що https трафік не перевіряється Спробував, все працює за винятком того що https трафік не перевіряється.
підкажіть куди подивитися.

заздалегідь вдячний.

  • 2.27 , AndySouth (?), 15:18 18/05/2010 [ ^ ] [ ^^ ] [ ^^^ ] [ відповісти ]
+

/ - /   -   > Спробував, все працює за винятком того що https трафік не перевіряється > Спробував, все працює за винятком того що https трафік не перевіряється.
> Підкажіть куди подивитися.
>
> Заздалегідь вдячний.

Гм, так що виходить що https і не повинен скануватися? ...

  • 3.28 , Nick (??), 13:49, 26/05/2010 [ ^ ] [ ^^ ] [ ^^^ ] [ відповісти ]
+

/ - Пробував c_icap і havp. У цих випадках https прозоро проксіруется тільки без перевірки. Перевірка SSL / https заявляється в MS TMG 2010 Туда і можна дивитися. У мене, власне те саме запитання ... Господа, поділіться досвідом, чи можна влаштувати опенсорсний https-antivirus proxy?


Додати коментар

Спонсори:

Хостинг:



Pl?
Великий трафік?
Який сервер?
Вірусу як відловлює?
Гм, так що виходить що https і не повинен скануватися?
Господа, поділіться досвідом, чи можна влаштувати опенсорсний https-antivirus proxy?