Руководство по настройке контент-фильтра

Linux > Руководство по настройке контент-фильтра
19.01.2015 16:22:46



Статья:

Автор: Den2007 Источник :



Руководство по настройке контент-фильтра

DANSGUARDIAN.



Вступление.

С этой части начинается разбор по кирпичикам настройки контент­фильтра Dansguardian.

Предполагается, что читатель имеет базовые навыки работы с консолью Linux и любым консольным текстовым редактором.

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

Здесь не рассматриваются вопросы установки и удаления Dansguardian, так как его дистрибутив есть во многих репозиториях, и устанавливается он обычными для конкретного дистрибутива способами.

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

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

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

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

Тема создания и настройки групп будет затронута в отдельной части.

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




Где находятся конфигурационные файлыи Dansguardian.

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

Наиболее вероятные месторасположение конфигурационных файлов /etc/dansguardian/ или /usr/local/etc/dansguardian/ .

Если не нашли их, то запуск dansguardian c опцией -v выведет опции сборки , эта строка в выводе sysconfdir=/etc говорит о том, что конфигурационные файлы должны находится в директории /etc , поддиректории dansguardian.

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

Некоторые особенности формата файлов Dansguardian.

Все файлы конфигурации Dansguardian имеют обычный текстовый формат.

Символ решетки # в начале строки означает, что эта строка является комментарием и не используется.

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

О   таких случаях и этих опциях будет рассказано отдельно.

Первый конфигурационный файл dansguardian.conf

Настройку мы начнем с этого файла. Открываем его в текстовом редакторе. Да, опций много, но с основными сейчас разберемся.

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

Эта опция задает вид веб-страницы запрета (не влияет на запись в лог) Ее возможные значения.

-1 = Только записывать в лог, не блокировать. (Скрытный режим).

0    = Вывести только "Доступ запрещен".

1      = Вывод страницы с запретом без показа найденных запрещенных фраз.

2      = Полный отчет (Рекомендуется на время проверки и настройки фильтра)

3      = Использовать HTML-шаблон страницы запрета (Рекомендуется использовать по умолчанию)

languagedir = '/usr/share/dansguardian/languages'

Расположение директории с HTML-шаблонами для разных языков. HTML-шаблон используется, когда предыдущая опция имеет параметр 3.

language = 'russian-koi8-r'

HTML-шаблон из директории с шаблонами.

HTML-шаблон написан на PERL, и может быть модифицирован под конкретные задачи.




loglevel = 2

Настройка ведения лога Возможные значения:

0    = не записывать в лог

1    = записывать только запрещенные

2    = записывать все текстовые запросы (по умолчанию)

3    = записывать всё

logfileformat = 1

Формат лога.

Возможные значения:

1    = оригинальный DansGuardian format (разделитель пробел)

2    = формат файлов CSV с разделителем ;

3    = формат логов прокси-сервера Squid

4    = Tab delimited (разделитель TAB)

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

anonymizelogs = off

Не записывать в лог имена пользователей и их IP-адреса.

Возможные значения: on = включить

off = выключить (записывать в лог имена пользователей и их IP-адреса)

loglocation = '/var/log/dansguardian/access.log'

Расположение файла лога

filterip = 192.168.0.1

IP-адрес интерфейса на на котором Dansguardian принимает соединения от клиентов.

Пустое значение прослушивать все сетевые интерфейсы.

Если необходимо задать два сетевых интерфейса просто добавляем еще одну строку, например так filterip = 192.168.0.1 filterip = 192.168.5.1

filterport = 8080

Порт на котором Dansguardian принимает соединения от клиентов. proxyip = 127.0.0.1

IP-адрес прокси-сервера, по умолчанию локальный интерфейс, т.е. 127.0.0.1

proxyport = 3128

порт прокси сервера, принимающий соединения, по умолчанию 3128

accessdeniedaddress = ‘ http://192.168.0.1/cai-bin/dans.p I 1

адрес скрипта, выводящего страницу запрета при опции reportinglevel равной 1 или 2.




Здесь маленькое отступление.

Скрипт должен располагаться на локальном веб-сервере с поддержкой PERL скриптов. Доступ к этому веб-серверу, желательно должен быть прямой, этого можно достичь, если использовать настройку браузера, не использовать прокси-сервер для.., куда ввести адрес вашего веб­сервера.

Есть и другой путь адрес вашего веб-сервера надо добавить в exceptionsitelist.


showweightedfound = on

Запись в лог найденных фраз и вывод в странице запрета при

reportinglevel = 2

Возможные значения:

on = включить

off = выключить

weightedphrasemode = 2

Значение этой опции будет рассмотрено далее.

Ниже приведенные опции должны быть такими как приведены, для

корректной поддержки кириллицы (комбинация определена опытным

путем), хотя все равно придется пойти на хитрость, которая будет

описана позже.

phrasefiltermode = 2

preservecase = 2

hexdecodecontent = on

forcequicksearch = on


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




Руководство по настройке контент-фильтра

DANSGUARDIAN.



Все необходимые в этой статье файлы находятся в каталоге lists

Настраиваем доступ без всякой фильтрации к Интернет для определенных компьютеров.

Такой доступ потребуется например, для компьютера администратора. Открываем файл exceptioniplist и вписываем туда IP-адрес компьютера администратора , каждая запись на новой строке.

Отключаем доступ к Интернет для определенных компьютеров.

Открываем файл bannediplist и вписываем IP-адреса компьютеров, которые не должны иметь выход в Интернет, каждая запись на новой строке.

Блокируем загрузку файлов определенного типа.

Открываем файл bannedextensionlist и добавляем в него расширение файла, загрузку которых хотим заблокировать; для открытия загрузки файлов с расширением входящим в этот список, нужно закомментировать строку с расширением или удалить её. Хотя лучше сделать см. ниже. Рекомендую закомментировать .dif это расширение файла базы Антивируса Касперского.

Разрешаем загрузку файлов определенного типа.

Для этого нужно внести расширение файла, который должен быть доступен для загрузки в exceptionextensionlist .

Этот список перекрывает действие bannedextensionlist и чтобы открыть загрузку файлов с определенным расширением, даже если оно есть в bannedextensionlist, достаточно внести расширение в exceptionextensionlist.

Отсекаем тысячи сайтов одним махом ;-)

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

Многие сайты в своем названии имеют, повторяющиеся части слова и целые слова, например porno. Соответственно, если мы создадим правило удалять все сайты, в адресе которых есть porno, то таким простым ходом мы заблокируем много ресурсов.

Естественно Dansguardian поддерживает такую фильтрацию.

И настраивается она в этом файле bannedregexpurllist.

Закомментированные строки со скобками, это отключенные правила, чтоб их включить достаточно убрать символы #, из начала строки.

Если вы владеете написанием регулярных выражений, можете добавить свои.




Я советую добавить эти три правила в bannedregexpurllist:

(eblya \ go vno \ detka \ de vki\de vok\de vush\ eblja \ dildo \ fetish\ fuck\girl)

(glamour\glamur\intim\kamasut\pelotk\pizda\viagra\vagin\vulva\xxx\XXx\xxl)

(love|su4k|suchki|otsos|sterva|tattoo|drochi)

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

Файл exceptionsitelist.

Этот файл по сути является белым списком.

Он содержит адреса сайтов, которые не должны проверяться фильтром вообще, т.е. его действие перекрывает все другие файлы.

Сюда вносятся сайты абсолютно безопасные для детей.

Вносится только сам домен сайта, например fipi.ru , skf.edu.ru , без http:// и www., недопустимы записи такого рода skf.edu.ru/login.aspx для этого есть другие файлы конфигурации.


С этой частью пока все. В следующей — черные списки, их подключение, формат, опция #time и *urllists.



Руководство по настройке контент-фильтра

DANSGUARDIAN.



Все файлы и каталоги, упомянутые в этой части находятся в директории lists и в ее соответствующих поддиректориях.

Создаем черные списки.

Черный список представляет из себя обычный текстовый файл.

Каждая запись на отдельной строке.

Обычно файлы черных списков имеют имя domains и располагаются в директории с именем категории ресурсов, находящейся в blacklists. Запись представляет собой имя сайта которое надо заблокировать, при этом надо отбрасывать www. (обратите внимание и точку после www) и http://

Недопустимо использовать части сайта, для этого используются другие файлы.

Примеры правильных записей.

xxx.ru

xxl.com

girls.net

Примеры неправильных записей.

www.xyxx.ru

http://girls.net

http://www.girls.net

girls.net/ero

Задаем время работы черных списков.

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

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

Для этого используется опция #time:

Формат #time:

#time: <начало в * часов> <начало в * минут> <конец в * часов> <конец в * минут> <дни недели *>

При её отсутствии черный список считается включенным постоянно.

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

Строка должна располагаться в начале черного списка.

Еще интересная особенность, минуты и часы надо указывать в 24-часовом формате, но без 0 в начале минут и часов. То есть 9 часов утра 5 минут будет записано как 9 5.

Дни недели обозначаются цифрами от 0 до 6.

0 — соответствует понедельнику, и так далее по порядку следования



дней в неделе.

Для отключения просто комментируем строку, добавив # в начало строки.

Примеры.

#time: 9 0 10 10 3

включить черный список в четверг 9 утра и отключить его в 10 часов 10 минут того же дня.

#time: 9 0 12 0 0134

Включаем черный список в понедельник, вторник, четверг, пятницу с 9 утра до 12 часов.

Еще одна особенность, включение производится фактически через минуту после указанной в правиле.

Есть еще интересные опции для черных списков, об этом в следующих частях.

Подключаем и/или отключаем черные списки.

Найти или создать файл черного списка этого мало, его еще надо подключить, чтобы он работал.

Все черные списки подключаются в bannedsitelist.

Этот файл имеет обычный текстовый формат.

В нем возможно использовать #time:, но я крайне не рекомендую этого делать, так как она влияет на все черные списки.

Собственно строка, которая подключает файл имеет формат:

.Include </путь к файлу>

То есть, если вам нужно подключить файл ext_porno, вы просто добавляете строку, примерно так .Include </etc/lists/blacklists/pom/ext_pomo>

Не забывайте перезапустить dansguardian после изменений.

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

Для полного отключения конкретного черного списка, просто комментируем соответствующую строку.

Для удаления черного списка полностью с диска, удаляем соответствующую строку в bannedsitelist и удаляем файл списка с диска.

Скачать готовые списки можно 

http://urlblacklist.com/?sec=download

http://www.malwaredomainlist.com/  по заражённым сайтам список

 

Хороший сайт, но вот раздел один надо

заблокировать.

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

Для этого есть свои черные списки. Они обычно располагаются в тех же директориях где находятся черные списки сайтов. Как правило они имеют имя urls.

Запись представляет собой адрес раздела на сайте который надо



заблокировать, при этом надо отбрасывать www. (обратите внимание и точку после www) и http://

Недопустимо использовать только !домен сайта, для этого используются черные списки сайтов, см.выше.

Примеры правильных записей

girls.net/ero

mail.ru/pogoda/usa

Примеры неправильных записей.

xxl.com

xxx.ru

girls.net

на некоторых сайтах, например MAIL.RU, разделы организованы в виде поддомена, в виде auto.mail.ru и подобных.

Для блокировки такого ресурса надо вносить auto.mail.ru в черный список сайтов.

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

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

Открываем доступ к определенному разделу,
заблокированного сайта.

Последний файл, который рассмотрим в этой части exceptionurllist.

Этот файл белого списка с разделами сайтов.

Например, у нас есть заблокированный раздел сайта news.rambler.ru/Russia (новостной раздел Рамблер), мы хотим открыть новости о рынках, они имеют адрес news.rambler.ru/Russia/market, мы просто вносим адрес в exceptionurllist и все.

Файл exceptionurllist перекрывает файлы черных списков сайтов и разделов.

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

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

В следующих частях фильтрация по фразам, создание групп.