DansGuardian

Linux > DansGuardian
17.01.2015 15:11:01



Статья:

DG работает на всех известных людям Unix-подобных системах, включая Mac OS X. И еще одно преимущество – то же, что и у любого другого сервера: требуется лишь один Linux-шлюз «DG + Squid», чтобы защитить все компьютеры в вашей сети, и неважно, сколько различных операционных систем в ней используется, как часто меняется их конфигурация, сколько людей с ними работает и любят ли эти люди менять браузеры. Модуль Webmin обеспечивает удаленное сопровождение через web-интерфейс.
Что же касается собственно фильтрации, то DansGuardian может определять неприемлемые страницы несколькими способами. Простейший из них, который DG разделяет с более традиционными web-фильтрами – это занесение в черные списки IP-адресов, определенных URL или целых доменов. Чтобы определить эти параметры с предельной гибкостью, можно использовать регулярные выражения.
А уж где DG блистает, так это в распознавании слов или фраз, которые вы хотели бы заблокировать внутри текста web-страницы, даже если они замаскированы смешанным HTML-кодом или умышленно нашпигованы пробелами. Многие слова и фразы, которые, по общепринятым нормам, следует блокировать, внесены в настройки по умолчанию и в список слов, поставляемый с DG (мы займемся ими позже). Еще один уровень гибкости предоставляется за счет разделения пользователей на группы, каждая со своими настройками фильтрации.
Как и web-фильтры, DG может блокировать или ограничивать скачивание файлов, а также загрузку файлов на сервер через web-формы. Типы MIME, расширения файлов или их размер – все это можно использовать как критерии блокировки. Есть и способы определения вирусов в допустимых вложениях.

/etc/dansguardian/dansguardian.conf:

# выберем внутренний шаблон страницы запрета
reportinglevel = 3
# определим язык страницы с ошибкой, которую покажет DansGuardian при блокировке веб-содержимого
language = 'russian'
# Затем настройте шаблон отображаемой страницы.  В файле /etc/dansguardian/languages/russian/template.html укажите название вашей компании и поменяите текст сообщения под свои нужды.
# укажем IP - адрес фильтра DansGuardian
filterip = 192.168.0.1 (можно оставить пустым, тоже сработает)
# укажем порт фильтра DansGuardian
filterport = 8080
# укажем порт нашего прокси-сервера Squid
proxyip = 127.0.0.1
# в данном случае прокси находится на том же компьютере, если на другом, то просто укажите другой ip-адрес
# укажем порт нашего proxy-сервера Squid
proxyport = 3128
# DansGuardian стоит между браузером и прокси-сервером: в этом случае он будет использовать TCP- порт 8080 для общения с браузером и одновременно порт 3128 для связи с прокси-сервером, прослушивающим этот порт.
# раскомментируем строку "contentscanner", чтобы сообщить DansGuardian о необходимости использовать ClamAV для проверки запрошенных через HTTP файлов.
contentscanner = '/etc/dansguardian/contentscanners/clamav.conf'
# для завершения настройки закомментируйте или удалите следующую строку. Это необходимо для того, чтобы сообщить DansGuardian о том, что мы изменили конфигурацию по-умолчанию. 
# UNCONFIGURED - Please remove this line after configuration
# параметры, отвечающие за поиск по фразам
weightedphrasemode = 1
phrasefiltermode = 2
preservecase = 2
hexdecodecontent = on
forcequicksearch = on

# для корректной фильтрации русскоязычного контента выполним такие настройки

# параметр, который проводит фильтрацию в два приема, первый раз приведя все символы к нижнему регистру, а затем используя оригинальное написание
preservecase = 2
# включает HEX кодировку всех символов для фильтрации страниц с разными кодировками
hexdecodecontent = on
# заменяет стандартный алгоритм DFA, некорректно работающий с Юникодом, алгоритмом Force Quick Search
forcequicksearch = on

3. Списки фильтров DansGuardian, которые можно добавить/отредактировать под свои нужды, находятся в директории /etc/dansguardian/lists

banned - именно с этого начинается название черного списка, далее следует название списка (например site) и заканчивается на list. Пример, bannedsitelist - черный список, содержащий имена доменов, но на самом деле домены в нем не указываются, так как логичнее делить их по категориям, поэтому в этом файле прописаны ссылки на соответствующие черные списки.
exception - практически то же только для белых списков.
weightedphraselist - этот файл стоит особняком, поскольку в нем указываются списки с фразами. 

4.Составим списки фраз для фильтрации русскоязычного контента. Создавать списки нужно сразу в трех кодировках (Windows-1251, UTF-8, KOI8-R), чтобы потом не было проблем с блокировкой.

Перейдем в каталог /etc/dansguardian/lists/phraselists и создадим там папку для наших списков:

cd /etc/dansguardian/lists/phraselists
sudo mkdir rus

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

сd rus
touch rus1251 rusutf8 ruskoi8

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

<фраза>,<40>

Число <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>

Сохраним файл.

5. При запущенном прокси-сервере Squid запустите DansGuardian:

  • service dansguardian start - запуск DansGuardian.
  • service dansguardian stop - остановка DansGuardian.
  • service dansguardian restart - перезапуск DansGuardian.

Или:

  • /etc/init.d/dansguardian start
  • /etc/init.d/dansguardian stop
  • /etc/init.d/dansguardian restart

1. Режим №1 "Что не разрешено - запрещено"
DansGuardian использует для фильтрации "Белые", "Серые" и "Черные списки", для доменов, ссылок и прочее. Настроим работу фильтра только по "Белому" списку...
Закроем все сайты, которые не содержатся в "Белом" списке, раскомментировав строку в файле:   {ВНИМАТЕЛЬНЕЕ СМОТРИТЕ ЧТО ИЗМЕНИЛОСЬ}
/etc/dansguardian/lists/bannedsitelist
было:
#Blanket Block. To block all sites except those in the
#exceptionsitelist and greysitelist files, remove
#the # from the next line to leave only a '**':
#**
стало:
#Blanket Block. To block all sites except those in the
#exceptionsitelist and greysitelist files, remove
#the # from the next line to leave only a '**':
**
заносим разрешенные сайты в список
/etc/dansguardian/lists/exceptionsitelist

Теперь будут открываться только разрешённые сайты

2. Для перехода в "Режим №2"
Просто приводим файл
/etc/dansguardian/lists/bannedsitelist
в исходное состояние, т.е. закомментируем строку
#Blanket Block. To block all sites except those in the
#exceptionsitelist and greysitelist files, remove
#the # from the next line to leave only a '**':
#**
и перезапустим
service dansguardian restart

Теперь режим только разрешённые сайты отключен

3. "Режим №3" Разрешаем полный доступ...
Укажем IP машин, которые не подвергаются фильтрации в файле:
/etc/dansguardian/lists/exceptioniplist
# IP addresses of computers from which
# web access should not be filtered.
#
# These would be servers which
# need unfiltered access for
# updates. Also administrator
# workstations which need to
# download programs and check
# out blocked sites should be
# put here.
#
# Hostnames are allowed here, provided you
# enable the reverseclientlookups option.
#
# This is not the IP of web servers
# you don't want to filter.

#192.168.0.1
#192.168.0.2
#192.168.42.2

# Ranges and subnets can also be used,
# e.g.
# 10.0.0.1-10.0.0.3
# 10.0.0.0/24
#
# Hostnames can also be used, provided
# you cater for reverse DNS lookups
# on your LAN and enable the
# "reverseclientiplookups" option in
# dansguardian.conf
192.168.0.10    Это адреса машин у которых полный доступ к сети Internet
192.168.0.31

перезапустить DansGuardian командой:
service dansguardian restart

Вот и все
Незабываем перезапускать службу после каждого изменения в файлах DansGuardian.

 

ИТОГО:

/etc/dansguardian/lists/exceptioniplist  сюда прописываем IP на кого фильтр не распространяется

/etc/dansguardian/lists/exceptionsitelist сюда прописываем сайты на которые фильтр не распространяется

/etc/dansguardian/lists/weightedphraselist список категорий и листов с фразами и весом

Например, Bannerdsitelist блокирует целые домены; bannedurllist – только некоторые их части. Urlregexplist, напротив, разъясняет DG, как прозрачно подменять одни URL другими, (теоретически) более безопасными. Кроме переключения некоторых поисковых машин в безопасный (опять-таки теоретически, см. выше) режим, его также можно использовать для таких вещей, как автоматическое перенаправление запроса о сомнительной книге с Amazon на форму, которая отошлет запрос на Library Manager, чтобы оценить ту же книгу для покупки.
Особое внимание уделите всем файлам, имена которых начинаются с “exception”. В них перечислено все – от расширений файлов до IP-адресов – что должно быть исключено из фильтрации. Exceptionsitelist и exceptionsurllist, например, содержат все безгрешные сайты

Каталог phraselist содержит – как нетрудно догадаться – все актуальные списки слов и фраз, которые не должны допускаться в содержимом web-страниц или, как в случае с Энди Каппом, в URL. Она делится по темам (азартные игры, порнография, насилие и так далее), языку и типу страницы (например, поиск в Google), чтобы упростить ее предоставление в общий доступ и сопровождение. Формат отностительно прост, и позволяет определять «вес», или уровень доступности, для каждого элемента. Вот как можно указать DansGuardian, что компьютеры Windows (по крайней мере) в 20 раз более нетерпимы, или имеют больший вес, чем компьютеры Apple:

<Macintosh><10>
<Windows><2000>