Squid - блокируем потоковое мультимедиа.

  • Автор:

squid-mime-000.jpg

Последнее время перед администраторами все чаще встает вопрос блокирования потокового мультимедиа. Особенностью данного типа содержимого является то, что оно может быть встроено на страницы самых разных ресурсов и применяя метод блокировки по URL мы не получим никакого результата, разве что заблокируем пол интернета. Поэтому самое время вспомнить о стандарте MIME, который описывает типы данных передаваемых по сети интернет, а также о широких возможностях списков доступа (ACL) прокси-сервера squid.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

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

Для того, чтобы веб-приложения понимали с какого рода данными имеют дело, тип содержимого явным образом указывается в заголовках. Я думаю каждый встречался с ситуацией, когда при попытке скачать что-либо, вместо файла получал страницу с непонятными символами, это как-раз пример неправильного указания MIME-типа. Из этого вытекает вполне логичный способ фильтрации на основании содержимого. При этом мы можем блокировать не только мультимедийный контент, но и вообще содержимое любого описанного стандартом типа.

Для работы с MIME-типами squid имеет соответствующие виды ACL-записей. В нашем случае будет использоваться опция rep_mime_type, которая позволяет анализировать MIME-типы в ответах на пользовательские запросы.

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

Допустим мы поставили первоочередной целью блокирование видео с Youtube. Поэтому посетим указанный сайт и посмотрим какой нибудь ролик.

squid-mime-001.jpgТеперь открываем /var/log/squid3/access.log и ищем записи, соответствующие нашему посещению. Лучше всего делать это когда нагрузка на сеть невелика. Обращаем внимание на тип содержимого в конце строк, в котором будет интересующий нас MIME-тип. Таких в данном случае два: audio/mp4 и video/mp4.

squid-mime-002.jpgЗатем переходим в /etc/squid3/squid.conf и добавляем следующие ACL, которым для понятности дадим имя youtube:

acl youtube rep_mime_type -i ^audio/mp4$
acl youtube rep_mime_type -i ^video/mp4$

В секции правил, перед правилом

http_access allow localnet

добавим:

http_reply_access deny youtube all

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

acl office src 192.168.31.101-192.168.31.199

и измените правило следующим образом:

http_reply_access deny youtube office

Перезапускаем squid (в нашем случае squid3)

service squid3 restart

и убеждаемся, что "кина не будет".

squid-mime-003.jpgСамое время перейти к другим видеохостингам. Взятые нами для примера Rutube и Dailymotion, как ни в чем не бывало показывают видео. Точно также смотрим несколько роликов и идем в лог доступа. Там находим новые типы содержимого: video/x-f4f для Rutube и video/x-flv для Dailymotion. Создаем для них ACL-правила:

acl youtube rep_mime_type -i ^video/x-f4f$
acl youtube rep_mime_type -i ^video/x-flv$

Сохраняем, перезапускаем squid, любуемся полученным эффектом:

squid-mime-004.jpgАналогично поступаем и с онлайн-радио, так популярный портал tunein использует поток типа audio/mpeg, добавим его в правила и радио в сети больше не послушать:

squid-mime-005.jpgКак видим ничего сложного. Но есть один момент. Тот-же Google предоставляет доступ к своим сервисам по HTTPS, который не обрабатывается squid и, следовательно, наши фильтры работать не будут. Поэтому стоит запретить доступ к таким сайтам через защищенный протокол:

Для этого в /etc/nat (или в ваши правила iptables), перед правилом # Разрешаем доступ из внутренней сети наружу добавим:

iptables -A FORWARD -p tcp --dport 443 -m string --string "youtube" --algo kmp --to 65535 -j REJECT

Перезагружаем сервер, проверяем. Если все сделано правильно, то доступ к Youtube в обход прокси-сервера станет невозможным.

Однако следует помнить, что наша цель - это не блокировка Youtube, это можно сделать гораздо проще, а блокировка именно содержимого - потокового видео, которое может быть встроено в любой сайт, в т.ч. содержащий нужный контент.

Дополнительные материалы:


  1. Linux. Настройка роутера (NAT + DHCP + Squid)
  2. Ubuntu Server. Настраиваем роутер NAT + DHCP + Squid3
  3. Ubuntu Server. Настраиваем контент-фильтр роутера (DansGuardian)
  4. DansGuardian. Сложности фильтрации русскоязычного контента
  5. Ubuntu Server. Настраиваем антивирусный фильтр роутера (ClamAV)
  6. Ubuntu Server. Дополняем контент-фильтр роутера антивирусом (DansGuardian + ClamAV)
  7. Ubuntu Server. Настраиваем форвардинг портов на роутере
  8. Ubuntu Server. Настраиваем аутентификацию через Squid
  9. Ubuntu Server. Ограничиваем скорость клиентов через Squid
  10. SARG - анализируем логи прокси-севера Squid
  11. SAMS - веб-интерфейс для управления Squid и не только
  12. Squid - настраиваем URL-фильтрацию по спискам
  13. Squid - блокируем потоковое мультимедиа
  14. Как устроена и работает система контроля доступа в Squid
  15. Настраиваем Squid для работы с Active Directory. Часть 1 - базовые настройки
  16. Настраиваем Squid для работы с Active Directory. Часть 2 - Kerberos-аутентификация
  17. Настраиваем Squid для работы с Active Directory. Часть 3 - Авторизация на основе групп AD
  18. WPAD или автоматическая настройка параметров прокси
  19. Устраняем ошибки Windows Update при работе через прокси-сервер Squid
  20. Настраиваем ограничение скорости для пользователей в Squid
  21. Сборка Squid 3.5 с поддержкой SSL из исходных кодов для Debian / Ubuntu
  22. Настраиваем роутер NAT + DHCP + Squid3 с поддержкой фильтрации SSL-трафика

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.


Loading Comments