Squid — это популярный прокси-сервер, который используется в основном для кэширования часто запрашиваемого веб-контента, чтобы уменьшить время отклика страниц, а также для фильтрации сетевого трафика. Он поддерживает множество различных протоколов таких как HTTP, FTP, TLS, SSL, Internet Gopher и HTTPS. А еще эта штука может быть очень полезной при медленном интернет-соединении. Первоначально Squid был разработан как Unix демон, но потом было выпущено несколько портов для WIndows. Squid распространяется под лицензией GNU General Public License.
В этой инструкции вы узнаете как установить Squid в Ubuntu 16.04. Просто последовательно выполняйте эти инструкции и установка squid ubuntu не вызовет никаких проблем. Squid это довольно многофункциональная программа и мы не сможем охватить в этой статье все ее функции, но попытаемся рассмотреть основные, чтобы вы смогли ее полностью настроить и использовать. Начнем с установки.
Есть несколько способов установки Squid в Ubuntu, один из самых распространенных — установка из официальных репозиториев с помощью утилиты apt.
Сначала откройте терминал сочетанием клавиш Ctrl+Alt+T и обновите индекс пакетов:
После обновления списка пакетов можно переходить к установке прокси-сервера просто выполните команду:
Затем утилита спросит нужно ли продолжать установку, введите Y и дождитесь окончания загрузки и установки:
Затем можно переходить к настройке.
Конфигурационный файл сервера находится в директории /etc/squid. В зависимости от версии Squid название папки и самого файла может отличаться, например, /etc/squid3/squid.conf или /etc/squid/squid.conf. Все настройки находятся в этом файле. Давайте его рассмотрим.
Когда откроется файл вы увидите что то похожее:
Файл содержит несколько опций настроек, а также очень много документации по их использованию. Мы не будем трогать многие из них, но основные рассмотрим.
Сначала нам нужно настроить правила доступа клиентов к нашему прокси-серверу. Squid проектировался как программа для организаций и даже если вы используете его дома, настройка squid 3 тоже должна быть выполнена.
Для это используется acl список. это обычный список объектов, сейчас он вообще ничего не значит. Это могут быть ip адреса, порты и т д. Потом мы укажем программе что нужно делать с этим списком, разрешать или запрещать доступ. Синтаксис создания acl списка такой:
aclимя_спискатип_спискаэлемент_списка
Таких строк может быть несколько с одним именем и типом, из них получается список. Имя списка может быть произвольным, мы его еще будем использовать. Тип списка это намного интереснее. Может быть одним из:
- src — ip адрес откуда исходит соединение, адрес клиента;
- dst — ip адрес назначения соединения, адрес сервера, к которому хочет получить доступ клиент;
- dstdomain — домен назначения соединения;
- srcdomain — домен клиента;
- arp — MAC адрес сетевой карты клиента;
- time — время, когда выполняется соединение;
- port — порт, к которому пытается получить доступ клиент;
- proto — протокол, по которому устанавливается соединение;
- method — метод передачи данных, например, GET — передача данных HTTP, POST — передача данных форм в HTTP, CONNECT — запрос соединения с сервером;
- http_status — ответ сервера;
- browser — браузер клиента;
- url_regex — url адрес, к которому пытаются получить доступ.
Это далеко не все типы списков, но для начала хватит, а более подробная информация есть в том же конфигурационном файле.
Добавим список, для доступа к серверу из локальной сети:
acl localnet src 192.168.0.0/16
Создадим список Safe_ports, чтобы разрешить трафик на порты основных сетевых служб, а также незарегистрированные порты выше 1024:
acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http
Создадим еще два списка — SSL_ports и connect, чтобы разрешить использовать метод connect только для ssl соединений. Это запретит клиенту использовать другие прокси-серверы поверх нашего:
acl SSL_ports port 443
acl connect method CONNECT
Как я уже говорил, эти списки сами по себе ничего не значат и никак не влияют на работу сервера. Чтобы применить список нужно использовать директиву http_access. Ее синтаксис:
http_access действие имя_списка
Действие может быть allow (разрешить) или deny (запретить). теперь запретим доступ ко всем портам, кроме заданных в Safe_ports:
http_access deny !Safe_ports
Дальше запретим использование метода CONNECT кроме SSL соединений:
http_access deny Connect !SSL_ports
Теперь разрешим доступ из этого компьютера (acl список localhos предопределен):
http_access allow localhost
Разрешим доступ из локальной сети:
http_access allow localnet
И запретим все остальное:
http_access deny all
Контроль доступа, это один из самых важных компонентов, но настройка squid ubuntu на этом незакончена. Есть еще много интересных параметров, мы рассмотрим только несколько из них:
http_port — задает ip адрес и порт, на котором будет работать программа. Можно запускать прокси только на этом компьютере такой конструкцией:
http_port localhost:3218
Или в локальной сети:
http_port :3128
https_port — задает ip адрес и порт, на котором будут приниматься https соединения. Мы не рассматриваем работу с https в этой статье.
cache_mem — количество памяти, которая выделяется для кэширования объектов.
cache_dir — позволяет задать папку для хранения кэша. По умолчанию весь кэш хранится в оперативной памяти. Синтаксис:
cache_dirфайловая_системапапкаразмер_в_мб L1 L2
L1 и L2 — количество подпапок первого и второго уровня. Файловая система определяет каким образом данные будут писаться на диск. Например:
cache_dir aufs /var/spool/squid 100 16 256
coredump_dir — директория, в которую будет сохранен дамп памяти в случае ошибки.
refresh_pattern — очень интересный параметр, который позволяет продлить время жизни объектов в кэше. Синтаксис такой:
refresh_pattern-iрегулярное_выражениеминимальное_времяпроцентмаксимальное_времяпараметры
- регулярное выражение — задает объекты, к которым нужно применять параметр;
- минимальное_время — время в минутах пока объект считается свежим;
- максимальное_время — максимальное время в минутах, пока объект будет свежим;
параметры могут быть такие:
- override-expire — игнорировать заголовок expire;
- override-lastmod — игнорировать последнюю дату изменения файла;
- reload-into-ims — вместо не кэшировать отправлять запрос If-Modified-Since;
- ignore-reload — игнорировать запросы клиента не кэшировать.
Например:
refresh_pattern -i .gif$ 43200 100% 43200 override-lastmod override-expire
Вам могут понадобиться и другие настройки после того, как установка squid ubuntu Будет завершена. Но они выходят за рамки этой статьи. Теперь сохраните изменения, закройте файл и перезагрузите Squid:
Если эта команда вернет ошибку, попробуйте другую:
Осталось проверить работу нашего прокси-сервера. Это можно сделать с помощью любого браузера. Откройте настройки браузера и выполните настройку прокси. Я покажу как это сделать в Mozilla Firefox. Если у вас другой браузер, например, Google Chrome думаю вы разберетесь как там настраивается прокси.
Откройте браузер, перейдите в Настройка —> Дополнительно —> Сеть. Затем нажмите Настройки в разделе Подключение и выберите настроить прокси вручную:
В поле HTTP прокси укажите IP адрес машины, на которой выполнялась установка Squid сервера, а в поле порт — номер порта 3128. Этот порт используется по умолчанию в Squid, но вы можете изменить номер порта с помощью /etc/squid/squid.conf
Нажмите ОК, и прокси начнет работать.
В этой статье была рассмотрена установка и настройка squid ubuntu 16.04. Мы рассматривали только основные моменты, которые могут понадобиться каждому пользователю. Если вам нужна более тонкая настройка, такая как ограничение скорости и так далее, вам придется обратиться к документации программы. Если у вас остались вопросы, спрашивайте в комментариях!
Руководство по Ubuntu Server » Интернет сервера
<-назад | далее->
Squid — прокси сервер
Squid — это полнофункциональное приложение кэширующего прокси сервера, которое предоставляет сервисы кэширования и прокси для HTTP, FTP и других популярных сетевых протоколов. Squid может осуществлять кэширование и проксирование SSL запросов и кэширование результатов DNS поиска, а также выполнять прозрачное кэширование. Squid также поддерживает широкий набор кэширующих протоколов, таких как ICP (кэширующий интернет протокол), HTCP (гипертекстовый кэширующий протокол), CARP (протокол кэширования маршрутизации) и WCCP (кэширующий протокол перенаправления контента).
Прокси сервер Squid — это великолепное решение широких требований к кэширующему и прокси серверу, которое масштабируется для сетей от уровня регионального офиса до корпорации, когда обеспечивается расширяемый разделяемый механизм контроля доступа и отслеживания критических параметров через протокол SNMP. Когда выбираете компьютерную систему для использования в качестве Squid прокси или кеширующего сервера, убедитесь что ваша система оснащена большим количеством оперативной памяти, поскольку Squid поддерживает кэш в памяти для увеличения производительности.
Установка
В терминале введите следующую команду для установки сервера Squid:
sudo apt-get install squid
Настройка
Squid настраивается редактированием директив, содержащихся в конфигурационном файле /etc/squid/squid.conf. Следующие примеры иллюстрируют некоторые директивы, которые могут быть изменены для воздействие на поведение сервера Squid. Для более глубокой настройки Squid смотрите раздел Ссылки.
Прежде, чем редактировать конфигурационный файл, вам стоит сделать копию оригинального файла и защитить ее от перезаписи, чтобы у вас всегда оставались оригинальные настройки в качестве справочника и для повторного использования при необходимости.
Скопируйте файл /etc/squid/squid.conf и защитите его от записи следующими командами в терминале:
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.original sudo chmod a-w /etc/squid/squid.conf.original
1. Для настройки вашего сервера Squid на прослушивание порта 8888 вместо стандартного 3128, измените директиву http_port как показано здесь:
http_port 8888
2. Измените директиву visible_hostname для того, чтобы присвоить серверу Squid определенное имя хоста (hostname). Это имя необязательно должно быть именем хоста компьютера. В примере оно определено как weezie:
visible_hostname weezie
3. Используя контроль доступа Squid, вы можете настроить, чтобы использование интернет сервиса прокси было доступно только пользователям с определенных IP адресов. Например, мы проиллюстрируем доступ пользователей только из подсети 192.168.42.0/24:
Добавьте следующее в конец секции ACL вашего файла /etc/squid/squid.conf:
acl fortytwo_network src 192.168.42.0/24
Затем добавьте следующее в начало секции http_access вашего файла /etc/squid/squid.conf:
http_access allow fortytwo_network
4. Используя великолепные возможности контроля доступа Squid, вы можете настроить возможность использования интернет сервиса прокси только в обычные рабочие часы. Например, мы покажем как настроить доступ сотрудников, которые работают с 9:00 до 17:00 с понедельника по пятницу из подсети 10.1.42.0/24:
Добавьте следующее в конец секции ACL вашего файла /etc/squid/squid.conf:
acl biz_network src 10.1.42.0/24 acl biz_hours time M T W T F 9:00-17:00
Затем добавьте следующее в начало секции http_access вашего файла /etc/squid/squid.conf:
http_access allow biz_network biz_hours
После внесения изменений в файл /etc/squid/squid.conf сохраните его и перегрузите приложение сервера squid, чтобы изменения вступили в силу, следующей командой в терминале:
sudo /etc/init.d/squid restart
Ссылки
-
Интернет сайт Squid.
-
Страница Ubuntu Wiki Squid.
<-назад | далее->
Программный пакет squid — наиболее широко используемый в настоящее время прокси сервер, реализуемый на Linux. Отличается широким функционалом и достаточной сложностью конфигурации. Основной файл с настройками содержит около 4 000 строк. Конфигурация «squid прозрачный прокси» является популярной администраторской задачей — процесс будет рассмотрен в рамках данного материала.
Режимы работы SQUID и идентификация
Режимы работы: обычный, анонимный прокси сервер, SQUID прозрачный прокси
Прозрачный прокси (transparent) подразумевает отсутствие необходимости указывать на использование прокси со стороны клиента (в интернет-браузерах на клиентских компьютерах). Трафик со стандартных портов (80, 8080, 443) переадресуется на порт, на котором работает SQUID.
Анонимный прокси сервер не предполагает авторизации. т.е. его может использовать кто-угодно в Интернете, знающий IP сервера, на котором установлено и сконфигурировано ПО.
SQUID поддерживает насколько способов идентификации пользователей — самый распространенный способ — по IP адресам
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 admin@example.com
Переходим непосредственно к конфигурации. Находим строки содержащие 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
В конфиге зададим 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 адресов и по альтернативному для всех остальных.
Используемые источники:
- https://losst.ru/ustanovka-squid-v-ubuntu-15-10
- https://help.ubuntu.ru/wiki/руководство_по_ubuntu_server/web_сервера/squid_proxy_server
- https://server-gu.ru/transparent-proxy-squid-ubuntu/