Меню

Прокси сервер на linux squid настройка



Установка и настройка прокси-сервера Squid

Squid – самый популярный HTTP-прокси сервер для кэширования и перенаправления. Он широко используется различными компаниями для кэширования веб-страниц с веб-сервера для повышения скорости работы последнего, снижения времени ответа и ограничения использования пропускной способности сети. В данном руководстве мы рассмотрим установку прокси-сервера squid и его использование в качестве HTTP-прокси сервера.

Установка прокси-сервера Squid

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

Пакет Squid доступен в стандартном репозитории
В Ubuntu/Debian

Запустите его и задайте запуск при загрузке:

После этого можно проверить статус службы:

Важные файлы Squid располагаются в следующих директориях:

Файл конфигурации: /etc/squid/squid.conf
Журнал доступа: /var/log/squid/access.log
Журнал кэша: /var/log/squid/cache.log

Файл конфигурации по умолчанию содержит ряд директив, при помощи которых осуществляется управление работой сервера. Для внесения изменений откройте файл любым текстовым редактором.

В нем довольно много параметров, мы рассмотрим самые важные из них.

http_port порт HTTP-прокси сервера, по умолчанию 3128. Для безопасности рекомендуется сменить его на другой.
visible_hostname Параметр используется для определения имени узла сервера Squid. Можно задать любое имя.

Также можно указать параметр intercept (или transparent для старых версий), например, http_port 3128 intercept. В этом случае ваш сервер будет работать как прозрачный прокси (без необходимости настраивать его использование на стороне клиента).

Для последующего понимания работы прокси, нужно понять следующие параметры

http_access-Данный параметр регулирует доступ к HTTP-прокси серверу. С помощью него можно разрешить или запретить доступ через сервер как к определенным ресурсам в интернете, так и определенным группам пользователей.
В данный момент любой доступ запрещен (deny all). Чтобы начать использование сервера, нужно изменить ее, например, на http_access allow all (разрешить любой доступ). Параметр all можно заменить на имя списка доступа, которые мы рассмотрим чуть ниже.
acl(access control list) — В этом параметре указываются ресурсы в интернете, порты, ip адреса пользователей, локальные сети. В общем это список к которому будут применяться различные правила. Таких списков может быть неограниченное количество.

После внесения изменений нужно перезапустить Squid следующей командой:

Настройка Squid как HTTP-прокси

В данном разделе мы рассмотрим настройку Squid в качестве HTTP-прокси, использующий для аутентификации только IP-адрес клиента.
Общий синтаксис в прокси выглядит следующим образом

При описании контроля доступа можно использовать оператор отрицания «!». Например следующая строка запрещает доступ ко всем портам, кроме описанных в листе Safe_ports

Добавление списков контроля доступа

Рассмотрим создание списков доступа acl подробнее. По умолчанию уже есть преднастроенный acl localnet

Вы можете его отредактировать или удалить. Создадим новый acl

Добавьте правило следующего вида:

Где boss — имя списка контроля доступа, src — параметр, задающий адрес источника (source), а XX.XX.XX.XX — IP-адрес машины клиента (можно также указывать подсети или диапазоны). Новые списки контроля доступа нужно добавлять в начало раздела ACL. Аналогичным образом можно создавать списки доступа с ограничением по адресу места назначения (параметр dst вместо src), а также использовать вместо адресов доменные имена (srcdomain для источника, dstdomain для места назначения).

Очень желательно рядом с ACL указывать комментарий с кратким описанием пользователя этого IP-адреса, например:

После этого нужно разрешить доступ для boss:

Чтобы изменения вступили в силу, нужно перезагрузить Squid.

Открытие портов

По умолчанию в конфигурации Squid разрешено использование только определенных портов.

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

Где XXX — номер порта, использование которого нужно разрешить. Снова желательно пояснять ACL комментарием.

Не забываем перезапустить Squid для применения настроек

Работа прокси в прозрачном режиме

Как уже было сказано, прозрачный режим предполагает автоматическую работу прокси-сервера без необходимости в явном виде указывать его на клиентских машинах. В общем случае клиент может вообще не знать, что работает через прокси. Это может быть полезным для обеспечения анонимности, ограничения доступа к некоторым сайтам и даже экономии сетевого трафика, так как прокси-сервер может сжимать данные.

Помимо уже рассмотренной выше опции intercept в параметре http_port файла конфигурации, для обеспечения правильной работы прозрачного прокси требуется соответствующим образом настроить маршрутизатор. Чтобы все входящие и исходящие запросы на порт 80 перенаправлялись на порт, используемый прокси-сервером.

Читайте также:  Mikrotik настройка tftp сервера

В случае использования iptables нужно добавить следующие правила (в рассматриваемом примере eth1 — внутренний интерфейс, eth0 — внешний, SQUID_IP — IP-адрес прокси-сервера):

Аутентификация клиента

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

Создадим нового пользователя ivan и установим ему пароль.

Для задания базовой HTTP-аутентифркации откройте файл конфигурации Сквид в текстовом редакторе:

И пропишите следующие директивы после ACL портов:

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

Настройка параметров кэширования

Одна из важных функций прокси-сервера — кэширование веб-страниц для разгрузки веб-сервера и ускорения доступа. Сквид поддерживает два типа кэша, в оперативной памяти и на жёстком диске.

Кэш в оперативной памяти настраивается следующими параметрами:

cache_mem 1024 MB — выделенный для кэширования объем памяти
maximum_object_size_in_memory 512 KB — максимальный размер объекта в кэше

Параметры кэша на жёстком диске задаются следующей директивой:

Размер указывается в мегабайтах, ур_1 и ур_2 — количество директорий первого и второго уровня, соответственно, например:

Аналогично кэшу в памяти при помощи следующего параметра указывается максимальный размер объекта в кэше на диске:

Ограничение скорости

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

Для реализации ограничения скорости Сквид использует механизм пулов задержки (delay pools). Пулы задержки можно условно представить в виде ёмкости, которая “заполняется” данными, и после этого “выпускает” их только с определенной скоростью. Количество пулов задаётся в файле конфигурации следующим образом:

Каждый пул имеет номер (от 1 до заданного количества), а также класс. Классы реализуют многоступенчатую структуру ограничения:

1 класс — общее ограничение
2 класс — общее ограничение и ограничения для подсетей
3 класс — общее ограничение, ограничения для подсетей и ограничения для отдельных ip-адресов

Классы пулов задаются директивой delay_class, в качестве аргументов которой передаются номер пула и класс.

Параметры пулов задаются директивой delay_parameters и описывают максимальный объем пула и ограничение на каждый уровень (в байтах) в зависимости от класса. Например, параметры для пула 1 класса с номером 1:

Будут означать, что после получения первых 256 Кб запроса на максимальной скорости скорость будет ограничена 64 Кб/с, то есть 512 Кбит/с.

Для 2 класса и выше аналогичным образом задаются ограничения для подсети, отдельного адреса и т.д., например следующая директива ограничивает общую скорость до 8 Мбит/с, а скорость для подсети после первых 256 Кб запроса — до 512 Кбит/с.

Чтобы задать пулы задержки для определенных списков контроля доступа, используется директива delay_access, содержащая номер пула, параметр allow или deny и имя списка, например:

для примера создадим два пула, 1 и 2 класса:

Теперь пользователи из листа office1 будут иметь скорость доступа в интернет в соответствии с delay_parameters 1.
Создаем 2-й класс

Это означает, что пользователи acl office2 ограничены общей скоростью на всю сеть в 512 кбит, но при этом отдельные пользователи в этой сети ограничены после первых 256 Кб, скоростью в 64 кбит
Проверим на сайте speedtest.net, работу ограничений

Как видите скорость загрузки действительно ограничена приблизительно до 256 кбит. Обратите внимание, что сквид ограничивает только скорость отдачи от него, т.е скорость загрузки пользователя. На скорость отдачи от пользователя ограничение не действует.

Блокировка веб-сайтов

Для блокировки доступа к нежелательным веб-сайтам сначала создайте файл с “черным списком”:

Теперь в этот файл нужно добавить сайты, к которым требуется заблокировать доступ. Например заблокируем доступа к одноклассникам и вконтакте:

Точки перед именами указывают Сквид блокировать все ссылки на эти сайты, в том числе www. vk.com, subsite.vk.com и т.д.

Далее нужно открыть файл конфигурации

И добавить список контроля доступа по доменным именам, указанным в файле, а также правило, запрещающее доступ для этого списка:

Обратите внимание на порядок расположения правил, правила доступа выполняются сверху вниз. Поэтому запрещающее правило расположено выше разрешающего
Сохраните файл и перезапустите Squid:

Читайте также:  Не могу создать сервер настройка

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

Блокировка по маске

Можно осуществлять блокировку не только по именам сайтов, но и по маске. Т.е. заблокировать доступ в сайтам, в которых есть определенное сочетание букв. Аналогичным образом создаётся файл со списком запрещенных ключевых слов:

Далее в него добавляются ключевые слова, например:

Откройте файл конфигурации и внесите в него следующие список контроля доступа и правило:

А затем сохраните файл и перезапустите Сквид:

Теперь, все сайты в названии доменов которых встречаются facebook, instagram, gmail будут заблокированы.

Заключение

Squid — очень мощное решение для создания прокси-сервера, обладающее огромными возможностями, значительной гибкостью и применимое практически в любой сети, от небольшого офиса до крупной корпорации. Мы охватили наиболее важные функции и параметры конфигурации Squid. Для получения более подробной информации о его конфигурации можно обратиться к официальной документации.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Squid — прокси сервер

Содержание

Squid — прокси сервер

Прокси сервер Squid — это великолепное решение широких требований к кэширующему и прокси серверу, которое масштабируется для сетей от уровня регионального офиса до корпорации, когда обеспечивается расширяемый разделяемый механизм контроля доступа и отслеживания критических параметров через протокол SNMP. Когда выбираете компьютерную систему для использования в качестве Squid прокси или кеширующего сервера, убедитесь что ваша система оснащена большим количеством оперативной памяти, поскольку Squid поддерживает кэш в памяти для увеличения производительности.

Установка

В терминале введите следующую команду для установки сервера Squid:

Настройка

Squid настраивается редактированием директив, содержащихся в конфигурационном файле /etc/squid/squid.conf. Следующие примеры иллюстрируют некоторые директивы, которые могут быть изменены для воздействие на поведение сервера Squid. Для более глубокой настройки Squid смотрите раздел Ссылки.

Скопируйте файл /etc/squid/squid.conf и защитите его от записи следующими командами в терминале:

1. Для настройки вашего сервера Squid на прослушивание порта 8888 вместо стандартного 3128, измените директиву http_port как показано здесь:

2. Измените директиву visible_hostname для того, чтобы присвоить серверу Squid определенное имя хоста (hostname). Это имя необязательно должно быть именем хоста компьютера. В примере оно определено как weezie:

3. Используя контроль доступа Squid, вы можете настроить, чтобы использование интернет сервиса прокси было доступно только пользователям с определенных IP адресов. Например, мы проиллюстрируем доступ пользователей только из подсети 192.168.42.0/24:

Затем добавьте следующее в начало секции http_access вашего файла /etc/squid/squid.conf:

4. Используя великолепные возможности контроля доступа Squid, вы можете настроить возможность использования интернет сервиса прокси только в обычные рабочие часы. Например, мы покажем как настроить доступ сотрудников, которые работают с 9:00 до 17:00 с понедельника по пятницу из подсети 10.1.42.0/24:

Источник

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

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

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

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

apt-get install squid squid-common

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

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

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

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

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

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

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

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

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

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

#TAG: cache-mgr
cache-mgr admin@example.com

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

Читайте также:  Настройка core ftp сервера

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 имеет достаточно прав для того чтобы записывать в файлы, в нем размещающиеся информацию

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

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

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

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

refresh_pattern -i \.$ 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

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

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

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

-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

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

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

Источник

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

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

Adblock
detector