Как заблокировать определенные сайты в squid?

Сообщения
765
#1
Установил squid, согласно этой статье. Потом с правами root создал файл /etc/squid/blockwebsites.lst . В файле /etc/squid/squid.conf поместил в конце эти строки:
acl blocksitelist dstdomain "/etc/squid/blockwebsites.lst"
http_access deny blocksitelist


В файл /etc/squid/blockwebsites.lst поместил строки:
acl blockkeyword1 url_regex youtube
http_access deny blockkeyword1


Затем выполнил команду systemctl restart squid

Но сайт youtube по прежнему запускается на компе. Что я сделал неправильно?
 

oko

New member
Сообщения
1 257
#2
В общем конфиге squid.conf прописываются правила фильтрации в формате acl уникальное_имя_фильтра тип_проверки "путь_к_файлу_перечню" и далее http_access действие уникальное_имя_фильтра (основные действия: deny - запрещать, allow - разрешать). А вот в "файл_перечне" уже прописываются конкретные позиции блокируемых (или наоборот разрешенных) ресурсов. Подробнее...
Итого:
  1. тип_проверки может принимать одно из нескольких значений. В частности, dstdomain предполагает, что в "файл-перечне" будут приведены имена конкретных DNS-доменов. Т.е в вашем случае для Youtube в вашем /etc/squid/blockwebsites.lst должна быть запись типа youtube.com (и все, никаких acl blockkeyword1 url_regex youtube, http_access deny blockkeyword1 - это конструкции для squid.conf, а не для файл-перечня, и в вашем случае избыточные). Будут ли при этом в данное правило попадать все вариации с поддоменами (например, m.youtube.com, www.youtube.com и т.п.) - не в курсе, надо проверять...
  2. У себя использую блокировку по параметру dstdom_regex или urlpath_regex. Они более гибкие и позволяют, при равных прочих, запретить доступ к общему телу сайта (например, blablabla.ru), но разрешить к его поддоменам (например, account.blablabla.ru) или подразделам (например, blablabla.ru/path/). Оба предусматривают записи в формате регулярных выражений (например, так: ^http.*\.youtube\.com/.*$). Однако, стоит помнить, что регулярки в Squid отличаются от обычных regexp-конструкций. И, как показывает практика, от версии к версии Squid могут работать иначе, чем хотелось бы...
  3. Это все не имеет значения, если ваш Squid работает в "прозрачном" режиме (transparent или intercept). Тогда HTTPS-трафик (HTTP с SSL-шифрованием, которого сейчас большинство в Сети), попадающий на Squid, либо не будет обрабатываться вообще, либо не будет блокироваться. Потому что все приведенные acl по умолчанию нацелены на HTTP-трафик. И для решения этой проблемы нужно либо "натравливать" приложения клиента на Squid непосредственно ("непрозрачный режим", т.е. указание адреса и порта прокси-сервера Squid в том же браузере клиента и для HTTP, и для HTTPS-трафика в явном виде). Либо мутить примочки с SSL-Bump. Причем либо с подменой сертификатов и "законным" MiTM-методом (когда самоподписанный сертификат для Squid добавляется в доверенный список сертификатов на каждом устройстве или вообще в каждом клиентском приложении, как в случае c Firefox), либо с размещением Squid непосредственно на шлюзе доступа к Сети из локальной сети и перенаправлением трафика на его порты средствами того же iptables/netfilter.
  4. В приведенной вами статье вопросы проксирования и фильтрации трафика на L7 рассмотрены крайне поверхностно. Гуглите более полные и вменяемые гайды под свою версию Squid (да, они различаются в деталях) и обрящите, ага...
 
Сообщения
765
#3
тип_проверки может принимать одно из нескольких значений. В частности, dstdomain предполагает, что в "файл-перечне" будут приведены имена конкретных DNS-доменов. Т.е в вашем случае для Youtube в вашем /etc/squid/blockwebsites.lst должна быть запись типа youtube.com (и все, никаких acl blockkeyword1 url_regex youtube, http_access deny blockkeyword1 - это конструкции для squid.conf, а не для файл-перечня, и в вашем случае избыточные). Будут ли при этом в данное правило попадать все вариации с поддоменами (например, m.youtube.com, www.youtube.com и т.п.) - не в курсе, надо проверять...
Прописал в файле /etc/squid/blockwebsites.lst youtube.com удалив все остальное, перезапустил systemctl restart squid не помогает. Прописал в нем https://www.youtube.com/ и перезапустил. Результат тот же. Страничка по прежнему запускается. Я просто как начинающий путаюсь. Может чего упустил? Читаю статьи но пока сложно. Просто приведите мне пример с запрета youtube как с регулярным выражением названия а там я попробую разобраться сам. В файле то /etc/squid/squid.conf я все сделал правильно? Еще попробовал в файле /etc/squid/blockwebsites.lst а так же в файле /etc/squid/squid.conf написать такие строки:
acl youtube1 dstdomain youtube.com
http_access deny youtube1
http_access allow all

(и перезапустил естественно)
Не помогло.
 
Последнее редактирование:

oko

New member
Сообщения
1 257
#4
Еще раз:
  1. Вначале убедитесь, что схема размещения вашего прокси-сервера и направления трафика на него позволяет Squid принципиально оперировать HTTPS-трафиком. Потому что подключение к тому же youtube.com происходит исключительно по HTTPS-протоколу, а не HTTP, для которого когда-то разрабатывалась директива acl в составе Squid...
  2. Далее, юзайте проверки типа dstdom_regex или urlpath_regex. Для dstdom_regex пример регулярки именно для youtube.com уже привел. Дальше читайте соответствующие мануалы, причем лучше всего на сайте проекта Squid, а не в чьих-то блогах и т.п. местах...
  3. Настройте вменяемое логирование Squid и определяйтесь по access.log и cache_access.log, что конкретно идет не так и с какими кодами. Гуглите коды, ищите решение под свою ситуацию...
 
Сообщения
765
#5
Еще раз:
  1. Вначале убедитесь, что схема размещения вашего прокси-сервера и направления трафика на него позволяет Squid принципиально оперировать HTTPS-трафиком.
А как это сделать? Мне как начинающему это еще непонятно. Нашел вот статью. Попробую пока по ней.
 
Последнее редактирование:

oko

New member
Сообщения
1 257
#6
Без обид, но вы начинающий уже который год подряд. Пора с этим завязывать, ага...
И да, простые мануалы в стиле "примеры действий для конкретного результата" лучше брать не на losst.pro, а хотя бы на dmosk.ru - Дима весьма грамотно излагает основы и объясняет смысл действий (не реклама, если что)...
А для базовых сетевых вещей есть xgu.ru. И вам, imho, стоит начать именно с этого, потому что без систематизации данных по сетям, модели ISO/OSI (или хотя бы TCP/IP), коммутации и маршрутизации (хотя бы без динамики, без туннелей - GRE, BGP и вот это все) лезть в фильтрацию и проксирование бессмысленно. Про Squid там тоже весьма неплохо вводная часть описана...
 
Сообщения
765
#7
Без обид, но вы начинающий уже который год подряд. Пора с этим завязывать, ага...
В чем то опытный а в чем то полный ноль. В некоторых вещах уже есть опыт но даже он порой забывается. Поэтому с завязыванием бывает непросто но стараюсь. Нашел у Димы статью интересную. Спасибо что подсказали. Почитаю как будет время.
 
Последнее редактирование: