Что такое squid
Перейти к содержимому

Что такое squid

  • автор:

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 5.2 с нуля

Всем привет. Появилась необходимость сменить в компании старичка Squid 3.5 с NTLM на FreeBSD, трудящегося с лохматых годов, так как как он не управлял скоростями и функционал работал криво. Было решено ставить Squid 5.2 с авторизацией по Kerberos на Ubuntu 22.04. Конфиг от 3.5 не подходит для 5 версии, поэтому все писалось с нуля. Для удобства чтения настройка будет разбита не несколько статей:

  1. Серверная часть и настройка авторизации Kerberos (Active Directory)
  2. Настройка файла конфигурации Squid
  3. Настройка доступов и скоростей

Немного теории для тех, кто вообще не знает, что это и с чем «едят» кальмара..

Гугл говорит нам замысловато..

Squid — программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP, FTP, Gopher и HTTPS. Разработан сообществом как программа с открытым исходным кодом. Все запросы выполняет как один неблокируемый процесс ввода-вывода.

Для новичка может быть вообще ничего непонятно. Проще говоря прокси-сервер встраивается между конечным сайтом и пользователем. Кэширует данные с сайтов, «режет» скорость и позволяет правильно распределить нагрузки на интернет-канал, предоставляет или наоборот закрывает доступы к разным сайтам, например соц.сетям, магазинам и т.п., чтобы ничего не отвлекало наших сотрудников от выполнения их обязанностей ��

Hidden text

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

Обозначения:

yourdomain.com – вместо этого подставляйте свой домен.

user-px – пользователь от которого запускается squid.

proxy_comp — имя прокси сервера в DNS.

proxy_k – пользователь для Squid в Active Directory.

dc01 – Active Directory 1 сервер.

dc02 — Active Directory 2 сервер (может и не быть в компании).

192.168.10.100 – сервер прокси (у вас будет свой).

192.168.10.1 – шлюз (у вас будет свой).

192.168.10.9 — DNS (у вас будет свой).

192.168.10.10 – DNS (у вас будет свой).

192.168.10.222 — IP нашего админского компа.

Переходим к базовой настройке сервера Ubuntu 22.04

Устанавливаем актуальную версию Ubuntu server LTS отсюда:

Настраиваем статический ip адрес в sudo vim /etc/netplan/00-installer-config.yaml

# This is the network config written by ‘subiquity’

15.1. Что такое SQUID?

SQUID — это программа, которая получает HTTP/FTP-запросы клиентов и по ним обращается к ресурсам Интернет. Применение прокси-сервера (squid) дает возможность использовать фиктивные IP-адреса во внутренней сети (Masquerading — маскарадинг), увеличивает скорость обработки запроса при повторном обращении (кэширование), а также обеспечивает дополнительную безопасность.

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

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

Прокси-сервер Squid образуется несколькими программами, в числе которых: сама программа сервера squid, а также программа dnsserver — программа обработки DNS-запросов. Когда запускается программа squid, то она сначала запускает заданное количество процессов dnsserver, каждый из которых работает самостоятельно и может осуществлять только один поиск в системе DNS. За счет этого уменьшается общее время ожидания ответа DNS.

Данный текст является ознакомительным фрагментом.

Продолжение на ЛитРес

Читайте также

9.3. squid

9.3. squid Как я уже сказал, самым распространенным прокси-сервером является squid. Этот сервер имеет достаточно длинную историю, и за время его существования в нем реализовано много возможностей. Еще не было ничего такого, что я не смог бы получить с помощью squid.Основной

9.4. Права доступа к squid

9.4. Права доступа к squid Это самая больная тема для любого администратора. Да, и в squid тоже есть права доступа, и они также описываются в конфигурационном файле /etc/squid/squid.conf. Но мы рассматриваем права отдельно, потому что основной упор делаем на безопасность. Именно поэтому

9.5. Замечания по работе squid

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

12.5.4. Журнал прокси-сервера squid

12.5.4. Журнал прокси-сервера squid Основным журналом прокси-сервера squid является /var/log/squid/access.log. Это текстовый файл, в котором каждая строка состоит из следующих полей:? время начала соединения или события;? продолжительность сессии;? IP-адрес клиента;? результат обработки

15 Прокси-сервер SQUID

15 Прокси-сервер SQUID 15.1. Что такое SQUID? SQUID — это программа, которая получает HTTP/FTP-запросы клиентов и по ним обращается к ресурсам Интернет. Применение прокси-сервера (squid) дает возможность использовать фиктивные IP-адреса во внутренней сети (Masquerading — маскарадинг),

15.2. Установка SQUID

15.2. Установка SQUID SQUID может быть установлен из исходных текстов или в виде RPM-пакета. Установка RPM-пакета SQUID очень проста — для этого нужно ввести команду rpm –ih squid-2.3.STABLE2-3mdk.i586.rpmЯ использую версию squid 2.3. Более новая версия доступна в виде исходных кодов. Исходники можно

15.3. Настройка SQUID

15.3. Настройка SQUID Сервер SQUID использует файл конфигурации squid.conf, который обычно располагается в каталоге /etc/squid (или /usr/local/squid/etc — более ранние версии). Откройте его в любом текстовом редакторе, например, joe/usr/local/squid/etc/squid.conf. Далее выполните следующую последовательность

15.4. Запуск SQUID

15.4. Запуск SQUID Теперь, когда вы выполнили базовую настройку SQUID, его нужно запустить: /usr/local/squid/bin/squid –zПараметр –z необходим для создания (обнуления) каталога, содержащего кэш. Обычно этот параметр нужен только при первом запуске. Некоторые другие полезные параметры SQUID

15.5. Формат файла squid.conf

15.5. Формат файла squid.conf В файле squid.conf задаются всевозможные параметры конфигурации прокси-сервера. Давайте рассмотрим их все по

17.1.5. Настройка Squid

17.1.5. Настройка Squid Установите пакет squid. Осталось настроить и запустить его. Для этого нужно отредактировать файл конфигурации /etc/squid/squid.conf. Сначала укажите адрес прокси провайдера: cach_peer proxy.your_isp.comЗадайте объем ОЗУ, который будет использовать прокси-сервером: cache_memВ том

Глава 18. Прокси-серверы SQUID и SOCKS

Глава 18. Прокси-серверы SQUID и SOCKS 18.1. Что такое прокси-сервер? Прокси-сервер (сервер-посредник) — это программа, которая выполняет HTTP/FTP-запросы от имени клиентов. Применение прокси-сервера дает возможность использовать фиктивные IP-адреса во внутренней сети (IP-маскарадинг),

18.2. Установка SQUID

18.2. Установка SQUID Я использую версию squid 2.5. Пакет squid входит в состав современных дистрибутивов, а если его у вас почему-то нет, то скачать можно с www.squid-cache.org.При сборке SQUID из исходных кодов первым шагом должна быть команда# ./configure —prefix=/usr/local/squidSQUID будет установлен в каталог,

18.3. Настройка SQUID

18.3. Настройка SQUID Сервер SQUID использует файл конфигурации squid.conf, который обычно располагается в каталоге /etc/squid (или /usr/local/squid/etc — более ранние версии). Подробнее на отдельных настройках мы остановимся чуть позже. А сейчас просто по шагам произведем настройку SQUID.

18.4. Запуск SQUID

18.4. Запуск SQUID Первый раз squid нужно запускать с ключом -z, чтобы создать и очистить каталог кэша:# /usr/local/squid/bin/squid -zЕще несколько полезных ключей, с которыми можно запускать squid, перечислены в таблице 18.2.Ключи запуска squid Таблица 18.2 Ключ Назначение -а порт Задает

18.5. Расширенные настройки SQUID. Конфигурационный файл squid.conf

18.5. Расширенные настройки SQUID. Конфигурационный файл squid.conf 18.5.1. Параметры сети В файле squid.conf могут быть заданы следующие параметры сети:? http_port — порт для запросов клиентов. С этого порта прокси-сервер будет ожидать и обрабатывать запросы клиентов. Значение по умолчанию

18.8. Разделение канала с помощью SQUID

18.8. Разделение канала с помощью SQUID Допустим, вам нужно настроить прокси-сервер таким образом, чтобы одна группа компьютеров работала в Интернете с одной скоростью, а другая — с другой. Это может потребоваться, например, для разграничения пользователей, которые

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

date

31.03.2022

user

itpro

directory

CentOS, Linux, Ubuntu

comments

комментариев 16

Squid это, наверное, самый известный и популярный open source кэширующий прокси сервер. Прокси сервер Squid поддерживает большое количество кэширующих протоколов (ICP, HTCP, CARP, WCCP), позволяет проксировать трафик протоколов HTTP, HTTPS, FTP и т.д. Squid легко масштабируется, его можно использовать для фильтрации контента и управления скоростью доступа к сайтам для разных категорий пользователей, он поддерживает аутентификацию пользователей (в том числе пользователей Active Directory через LDAP). В этой статье мы рассмотрим типовую установку прокси сервера Squid на Linux.

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

Установите пакет Squid на хост с помощью вашего пакетного менеджера. В зависимости от версии Linux нужно выполните одну из следующих команд:

  • Oracle, Rocky, CentOS или Red Hat Enterprise Linux: dnf install -y squid
  • SUSE Linux Enterprise Server: zypper install squid
  • Ubuntu или Debian: apt-get install squid

установка squid в linux

Если вы хотите использовать аутентификацию пользователей в Squid, нужно дополнительно установить пакет:

  • В RHEL/CentOS/Fedora: dnf -y install httpd-tools
  • В Debian/Ubuntu: sudo apt install apache2-utils

Добавьте сервис Squid в автозагрузку Linux через systemd, запустите службу и проверьте статус:

systemctl enable squid
systemctl start squid
systemctl status squid

systemctl status squid - running

Чтобы ввести все опции, с которыми собран squid:

Squid Cache: Version 4.15 Service Name: squid This binary uses OpenSSL 1.1.1k FIPS 25 Mar 2021. For legal restrictions on distribution see https://www.openssl.org/source/license.html configure options: '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--libexecdir=/usr/lib64/squid' '--datadir=/usr/share/squid' '--sysconfdir=/etc/squid' '--with-logdir=/var/log/squid' '--with-pidfile=/var/run/squid.pid' '--disable-dependency-tracking' '--enable-eui' '--enable-follow-x-forwarded-for' '--enable-auth' '--enable-auth-basic=DB,fake,getpwnam,LDAP,NCSA,PAM,POP3,RADIUS,SASL,SMB,SMB_LM' '--enable-auth-ntlm=SMB_LM,fake' '--enable-auth-digest=file,LDAP' '--enable-auth-negotiate=kerberos' '--enable-external-acl-helpers=LDAP_group,time_quota,session,unix_group,wbinfo_group,kerberos_ldap_group' '--enable-storeid-rewrite-helpers=file' '--enable-cache-digests' '--enable-cachemgr-hostname=localhost' '--enable-delay-pools' '--enable-epoll' '--enable-icap-client' '--enable-ident-lookups' '--enable-linux-netfilter' '--enable-removal-policies=heap,lru' '--enable-snmp' '--enable-ssl' '--enable-ssl-crtd' '--enable-storeio=aufs,diskd,ufs,rock' '--enable-diskio' '--enable-wccpv2' '--enable-esi' '--enable-ecap' '--with-aio' '--with-default-user=squid' '--with-dl' '--with-openssl' '--with-pthreads' '--disable-arch-native' '--disable-security-cert-validators' '--with-swapdir=/var/spool/squid' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'CFLAGS=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' 'LDFLAGS=-Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld' 'CXXFLAGS=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' 'PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig'

Настройка кэширующего прокси сервера 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

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

Чтобы отредактировать конфигурационный файл squid, выполните:

sudo mcedit /etc/squid/squid.conf

В начале конфигурационного файла Squid задается список контроля доступа, определяющий IP адреса (подсети) клиентов, с которых разрешено подключаться к прокси-серверу.

Например, вы хотите разрешить доступ только из вашей локальной сети. Добавьте директиву:

acl localnet src 192.168.10.0/24

Остальные строки acl localnet можно закомментировать.

Чуть ниже в конфигурации указан директива, разрешающая доступ для этих сетей:

http_access allow localnet

По умолчанию Squid принимает подключения пользователей на порту 3128. Вы можете изменить этот порт в директиве http_port. Я повешу Squid на порт 4555:

http_port 4555

Если вы хотите использовать прокси сервер для кэширования, нужно настроить директорию для кэша:

cache_dir ufs /var/spool/squid 5120 32 256
  • 5120 – размер кэша в МБ
  • 32 – количество каталогов первого уровня для кэша, 256 – каталоги второго уровня

Чтобы создать на диске структуру папок под кэш squid, выполните команду:

Для аутентификации пользователей на squid можно использовать простейшую basic аутентификацию. Сначала создайте файл для хранения пользователей и паролей:

sudo touch /etc/squid/passwd && sudo chown squid /etc/squid/passwd

Чтобы добавить пользователя в этот файл, выполните команду:

sudo htpasswd -c /etc/squid/passwd username1

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

добавление пользователя в squid

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

#использовать basic auth и указать путь к файлу с паролями auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd # количество одновременных подключений auth_param basic children 5 auth_param basic realm Squid Basic Authentication # длительность сессии без повторного ввода логина и пароля auth_param basic credentialsttl 8 hours auth_param basic casesensitive off acl auth_users proxy_auth REQUIRED http_access allow auth_users

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

  • /usr/lib64/squid/basic_ncsa_auth (Oracle Linux, RHEL, CentOS)
  • /usr/lib/squid/basic_ncsa_auth (Debian, Ubuntu, Kali Linux)

squid.conf конфигурационный файл squid

Можно реализовать аутентификацию в AD с помощью basic auth:
auth_param basic program /usr/lib64/squid/basic_ldap_auth -R -b «dc=winitpro,dc=ru» -D «[email protected] » -w «» -f «sAMAccountName=%s»

Недостаток Basic аутентификации в тои, что пароль передается в виде текста, зашифрованного с помощью Base64 (легко расшифровывается, см. пример в статье об отправке писем через telnet с аутентификацией). Поэтому для интеграции с Active Directory лучше использовать Kerberos аутентификацию в Squid. Если AD нет, можно настроить HTTP Digest аутентификацию в Squid. Но это уже за рамками этой статьи.

В конце конфигурационного файла с помощью директив http_access задаются разрешающие и запрещающие правила. Например, чтобы разрешить доступ только аутентифицированным пользователям:

http_access allow localhost http_access allow authenticated http_access deny all

В Squid можно заблокировать определенный сайты. Создайте файл со списком запрещенных сайтов:

sudo vi /etc/squid/blocked_sites

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

facebook.com twitter.com instagram.com

И добавьте такие строки в конфигурационный файл squid:

acl blocked_sites dstdomain "/etc/squid/blocked_sites" http_access deny blocked_sites

После внесения изменений в конфигурационный файл squid нужно проверить его на синтаксические ошибки:

sudo squid -k parse

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

sudo squid -k reconfigure

Разрешите в фаейрволе подключение к порту прокси сервера (в нашем примере это TCP 4555). Если у вас используется firewalld, добавьте разрешающее правило так:

firewall-cmd —zone=public —add-port=4555/tcp
firewall-cmd —reload

Если ваш Linux сервер расположен у внешнего провайдера (AWS, Azure, Oracle Cloud, и т.д.), не забудьте добавить разрешающее правило для порта 4555 в соответствующую Security Group.

Проверьте, что Squid слушает порт, указанный в директиве http_port:

С помощью curl можно проверить доступность прокси сервера squid:

curl -x http://xx.xx.xx.xx:4555 -L http://google.com

Если появляется ошибка authentication required/ Access Denied , значит нужно передать имя пользователя и пароль для подключения к squid:
curl -x http://xx.xx.xx.xx:4555 —proxy-user proxyuser1:TGFTM0xDVjNm -I http://google.com

тестирование squid с помощью curl

Для анализа логов squid в реальном времени используйте команду:

sudo tail -f /var/log/squid/access.log

Если браузер выводит ошибку The proxy server is refusing connections , а в логе access.log есть строка TCP_DENIED/403 4041 CONNECT , проверьте ваши ACL.

При успешной аутентификации пользователя в логе squid появится сообщение TCP_TUNNEL/200 39 CONNECT winitpro.ru:443 proxyusername HIER_DIRECT/xx.xx.xx.xx или TCP_MISS/200 .
Не забудьте задать настройки прокси сервера в браузерах на компьютерах пользователей. Задайте IP адрес (имя) хоста squid и порт в настройках браузера. На компьютеры Windows можно распространить настройки прокси через GPO.

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

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

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