Dansguardian+clamav фильтруем http-трафик
Содержание
Введение
Появилась задача проверять 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
Тонкая настройка
Проверка
Проверить можно здесь.