HAVP - Проверка web-трафика антивирусом с помощью HTTP AntiVirus proxy

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:8980b8b5ca63a995f8ccb44fb6f0bed0' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtejustify\"><img hspace=\"5\" alt=\"HAVP\" vspace=\"5\" align=\"left\" width=\"140\" height=\"90\" src=\"http://muff.kiev.ua/files/HAVP.jpg\" />Настроив работу пользователей через Squid, задумался о том, что было бы совсем неплохо дополнительно проверять этот трафик антивирусным софтом. Информации на эту тему довольно много. Я же остановил свой выбор на связке Squid+Clamav+HAVP. Реализовывать будем такую схему: Client-&gt;Squid-&gt;HAVP-&gt;Internet. Неоспоримым плюсом такого метода есть то,&nbsp;что вирусы не попадают в кеш,&nbsp;и файлы, которые отдаются пользователям из кеша прокси, не сканируются по несколько раз.</p>\n<p class=\"rtejustify\">Отталкиваться будем от того, что <a href=\"http://muff.kiev.ua/content/squid-sams-gibkost-v-upravlenii-dostupom\">Squid</a> и <a href=\"http://muff.kiev.ua/content/clamav-antivirusnaya-zashchita-servera\">Clamav</a> уже установлены и настроены. Займемся установкой HAVP:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>cd /usr/ports/www/havp/ &amp;&amp; make install clean &amp;&amp; rehash</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Опции сборки оставил по дефолту.</p>\n<p class=\"rtejustify\">После установки приступаем к редактированию конфигурационного файла,&nbsp;благо о дефолтном конфиге позаботились разработчики. Не забудьте удалить&nbsp;(или закомментировать)&nbsp;эту строку- REMOVETHISLINE deleteme. Разработчики позаботились о том,&nbsp;чтобы вы все-таки посмотрели конфигурационный файл ;) Кстати, он довольно хорошо прокомментирован,&nbsp;так что с большинством опций разобраться можно без проблем.</p>\n<p class=\"rtejustify\">В результате получился вот такой конфигурационный файл:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>cat /usr/local/etc/havp/havp.config</strong></p>\n<p>SERVERNUMBER 25<br />\n MAXSERVERS 100<br />\n LOG_OKS false<br />\n PORT 3127<br />\n BIND_ADDRESS 127.0.0.1<br />\n TEMPLATEPATH /usr/local/etc/havp/ru<br />\n FAILSCANERROR falce<br />\n SCANNERTIMEOUT 5<br />\n STREAMUSERAGENT Player Winamp iTunes QuickTime Audio RMA/ MAD/ Foobar2000 XMMS<br />\n STREAMSCANSIZE 0<br />\n ENABLECLAMLIB true<br />\n CLAMDBDIR /var/db/clamav<br />\n ENABLECLAMD false<br />\n ENABLEFPROT false<br />\n ENABLEAVG false<br />\n ENABLEAVESERVER false<br />\n ENABLESOPHIE false<br />\n ENABLETROPHIE false<br />\n ENABLENOD32 false<br />\n ENABLEAVAST false<br />\n ENABLEARCAVIR false<br />\n ENABLEDRWEB false</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Советую потратить немного времени и разобраться более детально с конфигурационным файлом HAVP.</p>\n<p class=\"rtejustify\">Следующим шагом копируем файлы шаблонов:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>cp -R /usr/local/share/examples/havp/templates/ru /usr/local/etc/havp/</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Создаем файлы черных и белых списков HAVP:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>#<strong> touch /usr/local/etc/havp/whitelist /usr/local/etc/havp/blacklist</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Запускаем HAVP, предварительно добавив опции запуска в <strong>/etc/rc.conf</strong>:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># echo \'# HTTP AntiVirus proxy\' &gt;&gt; /etc/rc.conf</strong><br />\n <strong># echo \'havp_enable=&quot;YES&quot;\' &gt;&gt; /etc/rc.conf</strong><br />\n <strong># sh /usr/local/etc/rc.d/havp start</strong><br />\n Starting havp.<br />\n Starting HAVP Version: 0.91<br />\n Mandatory locking disabled! KEEPBACK settings not used!</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Вроде запустилось и все гуд... Следующим шагом будет &quot;заворачивание&quot;&nbsp;трафика из Squid в HAVP. Для этого в секцию &quot;TAG: external_acl_type&quot;&nbsp;добавляем такой блок:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>cache_peer 127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parent&nbsp;&nbsp;&nbsp; 3127&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; default no-query<br />\n never_direct allow all</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Первой строкой заворачиваются все потенциально кешируемые запросы,&nbsp;которых нет в кеше, на родительский прокси, которым выступает HAVP. Особенностью будет то,&nbsp;что в родительский кеш&nbsp;не будут попадать запросы описанные опцией сквида <strong>hierarchy_stoplist</strong> - запросы,&nbsp;которые содержат &quot;cgi-bin&quot; или &nbsp;&quot;?&quot;, тоесть запросы к веб-скриптам. Конечно,&nbsp;вероятность того, что скрипты будут возвращать вирус есть,&nbsp;но при определенных обстоятельствах это можно проигнорировать. Таким образом проверятся будут только файлы на которые можно попасть прямой ссылкой. Позитивным моментом есть тот факт, что когда родительский кеш &laquo;упал&raquo; - то для пользователей это никак не проявляется, сквид работает как обычно.</p>\n<p class=\"rtejustify\">После внесения изменений необходимо перезапустить Squid:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>sh /usr/local/etc/rc.d/squid restart</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Проверяем &quot;полет&quot;... Заходим на <a href=\"http://www.rexswain.com/eicar.html\">страницу теста</a> и пробуем скачать предложенные файлы. Если все настроили правильно, то при попытке перейти по предложенным ссылкам, получим следующее окошко сообщения:</p>\n<p class=\"rtecenter\"><a class=\"thickbox\" title=\"HAVP\" href=\"/files/imagepicker/1/havp.png\"><img alt=\"HAVP\" src=\"/files/imagepicker/1/thumbs/havp.png\" /></a></p>\n<p class=\"rtejustify\">При этом,&nbsp;в&nbsp;лог-файлах можно наблюдать следующие записи:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># tf /var/log/havp/access.log</strong><br />\n 31/08/2010 16:41:00 127.0.0.1 GET 200 <a href=\"http://www.rexswain.com/eicar.zip\">http://www.rexswain.com/eicar.zip</a> 254+186 VIRUS ClamAV: Eicar-Test-Signature<br />\n 31/08/2010 16:41:05 127.0.0.1 GET 200 <a href=\"http://www.rexswain.com/eicar.com\">http://www.rexswain.com/eicar.com</a> 262+70 VIRUS ClamAV: Eicar-Test-Signature<br />\n 31/08/2010 16:41:27 127.0.0.1 GET 200 <a href=\"http://www.eicar.org/download/eicar_com.zip\">http://www.eicar.org/download/eicar_com.zip</a> 287+184 VIRUS ClamAV: Eicar-Test-Signature<br />\n 31/08/2010 16:41:31 127.0.0.1 GET 200 <a href=\"http://www.eicar.org/download/eicarcom2.zip\">http://www.eicar.org/download/eicarcom2.zip</a> 288+308 VIRUS ClamAV: Eicar-Test-Signature<br />\n 31/08/2010 16:41:35 127.0.0.1 GET 200 <a href=\"http://www.eicar.org/download/eicar.com.txt\">http://www.eicar.org/download/eicar.com.txt</a> 328+88 VIRUS ClamAV: Eicar-Test-Signature<br />\n 31/08/2010 16:41:38 127.0.0.1 GET 200 <a href=\"http://www.eicar.org/download/eicar.com\">http://www.eicar.org/download/eicar.com</a> 298+68 VIRUS ClamAV: Eicar-Test-Signature</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;</p>\n', created = 1768109651, expire = 1768196051, headers = '', serialized = 0 WHERE cid = '2:8980b8b5ca63a995f8ccb44fb6f0bed0' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:9972d0bbceb355d5558210a02f50e731' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p><font face=\"Courier New\">В русских сообщениях о типе вируса&nbsp;мелкий недочет - сообщения выводятся в красной рамочке красными буквами. И их&nbsp;просто не видно. Рекомендую в файле&nbsp;/usr/local/etc/havp/ru/virus.html изменить&nbsp;значение&nbsp;<strong>color: #D80028 </strong>в строке:&nbsp;<em>td.havp_scheme.msg_area p.danger {border-width: 1.5mm; margin-right: 20%; margin-left: 20%; width: 60%; border-style: ridge; border-color: red; color: #D80028</em>} на <strong>color: black т.е.</strong>:&nbsp;<em>td.havp_scheme.msg_area p.danger {border-width: 1.5mm; margin-right: 20%; margin-left: 20%; width: 60%; border-style: ridge; border-color: red; color: black}</em></font></p>\n<p>&nbsp;<br />\n&nbsp;</p>\n', created = 1768109651, expire = 1768196051, headers = '', serialized = 0 WHERE cid = '2:9972d0bbceb355d5558210a02f50e731' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:1ec8134d4d51ad29c2193f3c2e7fb8c7' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Спасибо за подсказку.</p>\n', created = 1768109651, expire = 1768196051, headers = '', serialized = 0 WHERE cid = '2:1ec8134d4d51ad29c2193f3c2e7fb8c7' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>&nbsp;</p>\n<p>&nbsp;</p>\n', created = 1768109651, expire = 1768196051, headers = '', serialized = 0 WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1768109651, expire = 1768196051, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1768109651, expire = 1768196051, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другуPDF version

HAVPНастроив работу пользователей через Squid, задумался о том, что было бы совсем неплохо дополнительно проверять этот трафик антивирусным софтом. Информации на эту тему довольно много. Я же остановил свой выбор на связке Squid+Clamav+HAVP. Реализовывать будем такую схему: Client->Squid->HAVP->Internet. Неоспоримым плюсом такого метода есть то, что вирусы не попадают в кеш, и файлы, которые отдаются пользователям из кеша прокси, не сканируются по несколько раз.

Отталкиваться будем от того, что Squid и Clamav уже установлены и настроены. Займемся установкой HAVP:

# cd /usr/ports/www/havp/ && make install clean && rehash

Опции сборки оставил по дефолту.

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

В результате получился вот такой конфигурационный файл:

# cat /usr/local/etc/havp/havp.config

SERVERNUMBER 25
MAXSERVERS 100
LOG_OKS false
PORT 3127
BIND_ADDRESS 127.0.0.1
TEMPLATEPATH /usr/local/etc/havp/ru
FAILSCANERROR falce
SCANNERTIMEOUT 5
STREAMUSERAGENT Player Winamp iTunes QuickTime Audio RMA/ MAD/ Foobar2000 XMMS
STREAMSCANSIZE 0
ENABLECLAMLIB true
CLAMDBDIR /var/db/clamav
ENABLECLAMD false
ENABLEFPROT false
ENABLEAVG false
ENABLEAVESERVER false
ENABLESOPHIE false
ENABLETROPHIE false
ENABLENOD32 false
ENABLEAVAST false
ENABLEARCAVIR false
ENABLEDRWEB false

Советую потратить немного времени и разобраться более детально с конфигурационным файлом HAVP.

Следующим шагом копируем файлы шаблонов:

# cp -R /usr/local/share/examples/havp/templates/ru /usr/local/etc/havp/

Создаем файлы черных и белых списков HAVP:

# touch /usr/local/etc/havp/whitelist /usr/local/etc/havp/blacklist

Запускаем HAVP, предварительно добавив опции запуска в /etc/rc.conf:

# echo '# HTTP AntiVirus proxy' >> /etc/rc.conf
# echo 'havp_enable="YES"' >> /etc/rc.conf
# sh /usr/local/etc/rc.d/havp start
Starting havp.
Starting HAVP Version: 0.91
Mandatory locking disabled! KEEPBACK settings not used!

Вроде запустилось и все гуд... Следующим шагом будет "заворачивание" трафика из Squid в HAVP. Для этого в секцию "TAG: external_acl_type" добавляем такой блок:

cache_peer 127.0.0.1            parent    3127  0     default no-query
never_direct allow all

Первой строкой заворачиваются все потенциально кешируемые запросы, которых нет в кеше, на родительский прокси, которым выступает HAVP. Особенностью будет то, что в родительский кеш не будут попадать запросы описанные опцией сквида hierarchy_stoplist - запросы, которые содержат "cgi-bin" или  "?", тоесть запросы к веб-скриптам. Конечно, вероятность того, что скрипты будут возвращать вирус есть, но при определенных обстоятельствах это можно проигнорировать. Таким образом проверятся будут только файлы на которые можно попасть прямой ссылкой. Позитивным моментом есть тот факт, что когда родительский кеш «упал» - то для пользователей это никак не проявляется, сквид работает как обычно.

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

# sh /usr/local/etc/rc.d/squid restart

Проверяем "полет"... Заходим на страницу теста и пробуем скачать предложенные файлы. Если все настроили правильно, то при попытке перейти по предложенным ссылкам, получим следующее окошко сообщения:

HAVP

При этом, в лог-файлах можно наблюдать следующие записи:

# tf /var/log/havp/access.log
31/08/2010 16:41:00 127.0.0.1 GET 200 http://www.rexswain.com/eicar.zip 254+186 VIRUS ClamAV: Eicar-Test-Signature
31/08/2010 16:41:05 127.0.0.1 GET 200 http://www.rexswain.com/eicar.com 262+70 VIRUS ClamAV: Eicar-Test-Signature
31/08/2010 16:41:27 127.0.0.1 GET 200 http://www.eicar.org/download/eicar_com.zip 287+184 VIRUS ClamAV: Eicar-Test-Signature
31/08/2010 16:41:31 127.0.0.1 GET 200 http://www.eicar.org/download/eicarcom2.zip 288+308 VIRUS ClamAV: Eicar-Test-Signature
31/08/2010 16:41:35 127.0.0.1 GET 200 http://www.eicar.org/download/eicar.com.txt 328+88 VIRUS ClamAV: Eicar-Test-Signature
31/08/2010 16:41:38 127.0.0.1 GET 200 http://www.eicar.org/download/eicar.com 298+68 VIRUS ClamAV: Eicar-Test-Signature

 

Ваша оценка: Нет Средняя: 5 (2 голоса)

В русских сообщениях о типе

В русских сообщениях о типе вируса мелкий недочет - сообщения выводятся в красной рамочке красными буквами. И их просто не видно. Рекомендую в файле /usr/local/etc/havp/ru/virus.html изменить значение color: #D80028 в строке: td.havp_scheme.msg_area p.danger {border-width: 1.5mm; margin-right: 20%; margin-left: 20%; width: 60%; border-style: ridge; border-color: red; color: #D80028} на color: black т.е.td.havp_scheme.msg_area p.danger {border-width: 1.5mm; margin-right: 20%; margin-left: 20%; width: 60%; border-style: ridge; border-color: red; color: black}

 
 

Спасибо за подсказку.

Спасибо за подсказку.

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

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

Вставай, Україно!

Литература

Разъяренный Админ не нервно моргает, а материт Вас, используя двоичный код.