Squid прозрачный прокси

Программный пакет squid - наиболее широко используемый в настоящее время прокси сервер, реализуемый на Linux. Отличается широким функционалом и достаточной сложностью конфигурации. Основной файл с настройками содержит около 4 000 строк. Конфигурация "squid прозрачный прокси" является популярной администраторской задачей - процесс будет рассмотрен в рамках данного материала.

настройка прокси сервера ubuntu, squid прозрачный прокси

Режимы работы SQUID и идентификация

Режимы работы: обычный, анонимный прокси сервер, SQUID прозрачный прокси

Прозрачный прокси (transparent) подразумевает отсутствие необходимости указывать на использование прокси со стороны клиента (в интернет-браузерах на клиентских компьютерах). Трафик со стандартных портов (80, 8080, 443) переадресуется на порт, на котором работает  SQUID.

Анонимный прокси сервер не предполагает авторизации. т.е. его может использовать кто-угодно в Интернете, знающий IP сервера, на котором установлено и сконфигурировано ПО.

SQUID поддерживает насколько способов идентификации пользователей - самый распространенный способ - по IP адресам

SQUID применяется в домашних и, чаще, корпоративных сетях для фильтрации трафика и установки ограничений на использование сетевых ресурсов. Также SQUID часто настраивается для возможности кэширования данных. Прокси серверы часто применяются в образовательных учреждениях: школах и ВУЗах.

Установка и базовая настройка SQUID

Сложность конфигурации squid, упомянутая ранее проявляется при необходимости выполнения программным продуктом специфических задач - многоуровневой фильтрации трафика по множеству правил.

Настройка же базового функционала довольно проста. Она и будет рассмотрена в рамках данного материала.

Устанавливаем необходимые пакеты стандартным способом - из репозитория

apt-get install squid squid-common

После установки с дефолтным конфигурационным файлом squid блокирует доступ в Интернет полностью.

В этом можно убедиться обратившись к какому-либо ресурсу в Интернете через браузер

Обращаемся к файлу, запускающему squid из консоли с ключом -v, таким образом мы сможем увидеть установленную версию программного пакета, в данном случае 3.2

/usr/sbin/squid -v

Делаем бэкап конфигурационного файла

cp /etc/sqid/squid.conf /etc/sqid/squid.conf.backup

Приступаем к редактированию файла

mcedit /etc/sqid/squid.conf

Находим закомментированную строку #TAG: visible_hostname, копируем visible_hostname и вставляем в тело конфига

#TAG: visible_hostname
visible_hostname remote-tech-support-ProxyServer

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

Аналогичным образом поступаем с переменной, определяющей e-mail администратора прокси сервера, он также будет отображаться на странице с ошибкой, клиенты компании смогут направить на него письма с вопросами относительно разумности ограничения доступа к определенному веб-сайту)

#TAG: cache-mgr
cache-mgr

Переходим непосредственно к конфигурации. Находим строки содержащие acl localnet, раскомментируем при необходимости и редактируем их определяя сети, на пользователей, принадлежащих к которым будут распространяться правила, устанавливаемые в настройках прокси сервера

acl localnet 192.168.0.0/24

Маску можно задавать непосредственно как это показано строкой выше, можно задавать в виде нулей

Например, при указании следующего адреса к прокси смогут использовать клиенты из всей сети 192.Х.Х.Х

acl localnet 192.0.0.0

В конфигурационном файле может быть задано множество правил - например, ограничение на возможность использования сервера по времени:

acl hours time S M T W H F A 2:00-20:00

После задания правила - его нужно активировать используя директивы allow или deny

http_access allow network hours

Включение кэширования в SQUID

Чтобы включить кэширование необходимо найти и раскомментировать следующую строку:

cache_dir ufs /var/spool/squid 100 16 256

100 здесь - размер буфера под кэш в Мб, его можно изменить, максимальное адекватное значение параметра 1/3 объема жесткого диска

Кэш будет храниться в /var/spool/squid. Необходимо убедиться в том, что каталог существует и SQUID имеет достаточно прав для того чтобы записывать в файлы, в нем размещающиеся информацию

Останавливаем прокси

/etc/init.d/squid stop

Даем команду на создание дерева директорий

squid -z

Снова запускаем сервис

/etc/init.d/squid start

du -sh /var/spool/squid

Если все сделано правильно вывод последней команды изначально должен показывать приблизительно 70 Мб, в дальнейшем размер каталога с кэшем, естественно, должен увеличиваться

Чтобы изображения на сайтах, посещаемых пользователями, обновлялись несколько быстрее используем следующую директиву - в ее синтаксисе зададим форматы файлов, которые будут считаться изображениями и будут обновляться чаще

refresh_pattern -i \.{gif|png|jpg|jpeg|ico}$ 3600    90%    43200

Также в конфиге присутствуют настройки безопасных портов - safe ports - портов, с которыми будет производиться работа и  SSL портов (настройка squid для работы по https является несколько более сложной задачей, чем разбираемая сейчас - она будет рассмотрена в рамках другой статьи). Настройки портов можно изменить.

acl SSL_ports port 443

Следующая директива запрещает доступ со всех портов, которые не определены в качестве безопасных

http_access deny !Safe_ports

Аналогично можно установить обязательность использования защищенного соединения - сейчас в тестовой среде директиву не применяем - здесь они приведена для примера

http_access deny CONNECT !SSL_ports

Разрешаем доступ служебному пользователю manager, это сделает возможным, в частности,  для него читать статистику - доступ даем только к localhost

http_access allow localhost manager

http_access deny manager

http_access allow localhost

Если необходимо быстро дать приостановить использование прокси можно раскомментировать одну из следующих строк конфига, закомментировав при этом все строки с ограничивающими доступ правилами

#http_access allow localnet

#http_access allow all

Раскомментировав forwarded_for off мы спрячем ip адреса клиентов от Интернета - в лог файлах будет фигурировать адрес прокси сервера - используется в анонимайзерах, сейчас оставим знак комментария

#forwarded_for off

Ограничим возможность получения трафика с определенных сайтов указав их подряд разделяя имена пробелами

acl block_websites dstdomain .badgirls.com .yahoo.com

Активируем правило

http_access deny block_websites

SQUID прозрачный прокси - настройка

В конфиге зададим IP адрес прокси сервера в локальной сети и порт на котором он работает (по умолчанию 3128). Адрес обязательно указывать только если используется более одного сетевого интерфейса

http_port 192.168.0.9:3128

Основная настройка завершена. Чтобы клиенты могли его использовать адрес прокси потребуется указать в браузере каждого клиента. Это может быть неудобно, необходимости выполнять данные действия можно избежать настроив прокси в качестве "прозрачного"

http_port 192.168.0.9:3128 intercept

Добавляем в строку параметр intercept, в squid версии до 3.1 - transparent

Конфигурация завершена - перезагружаем squid

/etc/init.d/squid restart

Проверяем статус службы

/etc/init.d/squid status

Настройка IPTABLES для работы в режиме "SQUID прозрачный прокси"

iptables-save

Просматриваем используемые правила

-A FORWARD -s 192.168.0.0/24 -p tcp -m multiport --ports 110,25,21 -j ACCEPT

-A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

Видим, что использование протоколов http, https не разрешается правилами iptables

Добавляем правило, позволяющее подключение по проту 3128

iptables -A INPUT -s 192.168.0.0/24 -p tcp -m multiport --ports 3128 -j ACCEPT

Делаем редирект с веб портов 80,8080 3128

iptables -t nat -A PRROUTING -s 192.168.0.0/24 -p tcp -m multiport --dports 80,8080 -j REDIRECT --to-ports 3128

Сохраняем конфигурацию

iptables-save

Заходим в браузер и проверяем - должен появиться доступ по http (не по https) ко всем сайтам, кроме запрещенных ранее конфигурацией.
Помимо SQUID прозрачное прокирование может быть нужно там, где требуется доступ к серверу по стандартному порту только для определенных IP адресов и по альтернативному для всех остальных.

Поиск:

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Цитата Сообщение от Amet13 Посмотреть сообщение

Сообщение от

https не поддерживается в прозрачном прокси


1. В Хроме адресная строка работает только как адресная, как поисковая не работает, вылетает "ошибка SSL" "не удалось подключиться к подлинному сайту". Если вводить корректный URL - хром работает нормально. В ФФ и ИЭ таких проблем нету. Если в Хроме поиском по умолчанию сделать другую поисковую систему (яндекс или мейл.ру) тоже проблем нету.
2. Сайт Фейсбук открывает только текст (фейсбук работает только через https).
3. Твиттер не открывается совсем (тоже работает только через https).
Уверен что есть еще что-то подобное, но пока не столнулся непосредственно.
Что твиттер что фейсбук мне не интересны, но очень хочется разобраться в чем проблема. А вот хром - другое дело, в нем работает вся контора. На что-то другое переучивать людей не получится.
Подозреваю, что крупные ИТ конторы используют какую-то хитрую систему шифрования, с которой мой фейковый сертификат не справляется.
Кто сталкивался, помогите разобраться с даной проблемой, или посоветуйте как по другому блокировать https трафик, когда нужно закрыть социальные сети. И желательно чтоб персонал имел минимум изменений при работе в броузере. Понимаю что костыли влекут за собой другие костыли, но как по другому выполнить задачу пока не знаю.
Заранее благодарен.
И я не верю в то, что никто из форумчан не пробовал использовать даный костыль

Несмотря на то, чтотаки удалось методом "костыля" ssl_bump фильтровать шифрованый трафик. 80 порт переведен на 3128, 443 на 3129. В сквиде включена подмена сетрификата сайта. Вобщем работает, но есть несколько неприятных моментов.1. В Хроме адресная строка работает только как адресная, как поисковая не работает, вылетает "ошибка SSL" "не удалось подключиться к подлинному сайту". Если вводить корректный URL - хром работает нормально. В ФФ и ИЭ таких проблем нету. Если в Хроме поиском по умолчанию сделать другую поисковую систему (яндекс или мейл.ру) тоже проблем нету.2. Сайт Фейсбук открывает только текст (фейсбук работает только через https).3. Твиттер не открывается совсем (тоже работает только через https).Уверен что есть еще что-то подобное, но пока не столнулся непосредственно.Что твиттер что фейсбук мне не интересны, но очень хочется разобраться в чем проблема. А вот хром - другое дело, в нем работает вся контора. На что-то другое переучивать людей не получится.Подозреваю, что крупные ИТ конторы используют какую-то хитрую систему шифрования, с которой мой фейковый сертификат не справляется.Кто сталкивался, помогите разобраться с даной проблемой, или посоветуйте как по другому блокировать https трафик, когда нужно закрыть социальные сети. И желательно чтоб персонал имел минимум изменений при работе в броузере. Понимаю что костыли влекут за собой другие костыли, но как по другому выполнить задачу пока не знаю.Заранее благодарен.И я не верю в то, что никто из форумчан не пробовал использовать даный костыль

1

Эскимосы никогда не делают то, что считают рискованным.