- Серверы Linux. Часть I. Серверы Apache и Squid
- Глава 2. Знакомство с прокси-сервером Squid
- 2.1. Информация о прокси-серверах
- 2.2. Установка прокси-сервера Squid
- 2.3. Порт 3128
- 2.4. Запуск и остановка службы прокси-сервера
- 2.5. Ввод параметров доступа к прокси-серверу на стороне клиента
- 2.6. Переворот изображений
- 2.7. Директория для хранения файлов журналов /var/log/squid
- 2.8. Управление доступом
- 2.9. Тестирование прокси-сервера Squid
- 2.10. Разрешение доменных имен
- Установка и настройка прокси-сервера Squid
- Установка прокси-сервера Squid
- Настройка Squid как HTTP-прокси
- Добавление списков контроля доступа
- Открытие портов
- Работа прокси в прозрачном режиме
- Аутентификация клиента
- Настройка параметров кэширования
- Ограничение скорости
- Блокировка веб-сайтов
- Блокировка по маске
- Заключение
Серверы Linux. Часть I. Серверы Apache и Squid
Глава 2. Знакомство с прокси-сервером Squid
2.1. Информация о прокси-серверах
2.1.1. Область применения
Прокси-сервером называется сервер, предназначенный для кэширования данных, получаемых из сети Интернет. Клиент соединяется с прокси-сервером и передает ему запрос, который должен быть отправлены серверу из сети Интернет. После этого прокси-сервер соединяется с сервером из сети Интернет и передает ему запрос от имени клиента. При этом прокси-сервер осуществляет кэширование страниц, полученных от сервера из сети Интернет. Благодаря данной функции прокси-сервер может передавать клиенту копии страниц из своего кэша, а не соединяться с сервером из сети Интернет для получения (этих же) страниц.
Прокси-сервер имеет два полезных свойства. Во-первых, он повышает скорость веб-серфинга при возвращении клиентам кэшированных копий данных, а во-вторых, он уменьшает необходимую пропускную способность (цену) соединения с сетью Интернет.
Небольшие организации иногда размещают прокси-сервер на физическом компьютере, который уже используется в качестве сервера преобразования сетевых адресов (NAT) для доступа к ресурсам сети Интернет. В больших организациях прокси-сервер является одним из серверов, размещенных в демилитаризованной зоне сети (DMZ).
При использовании прокси-сервера для обработки всего веб-трафика обычной практикой является дополнительная настройка этого сервера для управления доступом к определенным ресурсам. Под управлением доступом в случае прокси-сервера могут подразумеваться ограничения доступа, которые могут распространяться как на учетные записи пользователей, так и на отдельные веб-сайты (идентифицируемые в помощью строк URL), IP-адреса ресурсов или механизм разрешения доменных имен.
2.1.2. Общедоступные прокси-серверы
При работе в сети Интернет вы можете столкнуться со списками общедоступных прокси-серверов, которые позволяют заниматься анонимным веб-серфингом. При использовании прокси-сервера из такого списка веб-серфинг будет действительно анонимным лишь в том случае, если прокси-сервер будет соединяться с веб-сайтом от вашего имени без записи в файл журнала вашего IP-адреса. Будьте осторожны, ведь эти общедоступные прокси-серверы (из списков) могут быть созданы и для слежки за действиями пользователей.
2.1.3. Прокси-сервер Squid
В данной главе будет обсуждаться прокси-сервер Squid (http://www.squid-cache.org). В первую очередь будет описан процесс настройки Squid для работы в режиме обычного прокси-сервера.
2.2. Установка прокси-сервера Squid
В примере ниже показана методика установки прокси-сервера Squid с помощью утилиты aptitude в дистрибутиве Debian. Используйте утилиту yum для установки одноименного пакета программного обеспечения в том случае, если вы работаете с дистрибутивом Red Hat/CentOS.
Главным конфигурационным файлом прокси-сервера Squid является файл /etc/squid/squid.conf . В данном файле имеются подробные описания каждого из параметров.
2.3. Порт 3128
По умолчанию прокси-сервер Squid будет принимать соединения на порту 3128 .
2.4. Запуск и остановка службы прокси-сервера
Вы можете изменять состояние службы squid с помощью стандартной утилиты service таким же образом, как показано в данном примере.
2.5. Ввод параметров доступа к прокси-серверу на стороне клиента
Для активации режима доступа к сети посредством прокси-сервера в веб-браузере Firefox или Iceweasel следует выбрать пункты меню окна «Правка — Настройки» и ввести параметры доступа к прокси-серверу таким же образом, как показано на рисунке ниже (замените IP-адрес 192.168.1.60 на IP-адрес машины с прокси-сервером).
Проверьте работоспособность соединения с сетью Интернет при использовании прокси-сервера. Также проведите повторную проверку работоспособности соединения после исполнения команды service squid stop на машине с установленным прокси-сервером, в результате чего веб-браузер должен вывести сообщение, аналогичное представленному на рисунке ниже.
Для активации режима доступа к сети посредством прокси-сервера в веб-браузере Google Chrome (или Chromium в дистрибутиве Debian) запустите веб-браузер из терминала с помощью аналогичной команды:
Остановка службы прокси-сервера с помощью команды service squid stop должна привести к выводу сообщения об ошибке, аналогичного представленному на рисунке ниже.
2.6. Переворот изображений
Прокси-сервер выступает посредником между вашим браузером и серверами из сети Интернет. Исходя из этого, помимо кэширования данных (что является основной задачей прокси-сервера), а также фильтрации веб-трафика по аналогии с межсетевым экраном, прокси-сервер отлично подходит для модификации содержимого посещаемых вами веб-страниц.
Например, на уровне прокси-сервера вы можете заменить рекламные баннеры на веб-странице (а также удалить некоторые из них) или же, как в примере ниже, модифицировать все изображения на веб-странице, перевернув их.
Для модификации изображений серверу потребуются утилиты с интерфейсом командной строки, а также сценарий на языке Perl, который использует эти утилиты (кроме того, понадобится утилита wget для загрузки изображений на сервер и предоставления доступа к ним посредством веб-сервера Apache 2 ). В данном примере мы будем использовать инструменты из пакета imagemagic (такие, как утилиты convert и mogrify ).
Приведенный в примере ниже сценарий на языке Perl размещен на множестве веб-сайтов, но мне так и не удалось найти информацию о его авторе. Данный сценарий является достаточно простым и использует утилиты wget и mogrify для загрузки изображений (с расширениями .jpg, .gif и .png), их переворота и сохранения результирующих изображений в директории /var/www/images .
Также следует изменить (или раскомментировать) следующую строку в файле конфигурации прокси-сервера /etc/squid/squid.conf .
Данный сценарий использует директорию /var/www/images , которая должна быть доступна для записи как для прокси-сервера Squid (который использует учетную запись пользователя proxy ), так и для веб-сервера Apache 2 (который использует учетную запись пользователя www-data ). В примере ниже показаны команды, предназначенные для создания данной директории, установки прав доступа к ее содержимому и добавления используемых упомянутыми серверами учетных записей пользователей в соответствующие группы пользователей.
Проверьте работоспособность сценария для поворота изображений после перезапуска службы прокси-сервера под названием squid и службы веб-сервера под названием apache2 .
2.7. Директория для хранения файлов журналов /var/log/squid
По умолчанию файлы журнала прокси-сервера Squid хранятся в директории /var/log/squid .
2.8. Управление доступом
При использовании стандартных настроек прокси-сервер Squid принимает соединения исключительно с локального узла. Для разрешения доступа с машин, имеющих IP-адреса из диапазона адресов частной сети следует найти в файле конфигурации squid.conf предложение «INSERT YOUR OWN RULE(S) HERE. » и добавить после него две строки, аналогичные приведенным в примере ниже.
2.9. Тестирование прокси-сервера Squid
В первую очередь следует убедиться в том, что прокси-сервер функционирует и имеет доступ к сети Интернет.
После этого следует настроить веб-браузер на клиентской машине для работы с сетью посредством прокси-сервера или установить в качестве значения переменной окружения HTTP_PROXY (иногда вместо этой переменной окружения используется переменная http_proxy ) адрес прокси-сервера для передачи этого адреса программам с интерфейсом командной строки.
Тестирование работоспособности прокси-сервера со стороны клиентской машины может осуществляться с помощью утилиты wget (команда wget -q используется для упрощения примера).
2.10. Разрешение доменных имен
Несмотря на то, что вам потребуется работоспособный механизм разрешения доменных имен на уровне прокси-сервера 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 перенаправлялись на порт, используемый прокси-сервером.
В случае использования 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.
Источник