MyTetra Share
Делитесь знаниями!
DansGuardian. Сложности фильтрации русскоязычного контента.
Время создания: 28.10.2011 15:06
Автор: Уваров А.С.
Раздел: Компьютер - Linux - Сеть в Linux - DansGuardian
Запись: xintrea/mytetra_syncro/master/base/13197999904q4z5b6rnl/text.html на raw.github.com

DansGuardian. Сложности фильтрации русскоязычного контента.

Автор: Уваров А.С.

09.10.2010

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

Основная сложность фильтрации русскоязычных текстов - это наличие нескольких кодировок страниц. Наиболее распространена в русскоязычном сегменте Windows-1251, последнее время получает все более широкое распространение UTF-8, а местами до сих пор встречается KOI8-R.

Вторая проблема заключается в том, что настроенный по умолчанию DansGuardian не фильтрует кириллицу в кодировке UTF-8.

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

Первым делом проведем тонкую настройку, которая позволит DansGuardian наиболее эффективно фильтровать контент в любой из трех возможных кодировок. Откроем /etc/dansguardian/dansguardian.conf в котором найдем и установим следующие значения параметров:

preservecase = 2

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

hexdecodecontent = on

Включает HEX кодировку всех символов для фильтрации страниц с разными кодировками.

forcequicksearch = on

Заменяет стандартный алгоритм DFA, некорректно работающий с Юникодом, алгоритмом Force Quick Search.

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

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

cd /etc/dansguardian/lists/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, после чего можем проверить фильтрацию по указанным нами словам.

Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования