Продолжение статьи «Кеширование и подсчет трафика на шлюзовом компьютере»
Приносим свои извинения - в статье была допущена неточность. Теперь она исправлена (редакция от 30.01.12).

Для образовательного учреждения задача фильтрации нежелательной информации, получаемой учениками из сети интернет, наиважнейшая. При этом 100% эффективность выполнения этой задачи невозможна. Например, если на заборе возле школы кто-то написал нецензурное слово, то ученики могут увидеть это слово из окна учебного класса, что бы учитель не предпринимал. И в Интернет, что бы не предпринималось администраторами учебных сетей, нежелательный контент все равно будет просачиваться. Есть еще одна проблема. Слова и словосочетания, которые можно считать признаком вредоносного контента, на самом деле могут быть употреблены в тексте безвредных, а иногда и учебных материалов. Например, сайты, посвященные борьбе с алкоголизмом и наркоманией, обязательно будут иметь такие слова. Или словосочетание «как сделать бомбу» будет содержаться в статье о Курчатове, как впрочем, и в данной статье в текущем предложении.

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

В данной статье будут рассмотрены аспекты установки и настройки системы DansGuardian на шлюзовой компьютер под управлением Ubuntu Server.

Для установки этой программы необходимо наличие установленного прокси сервера Squid, как описано в предыдущей статье.

Кроме того для удобства управления системой мы установим оболочку Webmin. Надеюсь, эта оболочка облегчит Вам работу с системой.

Открою один секрет. Инструкции с описанием выполнения абсолютно всех действий в командной строке Linux пишутся для того, чтобы были понятны действия, которые необходимо проделать, и чтобы не зависеть от установленного программного обеспечения. На самом деле администраторы Linux используют множество облегчающих жизнь приспособлений, таких как mc или webmin. А в командной строке только лишь что-то перезапускают или устанавливают, потому что так получается быстрее. На самом деле набрать команду sudo apt-get install squid3 получается быстрее, чем скачать пакет squid3, открыть его специальной программой, запустить сценарий установки.

Установка веб-интерфейса управления сервером Webmin

Итак. Сначала установим программу Webmin. Эта программа позволяет полностью управлять сервером. Настраивать программы, перезапускать сервисы, создавать пользователей, смотреть используемые ресурсы и многоe-многоe другого. Единственное, что я бы не рекомендовал делать с ее помощью, это устанавливать программное обеспечение. Дело в том что команда apt-get install иногда задает уточняющие вопросы для устанавливаемых пакетов. Webmin этого сделать не может.

В файл /etc/apt/sources.list добавим строку:

deb http://download.webmin.com/download/repository sarge contrib

Надеюсь, вы установили mc и вам не составит труда найти нужный файл и открыть его на редактирование.

Все действия делаем от имени пользователя root. Для этого Midnight Commander достаточно запустить с помощью sudo

# sudo mc

Далее находим вышеозначенный файл и вызываем его редактирование кнопкой F4.

В дальнейшем я не буду касаться Midnight Commander, но помните, что им легче всего перемещаться по файловой системе и редактировать файлы.

Переходим в домашнюю папку пользователя root. Например, командой:

cd /root

Скачиваем и устанавливаем ключ GPG

wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc

Ставим Webmin:

apt-get update
apt-get install webmin

Веб-интерфейс установлен (если вы все набрали правильно).

Теперь подключиться к вебинтерфейсу Webmin можно через браузер с любого компьютера (даже windows), набрав адрес https://192.168.0.254:10000

Пусть вас не пугает такое предупреждение. Ваш ПК всего лишь сообщает о неизвестном ему сертификате безопасности. Нажимаем «Я понимаю риск». Ниже появится кнопка «Добавить исключение...». Нажимаем на нее.

Появляется окно:

Нажимаем «Получить сертификат», а затем «Подтвердить исключение безопасности»

Вот так выглядит эта система управления. Нам осталось ее русифицировать.

Выбираем пункт «Webmin», «Change Language and Theme», потом выбираем язык и нажимаем «Make Changes».

После обновления странички в браузере интерфейс станет русским (или любым другим, который выберите).

С удобствами закончили. Вам осталось научиться этим пользоваться. Скажу только, что панель администрирования Windows server выглядит гораздо страшнее и непонятнее.

Ниже мы вернемся к Webmin, чтобы настроить в нем панель управления контентной фильтрацией.

Установка DansGuardian

Для установки DansGuardian выполним в терминале следующую команду:

sudo apt-get install dansguardian

Затем редактируем конфигурационный файл /etc/dansguardian/dansguardian.conf

Закомментируйте строку

UNCONFIGURED - …

то есть поставьте знак # в начале строки

#UNCONFIGURED - …

Следующий параметр reportinglevel задает уровень фильтрации, он может принимать значения:

-1 - Скрытый режим, страницы не блокируются, но ведется лог,
0 - Выводится "Доступ заблокирован",
1 - Выводится страница без показа запрещенных фраз,
2 - Полный отчет
3 - Выводится HTML шаблон страницы запрета.

По умолчанию уже установлено значение:

reportinglevel = 3

Этот режим наиболее подходит для повседневного применения. Для тестирования правил удобно выставлять уровень фильтрации 1 или 2 (это потребует настройки web-сервера на машине).

Внимание! В конфигурационном файле dansguardian.conf в параметрах важно, чтобы перед и после знаков "=" были пробелы.

Следующий интересующий нас параметр, это язык HTML-шаблона страницы запрета:

language = 'russian-1251'

На всякий случай, сообщаю, что cp-1251, это кодировка, которую использует Windows.

Теперь раскомментируем (убираем # в начале строки) строку, указывающую путь к файлу лога:

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

Включим режим совместимости лог файлов со Squid. Это нам понадобится для создания отчетов:

Logfileformat = 3

Укажем сетевой интерфейс и порт, на котором DansGuardian будет принимать соединения от клиентов:

filterip = 192.168.0.254
filterport = 8081

Остальные параметры менять не нужно. DansGuardian будет работать на порте 8081, в свою очередь, Squid должен использовать порт 3128.

Если вы собираетесь использовать уровни фильтрации 1 и 2, укажите путь к скрипту вывода страницы запрета:

accessdeniedaddress = 'http://192.168.0.254/cgi-bin/dans.pl'

Вместе с DansGuardian автоматически должен был установиться антивирус clamav. Чтобы он начал проверять контент на вирусы, найдем в этом файле и раскомментируем (уберем # в начале строки) строку:

contentscanner = '/etc/dansguardian/contentscanners/clamav.conf'

Запускаем DansGuardian:

sudo /etc/init.d/dansguardian start

Проверить работоспособность фильтра можно, указав в браузере клиентской машины в настройках прокси-сервера ip-адрес 192.168.0.254 и порт 8081.

Вот что получилось в результате поиска запрещенного текста в Yandex:

Теперь нам нужно подключить управление этим фильтром и настроить брандмауэр шлюзового компьютера так, чтобы мимо этого фильтра не проскочили наши продвинутые ученики.

Для этого открываем файл: /etc/iptables.up.rules

И изменяем секцию nat следующим образом:

*nat
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 3128 -j DNAT --to-destination 192.168.0.254:8081
-A PREROUTING -i eth1 -d ! 192.168.0.0/16 -p tcp -m multiport --dport 80,8080 -j 
DNAT --to-destination 192.168.0.254:8081
-A POSTROUTING -j MASQUERADE
COMMIT

Но фильтр можно легко обойти, настроив браузер непосредственно на порт Squid'а, чтобы этого избежать, запретим прямые соединения к Squid'у из локальной сети. Для этого в /etc/squid3/squid.conf найдем строку:

http_port 3128 transparent

и заменим на

http_port 127.0.0.1:3128 transparent

Для правильной работы программы сбора статистики посещения сайтов
(см. предыдущую статью "Кеширование и подсчет трафика на шлюзовом компьютере")

В файле /etc/sarg/sarg.conf строку access_log /var/log/squid3/access.log заменим
на access_log /var/log/dansguardian/access.log

Кроме того, на некоторых системах необходимо после

acl localnet src 192.168.0.0/16 # RFC1918 possible internal network

дописать строку

acl servip src 1.2.3.4

где вместо 1.2.3.4 вы должны указать IP-адрес внешней сетевой карты.

После строки того же конфигурационного файла

http_access allow localnet

добавить строку, включающую доступ к этому IP адресу:

http_access allow servip

Перезагружаем шлюзовой компьютер:

# sudo reboot

Тонкая настройка контентной фильтрации

Как уже было сказано, полностью закрыться от нежелательного контента невозможно. Но можно попытаться максимально обезопаситься. Для этого существует возможность тонкой настройки фильтра.

Все фильтры DansGuardian представляют собой простые текстовые файлы и расположены в /etc/dansguardian/lists, однако каждый раз править их через консоль сервера не очень удобно, гораздо удобнее было бы работать через web-интерфейс.

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

Для управления DansGuardian нам нужен соответствующий модуль для Webmin, скачать его можно с сайта разработчиков, на момент написания статьи актуальной была версия 0.7.1. Установим его через закладку Модули Webmin, теперь он будет доступен в разделе Службы.

После устаноки Данный модуль будет доступен в меню «Службы». Не пугайтесь, при первом запуске может появиться предупреждение. Для исправления необходимо нажать «module config» (отмечено красной стрелкой).

...и исправить путь к файлу.dansguardian (отмечено красным цветом)

После этого можно пользоваться системой.

Из всего многообразия настроек нас интересуют, в основном, две: настройка доступа к интернет (View/Edit System-Wide Lists) и настройка списков (View/Edit A Filter Group's Lists).

View/Edit System-Wide Lists, содержит черный список IP адресов и список исключений. Первый содержит перечень адресов, которым запрещен веб-доступ, для второго списка фильтрация не производится. Есть смысл включить в него машины преподавателей или иных сотрудников, которым требуется неограниченный доступ.

View/Edit A Filter Group's Lists содержит разрешающие и запрещающие списки фраз, заголовков страниц, URL, расширений файлов и т.п. За что отвечает тот или иной список, вполне понятно из их названия (правда, английского). Каждый список содержит описание и примеры записей, так что разобраться и добавить свои правила не особенно сложно.

После любых изменений в фильтрах не забываем перезагрузить их, нажав на ссылку «Reload DG Groups» в правом верхнем углу.

Дополнения

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

Во время подготовки статьи мы тестировали разные системы фильтрации. Ни одна из них не дала абсолютной защиты от «сомнительного» контента. При чем независимо от того, какая ОС, Windows или Linux, коммерческая система или бесплатная.

Еще одной проблемой являются национальные языки. В России для русского языка используется сейчас аж 3 кодировки. Подробнее о национальных особенностях настройки DansGuardian можно посмотреть на сайте http://interface31.ru в статье «DansGuardian. Сложности фильтрации русскоязычного контента».

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


Статья написана с использованием материала
«Ubuntu Server. Настраиваем контент-фильтр роутера (DansGuardian)»