Перед современными родителями рано или поздно встаёт проблема регулирования отношений между ребенком и Internet. По-видимому, не существует единственного правильного подхода к её преодолению, однако, в моем понимании, он неизбежно комплексный и состоит из педагогического и, дополняющего его, технического компонентов. Найденное мной решение, программа e2guardian, позволяет существенно снизить вероятность случайной встречи ребенка с нежелательными материалами, а также подстраховать от непреднамеренной, но потенциально опасной активности (посещение фишинговых сайтов, скачивание инфицированых файлов).
Перед тем, как приступить к описанию моего опыта работы с программой, оговорюсь, что я не являюсь специалистом в сфере информационных технологий, поэтому буду особо признателен коментариям от людей, компетентных в данной области.
E2guardian является продолжением проекта DansGuardian, поэтому информацию, в том числе на Habr (ссылка, ссылка, ссылка), посвященную настройке DansGuardian во многом можно перенести и на e2guardian. К сожалению, DansGuardian не поддерживается с 2013 года, а официальный сайт был удален вместе с размещенными на нем материалами. В то же время информационное наполнение справочной системы e2guardian не настолько обширное, как его предтечи.
E2guardian работает под управлением ОС Linux, что ограничивает его применение в условиях как преобладания ОС Windows на персональных компьютерах, так и использования преимущественно мобильных устройств для доступа в Internet. Тем не менее, наличие выделенного proxy-сервера с настроенной аутентификацией пользователей (разработчики e2guardian рекомендуют использовать Squid, который может работать, например, совместно с Kerberos) и принудительным перенаправлением соединений всех локальных устройств на него (см. материал на Youtube), а также возможность установки в контейнер, позволяет существенно расширить диапазон использования e2guardian. В этой статье я рассмотрю только вариант локальной установки и базового конфигурирования программы под Debian 11.
Установка E2guardian
Версия программы 5.3.4 для Debian 11 присутствует в официальном репозитории (предполагается, что учетная запись, под которой будет работать ребенок имеет ограниченные права доступа, без возможности администрирования):
~$ sudo apt-get install e2guardian
При тестировании, однако, оказалось, что даже с рекомендованными настройками не работает фильтрация информации на русском языке. У версии с сайта разработчика (ссылка на момент написания статьи 5.4.5) этот недостаток был устранён.
В документации по DansGuardian большая часть информации относится к работе с HTTP, в то время, как сейчас в основном используется HTTPS. Это делает необходимым использование перехвата трафика (Man-In-The-Middle) с подменой сертификата. DansGuardian и e2guardian до версии 5 нуждались в прокси-сервере, однако сейчас программа справляется с этой задачей самостоятельно. Перед дальнейшей настройкой необходимо убедиться, что e2guardian скомпилирован с поддержкой MITM:
~$ sudo e2guardian -version | grep -i ‘enable-sslmitm=yes’
а также, что программа успешно запущена
~$ sudo service e2guardian status
и производит мониторинг заданных портов (по умолчанию 8080 и/или 8443)
~$ sudo netstat -lntup | grep e2guardian
или
~$ sudo ss -lnup | grep e2guardian
Далее используя openssl:
~$ sudo apt-get install openssl
генерируем приватный ключ для корневого CA сертификата,
~$ openssl genrca 4096 > private_root.pem
корневой CA сертификат (при вводе запрашиваемых данных в графе “Common name” следует ввести адрес прокси-сервера, который планируется использовать (в случае локальной установки без прокси-сервера — 127.0.0.1))
~$ openssl req -new -x509 -days 3650 -key private_root.pem -out my_rootCA.crt
и публичный ключ.
~$ openssl genrca > private_cert.pem
Cоздаем директорию для их хранения
~$ sudo mkdir -p /etc/e2guardian/ssl/cert
и копируем туда ключи и сертификат:
~$ sudo mv private_root.pem /etc/e2guardian/ssl ~$ sudo mv my_rootCA.crt /etc/e2guardian/ssl ~$ sudo mv private_cert.pem /etc/e2guardian/ssl
Владельцем директории устанавливаем пользователя и группу e2guardian:
~$ sudo shown -R e2guardian. /etc/e2guardian/ssl
Конфигурирование E2guardian
Программа имеет массу настроек, которые достаточно подробно описаны в соответствующих конфигурационных файлах. Я коснусь лишь тех из них, которые необходимы для корректной работы с сайтами на русском языке (см. источник). Также рекомендую не вносить все изменения одновременно, а последовательно изменяя указанные параметры, проверять работоспособность сервиса:
~$ sudo service e2guardian restart ~$ sudo service e2guardian status
В основном файле конфигурации:
~$ sudo nano /etc/e2guardian/e2guardian.conf
надо снять комментарии и модифицировать следующие параметры:
loglevel = 3
уровень 3 — документирование всех запросов
filterports = 8080
порт, мониторинг которого будет проводить e2guardian. На него необходимо перенаправить трафик в настройках прокси-сервера в Firefox.
weightedphrasemode = 1
параметр “1” означает, что при анализе страниц программа присваивает найденным в списках словах весовые коэффициенты, которые суммируются. При достижении порогового значения страница будет заблокирована. Параметр “2” означает блокирование страницы при единственном упоминании слов из списков на странице.
phrasefiltermode = 2
анализ страниц как вместе с разметкой, так и без неё.
preservecase = 2
фильтрация в два приема: первый раз — приведя все символы к нижнему регистру, а затем — используя оригинальное написание
hexdecodecontent = on
HEX кодировка всех символов для фильтрации страниц с разными кодировками. Необходим для корректной работы с символами, отличными от латиницы.
forcequicksearch = on
Замена стандартного алгоритма DFA, некорректно работающего с Unicode.
reverseaddresslookups = on
в случае указания в строке запроса браузера IP адреса программа проверяет его доменное имя и сверяет его со списками блокировки
maxcontentfiltersize = 2048
Установка размера фильтруемого документа. Используется как для предотвращения фильтрации больших бинарных файлов, ошибочно помеченых как текст, так и для страниц, имеющих большой размер (например, Youtube).
enablessl = on
Включение SSL,
cacertificatepath = '/etc/e2guardian/ssl/my_rootCA.crt'
заданные на предыдущем этапе пути к файлам сертификата,
caprivatekeypath = '/etc/e2guardian/ssl/private_root.pem'
публичного и
certprivatekeypath = '/etc/e2guardian/ssl/private_cert.pem'
частного ключей, а также
generatedcertpath = '/etc/e2guardian/ssl/generatedcerts'
путь к генерируемым сертификатам.
В случае использования прокси-сервера:
proxyip = XXX.XXX.XXX.XXX
proxyport = 3128
IP адрес и порт прокси-сервера.
Далее необходимо задать настройки для отдельных групп пользователей в файле e2guardianf1.conf. Я рассмотрю случай только для одной группы, но если групп несколько, соответствующие параметры указываются отдельно для каждой в файлах e2guardianf1.conf, e2guardianf2.conf и так далее, а также examplef1.story, examplef2.story. Кроме того необходимо настроить механизм аутентификации пользователей и внести информацию об их принадлежности к той или иной группе в файл etc/e2guardian/listsfiltergrouplist.
В файле
~$ sudo nano /etc/e2guardian/e2guardianf1.conf
необходимо снять комментарии и модифицировать следующие параметры:
указание путей к спискам фильтрации, в частности
bannedsitelist = '/etc/e2guardian/lists/bannedsitelist'
список сайтов, подлежащих блокировке (подробнее см. ниже),
bannedphraselist = '/etc/e2guardian/lists/bannedphraselist'
список слов, приводящих к немедленной блокировке страницы,
weightedphraselist = '/etc/e2guardian/lists/weightedphraselist'
список слов, оценивающихся по весовым коэффициентам (подробнее см. ниже),
exceptionphraselist = '/etc/e2guardian/lists/exceptionphraselist'
список слов, понижающих весовые коэффициенты.
textmimetypes = 'application/xhtml+xml,application/xml,application/json,application/javascript,application/x-javascript'
анализ данных, отличных от простых текстовых. Параметр необходим, например, для фильтрации запросов в некоторых поисковых системах.
fileextlist = 'name=bannedextension,messageno=900,path=/etc/e2guardian/lists/bannedextensionlist'
mimelist = 'name=bannedmime,messageno=800,path=/etc/e2guardian/lists/bannedmimetypelist'
типы файлов и данных, запрещенных к скачиванию
weightedphrasemode = 1
параметр задается для отдельных групп и превалирует над таковым файла e2guardian.conf,
naughtynesslimit = 50
пороговое значение, при превышении которого страница будет заблокирована
sslsiteregexplist = 'name=searchterms,path=/etc/e2guardian/lists/sslsiteregexplist'
принудительное переключение поисковых систем, в том числе Youtube, в режим безопасного поиска. К сожалению, не смотря на наличие семейного режима в Yandex (213.180.193.56), я не смог настроить e2guardian для работы с этим сервисом.
sslmitm = on
включение механизма MITM для SSL
mitmcheckcert = on
указание на проверку сертификатов при перехвате MITM
Настройка некоторых отдельных списков:
Список сайтов, запрещенных к просмотру:
~$ sudo nano /etc/e2guardian/lists/bannedsitelist
может содержать как непосредственно адреса блокируемых сайтов, так и ссылки на списки таких сайтов, размещенные в соответствующих директориях. Обновляемые черные списки для Dansguardian/e2guardian по различным тематикам можно найти по этому адресу.
Ограничение времени доступа также можно указать в этом файле. Стоит отметить, что указываемое время будет относиться ко всем ресурсам, отмеченным в bannedsitelist, что не всегда удобно. Обойти это затруднение можно разместив времена доступа и списки сооответствующих сайтов в дополнительных конфигурационных файлах. Например, для ограничения времени доступа к сайту https://www.loremipsum.com c 17:30 до 19:30 с понедельника по пятницу необходимо добавить в bannedsitelist строку
.Include</etc/e2guardian/lists/timedbannedsitelist1
затем создать соответствующий файл
~$ sudo nano /etc/e2guardian/lists/timedbannedsitelist1
и указать в нем время и ресурс (символ # перед time должен присутствовать)
#time: 17 30 19 30 01234
loremipsum.com
Список слов, оценивающихся по весовым коэффициентам
~$ sudo nano /etc/e2guardian/lists/weightedphraselist
Немного о правилах составления словарей, придерживаясь которых можно расширить охват нежелательных терминов, сохраняя приемлемый уровень ложноположительных срабатываний.
<комар>,<50> — добавляет +50 к сумме баллов оцениваемой страницы за каждое появление любого слова, содержащего “комар”, включая комариный, накомарник
< комар>,<50> — добавляет +50 к сумме баллов оцениваемой страницы за каждое появление любого слова, начинающегося с “комар”, например, комариный
< комар >,<50> — добавляет +50 к сумме баллов оцениваемой страницы за каждое появление слова “комар”, игнорируя остальные однокоренные слова.
В русскоязычном сегменте Internet еще иногда встречаются сайты, использующие кодировки отличные от UTF-8, поэтому списки слов для фильтрации следует создать сначала в UTF-8 и затем конвертировать их в KOI-8R и WIN1251:
~$ iconv -f UTF-8 -t WINDOWS-1251 weighted_russian_utf8 > weighted_russian_1251 ~$ iconv -c -f UTF-8 -t KOI8-R weighted_russian_utf8 > weighted_russian_koi8r
поместить созданные списки в соответствующие директории, например
~$sudo mv .weighted_russian_utf8/etc/e2guardian/lists/phraselists/badwords/weighted_russian_utf8 ~$ sudo mv.weighted_russian_1251/etc/e2guardian/lists/phraselists/badwords/weighted_russian_1251 ~$ sudo mv.weighted_russian_koi8r /etc/e2guardian/lists/phraselists/badwords/weighted_russian_koi8r
и указать к ним путь в weightedphraselist:
~$ sudo nano /etc/e2guardian/lists/weightedphraselist
#Bad Words - swearing
.Include</etc/e2guardian/lists/phraselists/badwords/weighted_russian_utf8>
.Include</etc/e2guardian/lists/phraselists/badwords/weighted_russian_koi8r>
.Include</etc/e2guardian/lists/phraselists/badwords/weighted_russian_1251>
Список слов, понижающих весовые коэффициенты
exceptionphraselist = '/etc/e2guardian/lists/exceptionphraselist'
где можно указать, например, что если на одной странице находятся слова “грудь” и “медицинский” то весовой коэффициент этого словосочетания будет отрицательным, в отличие от случая, когда последнее слово отсутствует.
< грудь ><10>
< грудь >,< медицинский ><-10>
Список сайтов, содержимое которых не фильтруется (белый список):
~$ sudo nano /etc/e2guardian/lists/exceptionsitelist
В этот список влючаются заведомо безопасные ресурсы, особенно те, перехват информации которых нежелателен (банковские сервисы и проч.). Стоит отметить, что задания только доменного имени сайта нередко оказывается недостаточно для предоставления полноценного доступа к нему. В некоторых случаях (например, Office365) производитель web-сервиса может предоставить список доменных имен, доступ к которым необходим для нормального функционирования сервиса. В остальных случаях URL адреса для сайтов, включаемых в белый список можно определить встроенными средствами Firefox: Firefox → Tools → Browser Tools → Web Developer Tools → Network monitor (Ctrl+Shift+E) доменные имена отображаются в поле Domain: копируем те из них, которые необходимы для нормальной работы рассматриваемого сайта.
Если, как правило, на первых порах работы с Internet, возникнет необходимось ограничения доступа в сеть только этим списком сайтов, то помимо собственно его составления, следует модифицировать файл
~$ sudo nano /etc/e2guardian/examplef1.story
убрав комментарии в следующих строках
function(checkblanketblock)
if(true,,502) return setblock
function(sslcheckblanketblock)
if(true,,506) return setblock
Теперь после всех внесенных изменений можно перезагрузить сервис e2guardian
~$ sudo e2guardian restart
и убедиться в его корректном функционировании.
~$ sudo e2guardian status ~$ sudo netstat -lntup | grep e2guardian
Конфигурирование Firefox (для версии >60)
(ссылка):
-
импортируем сертификат, созданный на предыдущем этапе: Firefox →Settings → Privacy and Security → Security → View Certificates → Import → выбрать my_rootCA.crt → Open
-
в директории
/usr/lib/firefox-esr/distributionсоздаем файлpolicies.json~$ sudo nano /usr/lib/firefox-esr/distribution/policies.json -
в котором настраиваем перенаправление соединений на соответствующий порт прокси-сервера и определяем правила доступа к функциям Firefox:
{ "policies": { "Proxy": { "Mode": "manual", "Locked": true, "HTTPProxy": "127.0.0.1:8080", "UseHTTPProxyForAllProtocols": true, "Passthrough": "<local>", "AutoLogin": false, "UseProxyForDNS": false }, "Certificates": { "ImportEnterpriseRoots": true } } }
Если настройка произведена верно, то после перезагрузки Firefox система мониторинга должна выдавать ожидаемые результаты.
Как можно заметить, конфигурирование гибкой системы анализа содержания web-страниц — достаточно времязатратное занятие. Помимо этого, нерешенными на момент написания этой статьи, остались следующие вопросы:
-
настройка работы e2guardian с антивирусным сканером clamd
-
установка запрета на регистрацию на различных сервисах (форумы, чаты)
-
настройка браузера, отличного от Firefox
-
переключение yandex.ru и mail.ru в защищенный режим поиска
Тем не менее, результат в сочетании с доступностью данного решения, по моему мнению, стоил потраченных усилий. Благодарю за внимание и буду рад продуктивным комментариям.
ссылка на оригинал статьи https://habr.com/ru/post/700108/
Добавить комментарий