DansGuardian. Настраиваем контент-фильтр роутера

  • Автор:

content-filter.png

В определенный момент перед каждым системным администратором встает вопрос фильтрации интернет контента. Особенно актуально этот вопрос стоит в учебных заведениях. Фильтрации по URL и IP в данном случае недостаточно, при таком подходе администратор будет "вечным догоняющим", блокируя нежелательный контент уже после его посещения пользователем. Поэтому наиболее эффективным решением будет установка контент-фильтра.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Контент-фильтр позволяет эффективно блокировать нежелательный контент на основе анализа содержимого веб страниц. Достоинством этого метода является высокая определения нежелательного контента на любых сайтах, возможность блокировать отдельный материал, не блокируя доступ к сайту в целом. Недостатки тоже довольно существенны. Это повышенная нагрузка на сервер, что в случае большого количества активных клиентов может потребовать значительного увеличения вычислительных возможностей сервера. Вторым недостатком можно назвать возможность ложных срабатываний контент фильтра. Так, например, могут быть заблокированы сайты медицинской тематики из-за того, что на странице встретится слово "секс". Этот фактор делает иногда довольно затруднительным составление правил для фильтрации.

На наш взгляд контент-фильтр можно рекомендовать к применению там, где необходимость надежно блокировать нежелательный контент имеет больший приоритет, чем возможная недоступность нужной информации. В первую очередь это учебные заведения, где задача фильтрации контента стоит весьма остро. Для коммерческих структур на первый план выходит требование к доступности информации, поэтому контент-фильтр будет для них не самым лучшим решением. В этом случае более приемлем способ разграничения доступа по URL и IP.

Одним из лучших решений для платформы Linux, и одним из лучших контент-фильтров вообще, является DansGuardian. Он бесплатен для некоммерческого применения, цена лицензий тоже невысока. Для установки контент-фильтра необходим настроенный роутер с прокси-сервером Squid. Мы использовали сервер, настройку которого описали в статье: Linux. Настройка роутера (NAT + DHCP + Squid), все дальнейшие рекомендации мы будем давать применительно к его настройкам и конфигурации.

Для установки DansGuardian выполним в терминале следующую команду:

sudo apt-get install dansguardian

Внимание! В Ubuntu Server 12.04 и 14.04 при установке Dansguardian может возникнуть ошибка: Внимание: указанный домашний каталог /var/log/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.1
filterport = 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

Внимание! В Squid3 вместо опции transparent используется intercept

Перезапускаем 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

Windows-XP-Professional-2010-03-19-23-42-45.gifПопробуем посетить сайты с сомнительным контентом. Мы решили набрать в Яндексе поисковый запрос "терроризм" и походить по ссылкам. Фильтр пропустил статью на Википедии, но в то-же время заблокировал статью на стороннем сайте вполне корректного содержания, сыграло роль слишком частое употребление слова "терроризм" в тексте страницы.

Windows-XP-Professional-2010-03-19-23-51-36.pngЧетко блокируется доступ к "веселым картинкам", даже по вполне невинным запросам, были заблокированы отдельные страницы форума на которых встречался нежелательный контент. Убедившись в работоспособности контент-фильтра перенастроим наш роутер так, чтобы весь 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 -s
cd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc

Теперь обновим список пакетов и приступим к установке:

apt-get update
apt-get install webmin

Доступ через Webmin можно получить с любого ПК набрав в браузере следующий адрес: https://10.0.0.1:10000/
Windows-XP-Professional-2010-03-23-00-32-59.jpg

В настройках Webmin - Webmin Configuration переключаем язык интерфейса на русский и, в целях безопасности, через Управление доступом по IP разрешаем доступ только с машины администратора. Также на закладке Порт и адрес можно ограничить доступ к Webmin только через внутренний интерфейс.

Для управления DansGuardian нам нужен соответствующий модуль для Webmin, скачать его можно с сайта разработчиков, на момент написания статьи актуальной была версия 0.7.0beta1. Установим его через закладку Модули Webmin, теперь он будет доступен в разделе Службы.

Windows-XP-Professional-2010-03-22-23-59-31.jpgВ первую очередь правильно сконфигурируем модуль, настройки доступны по ссылке Настройка модуля слева вверху. Нам потребуется изменить настройку 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 и открыв его любым текстовым редактором (мы рекомендуем AkelPad) добавляем необходимые фразы, строки имеют формат <абв><40>, где цифра указывает на "степень нетерпимости", чем она больше, тем меньшее количество раз слово должно встретиться на странице для ее блокировки. После чего закачиваем файл обратно на сервер. После любых изменений в фильтрах не забываем перезагрузить их, нажав на ссылку Reload DG Groups в правом верхнем углу.

Готовых рекомендаций давать не будем, в каждом конкретном случае существуют свои требования к строгости фильтрации контента. В любом случае DansGuardian дает в руки администратора мощный инструмент, позволяющий гибко, с учетом различных факторов и их значимости фильтровать web-контент передаваемый пользователю.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Дополнительные материалы:


  1. DansGuardian. Настраиваем контент-фильтр роутера
  2. DansGuardian. Дополняем контент-фильтр роутера антивирусом ClamAV
  3. DansGuardian. Сложности фильтрации русскоязычного контента
  4. Школьный роутер. Подводим итоги. Теория
  5. DansGuardian. Настраиваем передачу IP-адреса клиента в Squid

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments