Сервер контентной фильтрации на базе Debian 9 «Stretch»

Вопрос контентной фильтрации в образовательном учреждении остается все также на повестке дня и по сей день. Никто не снимал ответственность со школы за неисполнение Федерального закона от 29.12.2010 N 436-ФЗ (ред. от 29.06.2015) «О защите детей от информации, причиняющей вред их здоровью и развитию» rtfm . Поэтому в каждом образовательном учреждении назначается ответственный за информационную безопасность, которая включает в себя и ответственность за работу контентной фильтрации.  Решить эту задачу можно разными способами. Один из таких — настройка сервера контентной фильтрации.

Работа в этом направлении разбивается на три этапа:

  1. Подготовка нормативной документации.
  2. Настройка сервера контентной фильтрации.
  3. Настройка ПК в локальной сети образовательного учреждения.
1. Подготовка нормативной документации

Этот этап очень важен, так как именно он будет определять правомерность действий ответственного лица при исполнении возложенных на него задач. Как только пакет документов разработан (посмотреть примеры можно здесь), можно переходить к наиболее сложному этапу — настройке сервера.

2. Настройка сервера контентной фильтрации

Ключевая роль сервера — обеспечение техническими и программными средствами выполнение 436-ФЗ. Сервер контентной фильтрации может физически располагаться где угодно, все зависит от того как специалист настроит сеть и обмен трафиком с сетью Интернет. Как организовать работу локальной сети можно прочитать здесь.

В качестве платформы для нашего сервера мы воспользуемся операционной системой Debian 9 «Stretch». Однако, так как у нас имеется сервер виртуальных машин на базе Proxmox, то для экономии ресурсов школы мы организуем работу сервера контентной фильтрации на базе контейнера. Такой подход позволит нам создавать снимки на ключевых этапах настройки и организовать периодическое бэкапирование сервера. Процесс разворачивания системы из контейнера достаточно прост и непродолжителен по времени. 

После того как мы получим в распоряжение готовую систему — приступаем к ее настройке под наши нужды.

В нашем случае у виртуальной машины один сетевой адрес, в качестве DNS сервера укажем адреса Яндекс.DNS — семейный

Яндекс.DNS для CT

Еще один способ фильтрации трафика нам не повредит.

Позволим трафику свободно проходить через наш сервер. Для этого в файле /etc/sysctl.conf заменим строку net.ipv4.ip_forward=0 на net.ipv4.ip_forward=1
Если строчка закомментирована — то нужно будет раскомментировать её.

Для применения изменений необходимо перезагрузить систему или выполнить команду: 

#sysctl -p

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

Находим пункт «Прокси-сервер Squid» и устанавливаем его:

Webmin - Прокси-сервер Squid

После несложных настроек переходим в раздел «Управление доступом» и создаем ACL для нашей локальной сети или ее диапазона:

ACL - адрес клиента

 

В нашем случае адрес имеет вид:

 

Редактирование ACL

 

Сохраняем изменения и переходим на вкладку «Ограничения прокси»:

 

Ограничения прокси

 

Добавляем наше правило в разрешенные и применяем изменения. 

Переходим в консоль и скачиваем архив инсталяционного пакета программы для организации контентной фильтрации фильтрации Rejik. На момент написания статьи актуальная версия Редиректор 3.2.12 для squid версии 3.4 и старше.

#wget https://rejik.ru/download/redirector-3.2.12_squid_3.4.tgz

Распаковываем архив и вносим изменения в файл Makefile:

SQUID_USER=proxy
SQUID_GROUP=proxy

Устанавливаем дополнительные пакеты:

#apt-get install make
#apt-get install gcc
#apt-get install libpcre3-dev

Собираем пакет и инсталлируем его:

#make
#make install

Rejik будет установлен в директорию /usr/local/rejik3/

Во избежание проблем:

#chown -R proxy:proxy /usr/local/rejik3

Открываем на редактирование конфиг Squid и в секцию url_rewrite_program вносим строку:

url_rewrite_program /usr/local/rejik3/redirector /usr/local/rejik3/redirector.conf

Пакет с первичной базой бан-листов можно, также, скачать с официального сайта.  Но изначально Rejik настроена на фильтрацию по «черным» спискам, нас же интересует фильтрация по «Белым». Для этого в конфиге Rejik добавляем раздел <WHITELIST> и формируем его следующим образом:

work_ip [диапазон ip адресов, на которые распространяется правило]ban_dir /usr/local/rejik3/banlists/whitelists
url [веб-сервер]/whitelist.html
reverse
#log off

work_ip — правило для компьютерного класса. В него включена подсеть класса, работающего по «белым спискам»

url [веб-сервер]/whitelist.html — страница, для перенаправления в случае попытки перейти на адрес, не входящий в «белый» список.

Соответственно в директории /usr/local/rejik3/banlists должна находится директория whitelists, аналогичная banners.

Последний штрих.

«Заворачиваем» весь трафик на ПК в нашей сети на прокси-сервер:

#iptables -t nat -A PREROUTING -s [наша сеть/маска] -p tcp -m multiport —dport 80,443,8080 -j REDIRECT —to-port 3128

После этого все запросы на ПК в локальной сети будут уходить на порт 3128 нашего сервера.

3. Настройка ПК в локальной сети образовательного учреждения.

В сетевых настройках подконтрольных ПК необходимо указать в качестве шлюза IP-адрес нашего сервера. А после того как мы «завернули» весь трафик на прокси-сервер, то пользователь не сможет выйти в сеть Интернет, пока не задаст в настройках браузера адрес прокси-сервера и его порт:

Squid - настройка Firefox

Итог

После всех проделанных действий мы получим рабочий вариант сервера контентной фильтрации на базе свободно-распространяемого программного обеспечения.   Формирование «черных» списков можно по этой инструкции. А для «белых» списков, в качестве основы, можно взять здесь

Приятной работы smile .

 

Источники:

 

5 thoughts on “Сервер контентной фильтрации на базе Debian 9 «Stretch»

  • 03.07.2019 в 23:20
    Permalink

    Хотелось бы узнать причину использования rejik? Доступ по «белым» спискам можно организовать и в самом Sqide

    Ответ
  • 15.07.2019 в 13:33
    Permalink

    Скажите, пожалуйста, решается ли в рамках данного подхода вопрос с фильтрацией по HTTPS? Правильно ли я понимаю, что в данном случае реализуется концепция фильтрации по веб-адресам или по IP адресам тоже?

    Ответ
  • 15.07.2019 в 14:01
    Permalink

    Вы предлагаете осуществлять фильтрацию через проксирование. Сам такой подход(встраивание промежуточного ПО между сервером и пользователем) по сути является «прослушкой» всех действий пользователя на сайтах и ответов соответствующих систем, т.е. можно узнать о пользователе и его, допустим переписках в соц. сетях, всё, включая пароли. Не исключение и, допустим, банковские системы. Их, конечно, можно заблокировать совсем(такие сайты), но возможны варианты, когда такие сведения отправляются из самого браузера(кешированные пароли, например). Поэтому нужно отмечать, что такой подход(проксирование) более применим к школьной технике, но для реализации парадигмы BYOD со школьным интернетом нужно решения большего количества юридических и технических проблем.

    Ответ
    • 18.07.2019 в 09:01
      Permalink

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

      Ответ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой:

Мы в соцсетях

  • RSS