DansGuardian или фильтрация контента

Изображение пользователя Школяр.



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



Ой-ой, куда это мы попали?


Правда если на вполне приличных страницах вполне приличные люди позволят себе употребить не совсем приличные слова (что сейчас ведь не такая уж и редкость) - эти страницы тоже будут закрыты. Ну так им и надо, пусть не употребляют!


Установка и запуск на Школьном Сервере:

Скачать её

Совсем скоро программу можно будет установить прямо из репозитория, но если кому-то хочется сделать это прямо сегодня, то есть адрес. Скачиваем командой из консоли
wget http://www.linformatika.ru/files/dans/dansguardian-2.10.1.1-alt0.M40.1.i586.rpm
или командой
links http://www.linformatika.ru/files/dans/dansguardian-2.10.1.1-alt0.M40.1.i586.rpm

Установить её

Предполагая, что файлик скачался в ваш домашний каталог, установка производится командой
apt-get install ~/dansguardian*.rpm

Настроить её

Настройка сводится к правке одного файла, /etc/dansguardian/dansguardian.conf. В нем надо изменить одно значение:
filterport=8081

Настроить сервер

Используя веб-интерфейс управления Школьным Сервером, перейдите на страницу настроек брандмауэра, и внесите порт 8081 в поле Дополнительные порты TCP. После этого не забудьте щелкнуть на кнопке Применить.

Запустить её

Из консоли сервера командой dansguardian. Программа должна написать что-то типа - "все классно, фильтрую базар", на английском, конечно.
ВАЖНО: программа работает только в паре с запущенным squid.
Теперь можно настроить браузеры клиентов на адрес сервера и порт 8081. Ради интереса предлагаю вам пооткрывать разные "плохие" сайты, даже самые, казалось бы, непредсказуемые. И можете идти в прокуратуру.

Для того, чтобы программа работала в качестве сервиса и автоматически перезапускалась при перезагрузке нужно выполнить команды:
service dansguardian start
а затем
chkconfig dansguardian on


Программа: DansGuardian
Текущая версия: 2.10.1.1
Автор: Daniel Barron
Язык программирования: C
Язык интерфейса: Английский, консоль
Сайт программы: http://dansguardian.org
Лицензия: GNU General Public License (GPL 2)
Загрузить: из репозитория Alt Linux


Статистика Прокси-Сервера

Установил "Школьный сервер" в связки с фильтром DansGuardian, отличный фильтр, но есть одна проблема теперь весь трафик в веб-интерфейсе "школьного сервера" отображается через IP сервера, а не той машины с которой выходили в интернет. Возможно решить как-то решить эту проблему?

И думаю вопрос не по теме, но подскажите где взять материал по настройке доступа к прокси Squid (интернету), через логин и пароль??

Была та же проблема =)

Решается все довольно просто, при сборке кальмара включается опция

--enable-follow-x-forwarded-for

толко негативный момент, работает эта функция только на 2.7 и 3.1 версиях. На другие версии есть патч, но я не стал проверять насколько он работоспособный.
Более подробно на ht*p://squid.sourceforge.net/follow_xff/
Будут вопросы - обращайтесь, с удовольствием помогу =)

Спасибо,

Спасибо, пожалуй самый лучший русскоязычный ман.
А в школьном 2009 clam кто-нибудь пробовал прикрутить?

Изображение пользователя derugu.

Прозрачный прокси с dansguardian

>Теперь можно настроить браузеры клиентов на адрес сервера и порт 8081
А лучше сделать прозрачный прокси:
http://www.altlinux.org/%D0%9F%D1%80%D0%BE%D0%B7%D1%80%D0%B0%D1%87%D0%BD...

Вот только после рестарта ШС все "прозрачности" пропадают. Но это можно решить. Как только сделаю, напишу.

Изображение пользователя den2007.

По поводу фильтра

Фильтр действительно классный.
Использую его уже два года.
Одно маленькое примечание, несмотря на открытость кодов Dansguardian бесплатен только для некоммерческого использования.
Единственная проблема это бедный список русскоязычных фраз.
И проблема с распознаванием кодировок, так как русский язык в Интернет представлен в основном тремя кодировками UTF-8, KOI8-Ru, windows-1251.
В принципе проблему с кодировками я обошел.
Также нашел модуль для Webmin.

В общем в школе поднят сервер фильтрации Интернет.
Построен он мной.
В его основе Linux, Squid, Dansguardian, 3Proxy, и другое открытое ПО.
Он позволяет вести ПОЛНЫЙ КОНТРОЛЬ ЗА ИНТЕРНЕТ.
Его функции.
1. Фильтрация по ключевым словам, регулярным выражениям, адресам, принудительное включение фильтрации в Google. (Dansguardian)

2. Авторизация пользователей, оганичение скорости закачки файлов, запрет поиска в незащищенных поисковых системах, и запрет на использование в поиске некоторых русских слов.(squid + самописный редиректор + winbindd)

3. Очень простой домен для компьютерного класса. Прим. Непереносимые профили с авторизацией и личным сетевым диском для хранения работ и резервных копий учеников. (samba)

4. Полные отчеты о посещениях сайтов и общая статистика(Анализаторы логов)

5. Внутренний сайт школы и для статистики(apache)

6. Показ поисковых запросов в поисковых машинах.(самописный скрипт-анализатор лога Dansguardian).

7. База данных по компьютерам и поддержки пользователей(GLPI)Прим. К фильтрации не относится, не пропадать же мощностям.

Единственно что надо бы сделать -- полноценный веб-интерфейс, чтобы постоянно по конфигам не лазить.

OC --- Linux Mandriva 2009, хотя в принципе любая Linux, с некоторыми изменениями BSD.

> В принципе

> В принципе проблему с кодировками я обошел.

поделитесь секретом - как?
А то он у меня обрезает вин1251, а вот ЮТФ-8 резать отказывается =(

Изображение пользователя Школяр.

Полноценный веб-интерфейс

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

Изображение пользователя den2007.

Веб-интерфейс

В принципе веб-интерфейс нужен по базовым функциям например добавить адрес в черный список, попутно проверив не будет ли он дублироваться другими записями. Отключение/включение доступа в Интернет делается командами gpasswd -d user inet и gpasswd -a user inet соответственно(мало вероятно что синтаксис gpasswd радикально изменится).

Сильно крутые настройки в веб-интерфейсе делать смысла не имеет, в таком интерфейсе тяжелее разбираться чем в конфиге. Зачем например выносить настройки портов Dansguardian в веб-интерфейс они используются 1 раз при настройке.

А насчет того что дело не легкое я полностью с Вами согласен.

А можно не изобретать велосипед и написать модули к Webmin.

Изображение пользователя kon-dv.

Режик

Я использую redirector. Он есть в репозитории альта. Настраивается элементарно. Очень удобен в работе. http://www.rejik.ru/index.html

Изображение пользователя den2007.

Режик

Хороший редиректор, на первых порах использовал.
Но при использовании связки Squid+Dansguardian его использование становится неэффективным и ненужным.

русская фильтрация

это для тех у кого возникают проблемы с русской фильтрацией.
после этих дейтсвий google просто блокирут поиск запрещенных фраз.
ps в последних строчках убрать ковычки надо и скобки поставить <>
Следующим шагом будет составление списков фраз. Понятно, что готовить списки нам придется сразу в трех кодировках, но не стоит пугаться раньше времени. Перейдем в каталог /etc/dansguardian/phraselists и создадим там папку для наших списков:

cd /etc/dansguardian/phraselists
sudo mkdir rus

Перейдем в эту папку и создадим заготовки для файлов списка:

сd rus
touch rus1251 rusutf8 ruskoi8

Так как системной консолью Ubuntu является UTF-8 основная работа у нас будет происходить с файлом rusutf8. Добавим в него необходимые фразы и их вес. Формат записи следующий:

<фраза>,<40>

Остановимся на одном тонком моменте, пробелах перед и после фразы. Их наличие не допускает подстановку символов при проверке. Так например запись < наркотик > будет блокировать слово "наркотик", но не будет "наркотики". А фраза <эро> заблокирует даже такие слова как "аэрофлот", правильнее будет записать < эро>, что будет блокировать все слова с таким началом.

Создав список в Юникоде, перекодируем его в остальные кодировки:

iconv -f UTF-8 -t WINDOWS-1251 rusutf8 > rus1251
iconv -c -f UTF-8 -t KOI8-R rusutf8 > ruskoi8

Параметр -с во второй строке предписывает выбрасывать те символы, которые не могут быть преобразованы, потому что KOI8, по сравнению с современными кодировками, содержит ограниченное число символов.

Теперь подключим наши списки, для этого в конец файла /etc/dansguardian/lists/weightedphraselist добавим строки:

#Russian
".Include /etc/dansguardian/lists/phraselists/rus/rus1251"
".Include /etc/dansguardian/lists/phraselists/rus/rusutf8"
".Include /etc/dansguardian/lists/phraselists/rus/ruskoi8"

Сохраним файл и еще раз перезапустим DansGuardian, после чего можем проверить фильтрацию по указанным нами словам.

Изображение пользователя den2007.

Дополню

По идее все правильно, но этот материал уже есть на сайте :)
Решение с множественной кодировкой работает, но с завидным постоянством дает ложные срабатывания, по идее надо смотреть и дорабатывать исходный код.

Что касается вами написанного, поработайте с фразами месяц или больше и поймете что это не выход каждый раз ручками вводить.

Поэтому, я храню всю базу фраз в одном файле, в котором также указывается категория фразы, и специальный скрипт конвертирует все это по отдельным спискам.

Создавался скрипт в расчете на обслуживание нескольких школ по принципу обновления антивирусов, чтобы не бегать и вручную не ставить, но к сожалению не пригодился.

Скачать скрипт и базу можно здесь http://dansguardian.ucoz.ru
Скрипт может содержать уязвимости и недоработки, поскольку писал для себя, на всякий случай, сделайте резервную копию настроек Dansguardian.

Анализатор логов Dansguardian

Не подскажите анализатор логов Dansguardian, для того, чтобы можно было посмотреть по какой именно запрещенной фразе заблокирована страница? Sarg для учета статистики уже использую, но он не показывает запрещенные фразы заблоченной страницы.

Изображение пользователя den2007.

Анализатор

Лучше этого анализатора я не видел.
Подробнее все описано здесь,
http://dansguardian.ucoz.ru/index/analizator_logov/0-15
просто не хочу повторяться.

Спасибо

Спасибо, Денис. Уже который раз использую именно Ваши инструкции и рекомендации по настройке Dansguardian. Буду пробовать.

Не анализирует

Прошу помочь.
Уже третий день не могу заставить этот анализатор анализировать. Пробовал вот как:

1. Захожу, например, на сайт mp3baza.net. Dansguardian блокирует, пишет "Превышен взвешенный предел фразы". Далее проверяю /var/log/dansguardian/access.log, вижу появилась строчка:
1319631079.962 2077 192.168.0.1 TCP DENIED/403 57983 GET http:// mp3baza.net 192.168.0.1 DEFAULT PARENT/127.0.0.1 text/html.
2. Далее захожу на http:// 192.168.0.1/ cgi-bin/dglog2.pl, ввожу дату начальную и конечную 26.10.2011, ip-адрес - 192.168.0.1, поле username пустое (прозрачный прокси), ввожу URL mp3baza.net, выбираю Show all denied или bannedPhrase, нажимаю Run Report.
3. Получаю: Total matches:0, Total all requests:585 и всё.

Файл dglog2.pl делал исполняемым, менял владельца и группу на www-data, root, и так, и так, то же самое, не анализирует.
$logdir=/var/log/dansguardian
$logfile=access.log
$logformat=2

прикрепил бы скрины, но не нахожу кнопок добавления.

Изображение пользователя Школяр.

пока есть проблемы с местом на диске

поэтому скрины - на radical или другой свободный пикчур-обменник, а ссылки сюда. Это будет решением.

Скрины dglog2

Блокировка Dansguardian: http://s017.radikal.ru/i429/1110/19/40ed78558c43.jpg

Вводимые параметры dglog2: http://s017.radikal.ru/i424/1110/05/c50cb72a6f27.jpg

Результат dglog2: http://s017.radikal.ru/i424/1110/62/4754bd301810.jpg

Изображение пользователя den2007.

Всё верно

1319631079.962 2077 192.168.0.1 TCP DENIED/403 57983 GET http:// mp3baza.net 192.168.0.1 DEFAULT PARENT/127.0.0.1 text/html

Не работает по очень простой причине.
Это строка лога в формате SQUID. Этот лог можно обрабатывать любым анализатором логов для SQUID, тем же SARG, например. В этом формате в лог не включаются специальные поля показывающие причину блокировки, вдобавок дата отображается в Unix-формате.
Вам нужно остановить Dansguardian, сохранить существующие логи, очистить файл access.log и поменять тип лога в dansguardian.conf на стандартный или CSV.
После запуска dansguardian будет записывать логи в понятном анализатору формате, но пропадёт возможность анализировать их анализаторами Squid.

Понятно

Понятно, спасибо. Сам бы никогда в жизни не додумался бы.

Шаблон запрещающей страницы

Добрый день! Помогите с шаблоном, который появляется если сайт заблокирован, сам шаблон я нашел он находится в /etc/dansguardian/languages/Rus/template.html, но данный шаблон поялвяется только по фразам, если я захожу на заблокированный сайт то появляется белая страница с надписью Advert blocked

Изображение пользователя den2007.

Advert Blocked -

Advert Blocked - сообщение о блокировке рекламы.
Возможно вы добавляете адреса не в тот лист.
Что касается шаблона, обычно хватает стандартного, но есть более продвинутый на PHP.

Из ресурсов по Dansguardian можно посмотреть:
1. Этот сайт
2. http://interface31.ru/cgi-bin/mt-search.cgi?IncludeBlogs=1&tag=DansGuard...
3. www.dansguardian.ucoz.ru

Здесь я пишу сейчас довольно редко, так как занят крупным проектом для своей школы, пишите на форуме сайта по ссылке 3.

Шаблон блокировки сайта

Спасибо! Уже разобрался необходимо сайты заносить в файлик banedsitelist, тогда он выводит шаблон.