Dansguardian+clamav фильтруем http-трафик

Материал из rrv-wiki
Перейти к навигации Перейти к поиску

Введение

Появилась задача проверять Web-трафик на вирусы, плюс не плохо бы было фильтровать контент (порно, кряки и т.д.). В целом squid - справляется с фильтрацией контента и можно прикрутить антивирус через c-icap, но чтение форумов внушило идею, что c-icap - не лучшее решение, а так же что люди используют DansGuardian и очень довольны. Попытка удалась, правда не с первого раза и не в полном объеме. Эту попытку я здесь и описал.


Основные сайты:
DansGuardian - прочитайте и ознакомьтесь с лицензией.
DansGuardian – фильтрующий прокси, который работает под Squid. Программа фильтрации использует четыре метода: Сначала, она проверяет фактическое содержание страниц против отклоненного списка фраз с перестраиваемой конфигурацией. Этот список содержит профанации и фразы, часто связываемые с порнографией и другим нежелательным содержанием.
Во вторых, DansGuardian осуществляет фильтрацию изображений. Затем проверяет MIME тип требуемого файла и проверяет его против отклоненного списка MIME типов. Потом проверяет расширение требуемого файла против отклоненного списка расширений файлов. Программа не осуществляет проверку URL против списка сайтов подобно squidGuard, а только проверяет фактическое содержание страниц. Описание взято здесь

ClamAV - Антивирусная программа, распространяемая по лицензии GPL v2.

Установка

Обновляем порты.

Устанавливаем Clamav из портов

Об этом уже слишком много писали.

# cd /usr/ports/security/clamav && make install && make clean

Устанавливаем Squid из портов

Об этом тоже.

# cd /usr/ports/www/squid && make install && make clean

Устанавливаем DansGuardian Anti-Virus plugin

Изначально DansGuardian не умеет работать с ClamAV, поэтому скачаем пропатчинную версию DansGuardian, проект называется DansGuardian Anti-Virus plugin на настоящий момент dansguardian-2.8.0.6-antivirus-6.4.4.2.tar.bz2, скачиваем и распаковываем (будем ставить из исходников, хотя можно и поизвращатся с пропачиванием портов, но не в этот раз).

Переходим в созданную папку исходников читаем ./configure --help

т.к. у нас FreeBSD то конфигурируем так:

MAKE=/usr/bin/make ./configure --cgidir=/usr/local/www/cgi-bin/ \
--sysconfdir=/usr/local/etc/dansguardian/ \
--sysvdir=/usr/local/etc/rc.d/ \
--bindir=/usr/local/sbin/ \
--mandir=/usr/local/man/

читаем ошибки:

*** WARNING: libesmtp-config command not found!
*** WARNING: fallback to default libesmtp build-flags

ага, требуется libesmtp

# cd /usr/ports/
# make search name="libesmtp"
 
Port:   libesmtp-1.0.4_1,1
Path:   /usr/ports/mail/libesmtp
Info:   A library for posting electronic mail
Maint:  mnag@FreeBSD.org
B-deps: gettext-0.14.5_2 gmake-3.81_1 libiconv-1.9.2_2 libtool-1.5.22_3
R-deps:
WWW:    http://www.stafford.uklinux.net/libesmtp/

ставим:

# cd /usr/ports/mail/libesmtp && make install && make clean

Опять конфигурируем:

MAKE=/usr/bin/make ./configure --cgidir=/usr/local/www/cgi-bin/ \
--sysconfdir=/usr/local/etc/dansguardian/ \
--sysvdir=/usr/local/etc/rc.d/ \
--bindir=/usr/local/sbin/ \
--mandir=/usr/local/man/

Если ошибок нет, то продолжаем. Правим Makefile, заменяя строки:

#OPTIMISE = -O2
OPTIMISE = ${CXXFLAGS}

на

OPTIMISE = -O2
#OPTIMISE = ${CXXFLAGS}

Затем собираем:

$ make

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

# make install

Настройка

Грубая настройка

Для начала сообщу, что через сокет-файл связать Dansguardian и Clamav не удалось, если у кого получилось, то поделитесь опытом.

И так начнем:

ClamAV

Ну тонкую настройку clamav читайте в инете, а нас интересуют следующие строки файла /usr/local/etc/clamd.conf:

TCPSocket 3310

TCPAddr 127.0.0.1

тем самым мы заставим clamd слушать локальный порт 3310.

теперь в файле /usr/local/etc/dansguardian/dansguardian.conf вносим изменения:

#clamdsocket = '/tmp/clamd'
clamdsocket = 127.0.0.1:3310

и комментируем лишние антивирусы.

proxy

Не обязательно squid b и не обязательно локальный :) В файле /usr/local/etc/dansguardian/dansguardian.conf правим при необходимости:

# the port that DansGuardian listens to. (порт DansGuardian)
filterport = 8080

# the ip of the proxy (default is the loopback - i.e. this server) (ip proxy-сервера, например squid-а)
proxyip = 127.0.0.1
#proxyip = 192.168.0.1

# the port DansGuardian connects to proxy on (порт proxy-сервера, например squid-а)
proxyport = 3128

Тонкая настройка

Проверка

Проверить можно здесь.