DansGuardian. Настраиваем контент-фильтр роутера.
Контент-фильтр позволяет эффективно блокировать нежелательный контент на основе анализа содержимого веб страниц. Достоинством этого метода является высокая определения нежелательного контента на любых сайтах, возможность блокировать отдельный материал, не блокируя доступ к сайту в целом. Недостатки тоже довольно существенны. Это повышенная нагрузка на сервер, что в случае большого количества активных клиентов может потребовать значительного увеличения вычислительных возможностей сервера. Вторым недостатком можно назвать возможность ложных срабатываний контент фильтра. Так, например, могут быть заблокированы сайты медицинской тематики из-за того, что на странице встретится слово "секс". Этот фактор делает иногда довольно затруднительным составление правил для фильтрации.
Контент-фильтр можно рекомендовать к применению там, где необходимость надежно блокировать нежелательный контент имеет больший приоритет, чем возможная недоступность нужной информации. В первую очередь это учебные заведения, где задача фильтрации контента стоит весьма остро. Для коммерческих структур на первый план выходит требование к доступности информации, поэтому контент-фильтр будет для них не самым лучшим решением. В этом случае более приемлем способ разграничения доступа по URL и IP.
Одним из лучших решений является DansGuardian. Он бесплатен для некоммерческого применения, цена лицензий тоже невысока. Для установки контент-фильтра необходим настроенный роутер с прокси-сервером Squid.
Для установки DansGuardian выполним в терминале следующую команду:
Теперь откроем конфигурационный файл программы /etc/dansguardian/dansguardian.conf, первое что вы должны сделать, это закомментировать или удалить строку:
UNCONFIGURED - ...Следующий параметр reportinglevel задает уровень фильтрации, он может принимать значения:
- -1 - Скрытый режим, страницы не блокируются, но ведется лог,
- 0 - Выводится "Доступ заблокирован",
- 1 - Выводится страница без показа запрещенных фраз,
- 2 - Полный отчет
- 3 - Выводится HTML шаблон страницы запрета.
По умолчанию уже установлено значение:
reportinglevel = 3Этот режим наиболее подходит для повседневного применения. Для тестирования правил удобно выставлять уровень фильтрации 1 или 2 (это потребует настройки на машине web-сервера). Следующий интересующий нас параметр, это язык HTML шаблона страницы запрета:
language = 'russian-koi8-r'Теперь раскомментируем строку указывающую путь к файлу лога:
loglocation = '/var/log/dansguardian/access.log'
Укажем сетевой интерфейс и порт на котором DansGuardian будет принимать соединения от клиентов:
filterip = 10.0.0.1filterport = 8081
Остальные параметры менять не нужно. DansGuardian будет работать на порте 8081, в свою очередь Squid должен использовать порт 3128. В конфигурационном файле Squid /etc/squid/squid.conf находим следующую строку:
http_port 10.0.0.1:3128 transparentМеняем ее на:
http_port 127.0.0.1:3128Перезапускаем Squid:
sudo /etc/init.d/squid restartЕсли вы собираетесь использовать уровни фильтрации 1 и 2 укажите путь к скрипту вывода страницы запрета:
accessdeniedaddress = 'http://10.0.0.1/cgi-bin/dans.pl'Запускаем DansGuardian:
sudo /etc/init.d/dansguardian startДля проверки настроим браузер клиентского компьютера на использование прокси-сервера 10.0.0.1:8081
3.1Настройка параметров локальной сети
Попробуем посетить сайты с сомнительным контентом. Мы решили набрать в Яндексе поисковый запрос "терроризм" и походить по ссылкам. Фильтр пропустил статью на Википедии, но в то-же время заблокировал статью на стороннем сайте вполне корректного содержания, сыграло роль слишком частое употребление слова "терроризм" в тексте страницы.
Рисунок 3.2 Результаты поиска с фильтром и без
Правилно блокируется доступ к "веселым картинкам", даже по вполне невинным запросам, были заблокированы отдельные страницы форума на которых встречался нежелательный контент. Убедившись в работоспособности контент-фильтра перенастроим наш роутер так, чтобы весь HTTP трафик по умолчанию заворачивался на DansGuardian. Для этого открываем /etc/natи следующим образом изменяем в нем последнюю строку:
# Заворачиваем http на проксиiptables -t nat -A PREROUTING -i eth1 ! -d 10.0.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 10.0.0.1:8081
Перезагружаем роутер:
sudo rebootУбираем прокси из настроек браузера и проверяем еще раз. Все должно работать.
Теперь самое время перейти к тонкой настройке фильтрации. Как показали наши испытания, DansGuardian "из коробки" неплохо справляется с большей частью нежелательного контента, но есть и исключения. Существуют тематики где фильтр оказался практически неработоспособным. Например, нецензурная брань, мы без труда посетили "официальный сайт символического направления" и несколько аналогичных ресурсов, также без особого труда нашли инструкцию по изготовлению бомбы и рекомендации по выращиванию конопли. Понятно, что это настраивается, чем мы сейчас и займемся.
Все фильтры DansGuardian представляют собой простые текстовые файлы и расположены в /etc/dansguardian/lists, однако каждый раз править их через консоль сервера не очень удобно, гораздо удобнее было бы работать через web-интерфейс. И такая возможность есть, для этого потребуется установить Webmin, утилиту удаленного администрирования сервера, имеющую весьма широкие возможности. В репозиториях Ubuntu Webmin отсутствует, но его можно установить загрузив deb-пакет с сайта разработчиков, либо подключив их репозиторий. Второй путь кажется нам более оптимальным. Добавим в /etc/apt/sources.list строку:
deb http://download.webmin.com/download/repository sarge contrib
Теперь установим GPG ключ, которым подписаны пакеты в репозитории Webmin, выполним следующие команды:
sudo -scd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc
Теперь обновим список пакетов и приступим к установке:
apt-get updateapt-get install webmin
Доступ через Webmin можно получить с любого ПК набрав в браузере следующий адрес: https://10.0.0.1:10000/
3.3 Настройка Webmin
В настройках Webmin - Webmin Configuration переключаем язык интерфейса на русский и, в целях безопасности, через Управление доступом по IPразрешаем доступ только с машины администратора. Также на закладке Порт и адрес можно ограничить доступ к Webmin только через внутренний интерфейс.
3.4 Настройка DansGuardian
Для управления DansGuardian нам нужен соответствующий модуль для Webmin. В первую очередь правильно сконфигурируем модуль, настройки доступны по ссылке Настройка модуля слева вверху. Нам потребуется изменить настройку Full path to DG binary на /usr/sbin/dansguardian.
Из всего многообразия настроек нас интересуют в основном две: настройка доступа к интернет и настройка списков. Настройка доступа производится через закладку View/Edit System-Wide Lists, она содержит черный список IP адресов и список исключений. Первый содержит перечень адресов которым запрещен веб-доступ, для второго списка фильтрация не производится. Есть смысл включить в него машины преподавателей или иных сотрудников, которым требуется неограниченный доступ.
Закладка View/Edit A Filter Group's Lists содержит разрешающие и запрещающие списки фраз, заголовков страниц, URL, расширений файлов и т.п. За что отвечает тот или иной список ясно из названия, каждый список содержит описание и примеры записей, таким образом добавление своих правил не представляет особого труда.
Некоторая сложность существует с составлением списка русскоязычных фраз. Основная проблема состоит в кириллических кодировках, добавленная в "неправильной" кодировке фраза просто не сработает. наиболее оптимальный способ решения этой проблемы: через оснастку Прочее - Менеджер файлов скачиваем на ПК любой список с русскоязычными фразами, например /etc/dansguardian/lists/phraselists/pornography/weighted_russian и открыв его любым текстовым редактором, добавляем необходимые фразы, строки имеют формат <терроризм><40>, где цифра указывает на "степень нетерпимости", чем она больше, тем меньшее количество раз слово должно встретиться на странице для ее блокировки. После чего закачиваем файл обратно на сервер. После любых изменений в фильтрах не забываем перезагрузить их, нажав на ссылку Reload DG Groups в правом верхнем углу.