суббота, 14 мая 2011 г.

Родительский контроль на Ubuntu (Dansguardian + Privoxy)

Скажу сразу, я непоколебимо придерживаюсь мнения, что Ubuntu вполне себе подходить на роль user-friendly десктопной операционной системы. Для многих читателей хабра это не новость, однако есть еще сомневающиеся, поэтому позицию по данному вопросу я должен был озвучить.

Соответственно, считаю, что при покупке компьютеров и ноутбуков на стоимости лицензионной Windows вполне можно сэкономить, поставив бесплатную (открытую) ОС (вспомните, сколько лет 5 назад продавалось ноутов с Linux, и сколько сейчас).

Детям я купил неттоп Acer Aspire Revo R3700, который, наверное, сам по себе стоит отдельного обзора (двухъядерный Atom + Ion2), прикрутил его сзади к монитору, благо оба поддерживают стандарт крепления VESA (получился этакий компактный моноблок), снес предустановленный Linpus и поставил Ubuntu 10.10

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

Единственное, что удручало, это баннеры на различных, даже детских (!), сайтах со всякими "сиське, жопэ" ((с) Равшан из "Нашей Раши"), а вот от этого очень хотелось детей оградить.


Во-первых, постигло разочарование, когда узнал, что встроенного (штатного) родительского контроля в Ubuntu попросту нет. В Windows Vista и 7 - есть, есть много отдельных виндовых программ, например, Интернет Цезор (пробовал под Windows в свое время, в принципе, остался доволен).

А вот в Ubuntu с этим туго. Наткнулся в репозитарии на Gnome Nanny - поставил, обплевался. Во-первых, бета, во-вторых - не работает. Выскакивают грозные предупреждения, что сейчас отключится интернет и выключится компьютер, но.... ничего не происходит. Возможно, расчет был на сознательность детей, хотя, скорее, я просто не разобрался. правда, делал все по мануалу, а тратить недели на выяснение причин не хотелось.

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

Коротко о том, как построена моя домашняя сеть: есть роутер D-Link Dir-615, к нему по сетевому кабелю подключен основной домашний комп, а также медиаплеер Popcorn Hour A-110, по Wi-Fi - детский неттоп, iPad, нетбук, ноутбук, парочка смартфонов на андроиде, еще один медиаплеер WD TV Live и... вроде бы все.

Возвращаясь к проблеме родительского контроля: наткнулся на программу под название Dansguardian, почитал, подумал, решил ставить.

Для экспериментов достал старенький EEE PC 701 4G (справочно, может, кто не знает: цифра перед G означает всего лишь "ёмкость встроенной памяти (твердотельный накопитель) в гигабайтах"), поставил на него Lubuntu 10.10 (кстати, Лубунту порадовала - нетребовательна к ресурсам, потому быстрая, привычная для тех, кто "после Windows", все железо заработало буквально "из коробки"):



После этого завел две учетные записи, одну [kid] (в квадратных скобках здесь и далее - обозначение учетной записи, которое вы можете выбрать по своему вкусу, где kid - учетная запись ребенка, parent - учетная запись родителя). [kid] - с правами пользователя, [parent] - с правами администратора.

Заходим под учетной записью ребенка, открываем терминал ("Пуск" (хехе, а как иначе назвать кнопку на таскбаре в левом нижнем углу?) -> Стандартные -> LXTerminal)

Набираем (естественно, без квадратных скобок):su [parent]
Ввводим пароль. Далее:

sudo apt-get install -y privoxy dansguardian

Вводим пароль, следуем подсказкам на экране, после чего у вас должны поставиться, как Вы догадались, Dansguardian и Privoxy (нетяжелый прокси-сервер - через него, собственно, и будет работать Dansguardian).

Далее, на всякий случай, можно проверить, запущен ли privoxy, командой sudo /etc/init.d/privoxy status

После этого надо настроить установленные программы, для этого правим конфигурационные файлы:

sudo leafpad /etc/privoxy/config

Ищем строку listen-address, приводим ее к следующему виду (не забываем убирать знак комментария #):

listen-address 127.0.0.1:8118

Ищем параметр accept-intercepted-requests и присваиваем ему значение 1:

accept-intercepted-requests 1

Всё, настройка прокси privoxy закончена, сохраняемся, выходим.

Далее настраиваем сам dansguardian:

sudo leafpad /etc/dansguardian/dansguardian.conf

В самом начале файла написано, что надо удалить строку UNCOMMITED, чтобы настройки вступили в силу. Удаляем ее. Далее ищем незакомментированную строку, начинающуюся со слова language и меняем ее:

language = 'russian-1251'

Это нужно, чтобы страница с шаблоном "Доступ запрещен" была на русском языке.

Ищем и меняем следующие строки (если в файле прописано по умолчанию так же, то менять, естественно, не нужно):


filterport=8080

proxyip=127.0.0.1

proxyport-8118



Сохраняем, закрываем. Далее перезапускаем обе проги:

sudo service dansguardian force-reload
sudo service privoxy force-reload


Далее запускаем браузер по умолчанию Chromium, заходим на какой-нить playboy.com и видим.... что он успешно грузится как и раньше! Чтобы не рвать волосы на голове, читайте дальше:

Так и должно быть, потому что мы не поменяли в браузере настройки прокси-сервера. Привычными кликами заходим в расширенные настройки Chromium ("Ведь это тот же Хром!") и видим удручающую картину:



Все правильно, в Lubuntu нет "гуёвого" интерфейса настройки прокси-сервера. Как временное решение, пишем в терминале:

sudo chromium-browser --proxy-server=127.0.0.1:8080

Запустится браузер, зайдем на playboy.com и увидим такую картинку:



Урра! Но радость омрачается тем, что если мы перезапустим браузер, то настройки прокси слетят, а это не вариант. Да и ребенок, позврослев, научится обходить прокси-сервер, поставив какой-нибудь Firefox и убрав галочку напротив пункта "использовать настройки прокси-сервера". Значит нужен более надежный вариант.

И вот тут нам на помощь приходят iptables и ufw. Скажу сразу, что оставшиеся мои волосы чуть не поседели, пока дошел до правильных настроек всего этого хозяйства.

Итак, ufw (Uncomplicated Firewall) в Lubuntu включен по умолчанию. Потому выполняем следующее:

sudo leafpad /etc/ufw/before.rules

В конце файла , после COMMIT, со следующей строки вставляем такие строки:


# Rules for Dansguardian + Privoxy

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A OUTPUT -p tcp -m tcp --dport 80 -m owner --uid-owner root -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -m owner --uid-owner [parent] -j REDIRECT --to-port 8118
-A OUTPUT -p tcp -m tcp --dport 8118 -m owner ! --uid-owner dansguardian -j REDIRECT --to-port 8080
-A OUTPUT -p tcp -m tcp --dport 80 -m owner ! --uid-owner privoxy -j REDIRECT --to-port 8080

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT




Сохраняем, закрываем, перезапускаем:


sudo ufw disable && sudo ufw enable


Все, теперь смышленый ребенок не сможет обойти прокси.

Дальше над чем стоит поработать:



  • настроить под себя страницу с шаблоном "Доступ запрещен" (например, найти забавную картинку со Смешариками и написать более жизнерадостный текст, что заходить на этот сайт "Низзя!")
  • прошерстить внимательно каталог с dansguardian - там все подробно написано в комментариях в файлах, как и что настраивать
  • научиться составлять список плохих слов на русском (у dansguardian вроде как плохо с кодировками, отличными от utf-8, судя по форумам)
  • желательно найти уже в сети готовые списки плохих русских слов (чтобы не составлять самому и не изощряться в матерном языке)


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

С нетерпением жду комментариев - где, как не в них можно почерпнуть дополнительную полезную информацию, узнать много нового и как можно было сделать то же самое, только проще и лучше. Статью написал, в первую очередь, для себя (чтобы можно было зайти на Хабр и сверить подзабытые настройки) и для тех, кто так же, как и я, мучается с родительским контролем в Ubuntu.

При настройке dansguardian и privoxy очень помогли следующие материалы:

How to transparent proxy
Ubuntu Documentation > Community Documentation > UFW
ну и Dansguardian Documentation

Комментариев нет:

Отправить комментарий