Сервер контентной фильтрации на базе Debian 9 «Stretch»
Вопрос контентной фильтрации в образовательном учреждении остается все также на повестке дня и по сей день. Никто не снимал ответственность со школы за неисполнение Федерального закона от 29.12.2010 N 436-ФЗ (ред. от 29.06.2015) «О защите детей от информации, причиняющей вред их здоровью и развитию» . Поэтому в каждом образовательном учреждении назначается ответственный за информационную безопасность, которая включает в себя и ответственность за работу контентной фильтрации. Решить эту задачу можно разными способами. Один из таких — настройка сервера контентной фильтрации.
Работа в этом направлении разбивается на три этапа:
- Подготовка нормативной документации.
- Настройка сервера контентной фильтрации.
- Настройка ПК в локальной сети образовательного учреждения.
1. Подготовка нормативной документации
Этот этап очень важен, так как именно он будет определять правомерность действий ответственного лица при исполнении возложенных на него задач. Как только пакет документов разработан (посмотреть примеры можно здесь), можно переходить к наиболее сложному этапу — настройке сервера.
2. Настройка сервера контентной фильтрации
Ключевая роль сервера — обеспечение техническими и программными средствами выполнение 436-ФЗ. Сервер контентной фильтрации может физически располагаться где угодно, все зависит от того как специалист настроит сеть и обмен трафиком с сетью Интернет. Как организовать работу локальной сети можно прочитать здесь.
В качестве платформы для нашего сервера мы воспользуемся операционной системой Debian 9 «Stretch». Однако, так как у нас имеется сервер виртуальных машин на базе Proxmox, то для экономии ресурсов школы мы организуем работу сервера контентной фильтрации на базе контейнера. Такой подход позволит нам создавать снимки на ключевых этапах настройки и организовать периодическое бэкапирование сервера. Процесс разворачивания системы из контейнера достаточно прост и непродолжителен по времени.
После того как мы получим в распоряжение готовую систему — приступаем к ее настройке под наши нужды.
В нашем случае у виртуальной машины один сетевой адрес, в качестве DNS сервера укажем адреса Яндекс.DNS — семейный.
Еще один способ фильтрации трафика нам не повредит.
Позволим трафику свободно проходить через наш сервер. Для этого в файле /etc/sysctl.conf заменим строку net.ipv4.ip_forward=0 на net.ipv4.ip_forward=1
Если строчка закомментирована — то нужно будет раскомментировать её.
Для применения изменений необходимо перезагрузить систему или выполнить команду:
Не всем нравиться работать с конфигами в консоли, поэтому можно установить систему управления Webmin и администрировать сервер при помощи веб-интерфейса.
Находим пункт «Прокси-сервер Squid» и устанавливаем его:
После несложных настроек переходим в раздел «Управление доступом» и создаем ACL для нашей локальной сети или ее диапазона:
В нашем случае адрес имеет вид:
Сохраняем изменения и переходим на вкладку «Ограничения прокси»:
Добавляем наше правило в разрешенные и применяем изменения.
Переходим в консоль и скачиваем архив инсталяционного пакета программы для организации контентной фильтрации фильтрации Rejik. На момент написания статьи актуальная версия Редиректор 3.2.12 для squid версии 3.4 и старше.
Распаковываем архив и вносим изменения в файл Makefile:
SQUID_GROUP=proxy
Устанавливаем дополнительные пакеты:
#apt-get install gcc
#apt-get install libpcre3-dev
Собираем пакет и инсталлируем его:
#make install
Rejik будет установлен в директорию /usr/local/rejik3/
Во избежание проблем:
Открываем на редактирование конфиг Squid и в секцию url_rewrite_program вносим строку:
Пакет с первичной базой бан-листов можно, также, скачать с официального сайта. Но изначально Rejik настроена на фильтрацию по «черным» спискам, нас же интересует фильтрация по «Белым». Для этого в конфиге Rejik добавляем раздел <WHITELIST> и формируем его следующим образом:
url [веб-сервер]/whitelist.html
reverse
#log off
work_ip — правило для компьютерного класса. В него включена подсеть класса, работающего по «белым спискам»
url [веб-сервер]/whitelist.html — страница, для перенаправления в случае попытки перейти на адрес, не входящий в «белый» список.
Соответственно в директории /usr/local/rejik3/banlists должна находится директория whitelists, аналогичная banners.
Последний штрих.
«Заворачиваем» весь трафик на ПК в нашей сети на прокси-сервер:
После этого все запросы на ПК в локальной сети будут уходить на порт 3128 нашего сервера.
3. Настройка ПК в локальной сети образовательного учреждения.
В сетевых настройках подконтрольных ПК необходимо указать в качестве шлюза IP-адрес нашего сервера. А после того как мы «завернули» весь трафик на прокси-сервер, то пользователь не сможет выйти в сеть Интернет, пока не задаст в настройках браузера адрес прокси-сервера и его порт:
Итог
После всех проделанных действий мы получим рабочий вариант сервера контентной фильтрации на базе свободно-распространяемого программного обеспечения. Формирование «черных» списков можно по этой инструкции. А для «белых» списков, в качестве основы, можно взять здесь.
Приятной работы .
Источники:
- https://debian.pro/249
- http://qaru.site/questions/93174/error-building-fatal-error-pcreh-no-such-file-or-directory
- https://stackoverflow.com/questions/22555561/error-building-fatal-error-pcre-h-no-such-file-or-directory
- https://softnastroy.com/content/ustanovka-i-nastroyka-internet-shlyuza-na-debian-5-lenny-i-debian-6-squeeze-ispolzuya-squid-rejik-sams-sqstat-arno-firewall-iptables-chast-2.html
- https://medium.com/@alexander.bazhenov/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-webmin-virtualmin-gpl-%D0%B2-debian-6e4a42606086
- http://plutonit.ru/view_post.php?id=615
Хотелось бы узнать причину использования rejik? Доступ по «белым» спискам можно организовать и в самом Sqide
Выбор пал на rejik из-за более удобной настройки, чем у squid.
Скажите, пожалуйста, решается ли в рамках данного подхода вопрос с фильтрацией по HTTPS? Правильно ли я понимаю, что в данном случае реализуется концепция фильтрации по веб-адресам или по IP адресам тоже?
Вы предлагаете осуществлять фильтрацию через проксирование. Сам такой подход(встраивание промежуточного ПО между сервером и пользователем) по сути является «прослушкой» всех действий пользователя на сайтах и ответов соответствующих систем, т.е. можно узнать о пользователе и его, допустим переписках в соц. сетях, всё, включая пароли. Не исключение и, допустим, банковские системы. Их, конечно, можно заблокировать совсем(такие сайты), но возможны варианты, когда такие сведения отправляются из самого браузера(кешированные пароли, например). Поэтому нужно отмечать, что такой подход(проксирование) более применим к школьной технике, но для реализации парадигмы BYOD со школьным интернетом нужно решения большего количества юридических и технических проблем.
Напомню, что школа — это образовательное учреждение, финансирование которого производится государством. Такая организация не подразумевает использование канала доступа к сети Интернет в личных целях.