В качестве фильтра веб-контента сегодня традиционно используют DansGuardian. Это отличная программа практически не требующая настройки. DansGuardian может блокировать числящиеся в черном списке — IP-адреса, URL или домены (как и Squid). Но главная причина, по которой он заслужил популярность — фильтр содержимого (контента). Во время загрузки DansGuardian сканирует входящую веб-страницу и в случае срабатывания определенных критерий блокирует. Доступно две версии продукта выпускающиеся под разными лицензиями GPL и проприетарной. Одной из особенностей DansGuardian он не может самостоятельно загружать веб-страницы и требует наличия другого веб-сервера. Что требует дополнительных усилий для настройки. В этом смысле интересен форк проекта Mindwebfilter — MinD (рекурсив MinD is not Dansguardian).
Сайт проекта которого разместился на Google Code
http://code.google.com/p/mindwebfilter/
- Toy — простой в использовании инструмент фильтрации, предназначен для обычных пользователей, небольших организаций и т.п.
- Blaster — высокопроизводительные системы — провайдеров, крупные организации (пока недоступен).
Главная особенность Toy наличие простого прокси, то есть теперь не требуется внешний прокси-сервер, а значит настройка упрощена. Код оптимизирован, поэтому система требует меньших ресурсов. Так сообщается, что для выхода в Интернет 200-300 пользователей достаточно системы с 500 МГц CPU и 250 Мб оперативной памяти. Кроме того изменен алгоритм работы фильтра, добавлены новые домены и категории, включена возможность безопасносго поиска. Прокси сервер может работать в transparent режиме. Изменен формат конфигурационного файла. Возможна проверка трафика при помощи антивируса ClamAV.
На сайте программы доступны архивы с исходными текстами и сборки для Debian (i386), в репозитарии нужных пакетов также нет. Поэтому в большинтсве случаев необходимо собирать самоятельно.
Далее рассмотрим процесс на примере Ubuntu 11.04.
Ставим пакеты для сборки
$ sudo apt-get install automake pkg-config build-essential libz-dev libpcre3-dev libclamav-dev libxml2-dev libtool
Скачиваем архив с исходными текстами, конфигурируем
$ wget -c http://mindwebfilter.googlecode.com/files/mind-toy_1.1+svn98.tar.xz
$ tar -Jxf mind-toy_1.1+svn98.tar.xz
$ cd mind-toy-1.1+svn98/
$ ~/mind-toy-1.1+svn98 $ ./bootstrap && ./configure --prefix=/usr/local/ --enable-clamd=yes --enable-ntlm=yes \
--with-proxyuser=nobody --with-proxygroup=nogroup \
CXX="g++" CXXFLAGS="-I/usr/local/include,-O3" CPPFLAGS="" CC="cc" CFLAGS="-O3" \
LDFLAGS="-L/usr/local/lib,-Wl,-Bsymbolic-functions"
Встроенный прокси будет работать от имени nobody:nogroup, каталог установки /usr/local. Также активирована поддержка ClamAV. Если такая не нужно параметр —enable-clamd=yes устанавливаем в no.
Собираем и устанавливаем.
$ make
$ sudo make install
В приниципе все, можно пробовать.
$ sudo /usr/local/sbin/mind
Консоль после запуска освобождается, можно проверить работу демона
$ ps aux | grep mind
$ netstat -ant | grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
По умолчанию MinD использует 8080 порт, настраиваем браузер на наш проки сервер и пробуем подключиться. Все должно работать. Для эксперимента наберите в поиске ряд слов или URL ресурсов доступ к которым нужно блокировать.
По окончанию сборки конфигурационные файлы будут помещены в /usr/local/etc/mind/ в каталоге /usr/local/etc/mind/lists/ будет содержаться список блокировки. Посмотрим.
$ cd /usr/local/etc/mind/
/usr/local/etc/mind $ ls
authplugins contentscanners downloadmanagers lists mind.conf mindf1.conf
Основной файл который использует демон называется mind.conf, он содержит данные о режиме работы прокси, порт, расположение журнала, формат строк в журнале и т.п. К слову журнал программа не ведет, поэтому создаем каталог.
$ sudo mkdir /var/log/mind
Все параметры приводить не буду, кто сталкивался с настройкой Squid наудйт много знакомого:
$ sudo nano mind.conf
# журнал, снимаем комментарий
loglocation = /var/log/mind
reportinglevel = 3
loglevel = 3
# режим работы
# 0 - Simple Proxy: внутренний прокси (recommended)
# Usefull for transparent proxy.
# 1 - Chained proxy: вроде Dansguardian требует внешнего прокси
# 2 - ICAP mode: ICAP сервер
# Default: 0 (Simple proxy).
filterworkmode = 0
# стиль страницы блокировки 0,1,2
blockingpagephstyle = 1
# прозрачный прокси
transparentproxy = off
# безопасный поиск Google
forcegooglesafesearch=on
# шаблон языка сообщений, русского пока нет
languagedir = '/usr/local/share/mind/languages'
language = 'ukenglish'
# Network Settings
# Установки сети
# по умолчанию слушаются все интерфейсы
filterip = 0.0.0.0
# порт
filterport = 8080
# IP и порт другого прокси, игнорируется в режиме Simple Proxy
proxyip = 127.0.0.1
proxyport = 3128
# изображение на замену забаненого
usecustombannedimage = on
custombannedimagefile = '/usr/local/share/mind/transparent1x1.gif'
# группа фильтров
filtergroups = 1
filtergroupslist = '/usr/local/etc/mind/lists/filtergroupslist'
# Authentication files location
bannediplist = '/usr/local/etc/mind/lists/bannediplist'
exceptioniplist = '/usr/local/etc/mind/lists/exceptioniplist'
# размер кэша и возраст URL
urlcachenumber = 1000
urlcacheage = 900 # 15 минут
scancleancache = on
reverseaddresslookups = off
# блокировка POST - загрузка файлов
# 0 - полная, -1 не блокируется
# любое числу указывает размер
maxuploadsize = -1
# максимум контентного фильтра
maxcontentfiltersize = 256
# каталоге кэша
filecachedir = '/tmp'
Это минимум, остальные параметры можно пока не трогать. Одна из особенностей MinD возможность форматирования журнала и записей. Здесь часто используется цифровой код, расшифровка которого дана в самом файле.
Посмотрим теперь на лист блокировки
$ cat lists/bannedsitelist
# возможно установка времени действия списка
# Time limiting syntax:
# #time:
# Example:
##time: 9 0 17 0 01234
# Remove the first # from the line above to enable this list only from
# 9am to 5pm, Monday to Friday.
# категоризация списка
#listcategory: "Banned Sites"
# список сайтов для блокировки
badboys.com
# подключение внешних списков
#.Include
В других файлах прописаны IP, MIME типы, расширения файлов и прочие атрибуты которые можно заблокировать.
//
Сколько коннектов может держать данны КФ?
//
В начале даны характеристики, я стресс-теста не проводил.
//
Подскажите как у него с поддержкой https?