Linux > DansGuardian
17.01.2015 15:11:01
Наиболее часто встречающиеся слова в статье:
[DansGuardian] [страницы] [название] [фильтрации] [символов] [rusutf8] [Include] [укажите] [фильтра] [браузером]
Статья:
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:
Или:
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>