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 версии, поэтому все писалось с нуля. Для удобства чтения настройка будет разбита не несколько статей:
- Серверная часть и настройка авторизации Kerberos (Active Directory)
- Настройка файла конфигурации Squid
- Настройка доступов и скоростей
Немного теории для тех, кто вообще не знает, что это и с чем «едят» кальмара..
Гугл говорит нам замысловато..
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
31.03.2022
itpro
CentOS, Linux, Ubuntu
комментариев 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, нужно дополнительно установить пакет:
- В 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
Чтобы ввести все опции, с которыми собран 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.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)
Можно реализовать аутентификацию в 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 в реальном времени используйте команду:
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.
Предыдущая статья Следующая статья