Настройка squid centos 8

Обновлено: 04.07.2024

Он так­же выпол­ня­ет про­зрач­ное кэши­ро­ва­ние, кото­рое сни­жа­ет про­пуск­ную спо­соб­ность и улуч­ша­ет вре­мя откли­ка за счет кэши­ро­ва­ния и повтор­но­го исполь­зо­ва­ния часто запра­ши­ва­е­мых веб-страниц.

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

Запу­сти­те обнов­ле­ние системы

Обно­ви­те кэш систем­ных пакетов:

Установка Squid в cистеме Rocky Linux

Squid proxy досту­пен в репо­зи­то­ри­ях Rocky Linux 8 по умол­ча­нию и может быть уста­нов­лен путем выпол­не­ния команды;

dnf install squid

Запуск Squid на Rocky Linux 8

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

systemctl enable --now squid

Настройка Squid Proxy в Rocky Linux 8

/etc/squid/squid.conf – это файл кон­фи­гу­ра­ции Squid Proxy по умолчанию.

Он постав­ля­ет­ся с реко­мен­ду­е­мы­ми мини­маль­ны­ми настрой­ка­ми конфигурации.

Ниже при­ве­де­но содер­жи­мое это­го фай­ла с уда­лен­ны­ми стро­ка­ми комментариев;

Преж­де чем при­сту­пить к настрой­ке кон­фи­гу­ра­ции Squid в соот­вет­ствии с ваши­ми потреб­но­стя­ми, создай­те резерв­ную копию фай­ла конфигурации.

Настройка политик доступа Squid

Создай­те спи­сок кон­тро­ля досту­па, что­бы опре­де­лить локаль­ные сети, кото­рые долж­ны исполь­зо­вать Squid в каче­стве прокси-сервера.

Каж­дый ACL состо­ит из име­ни, типа и зна­че­ния и зада­ет­ся с помо­щью опции acl.

Напри­мер, что­бы настро­ить хосты в сети 192.168.60.0/24 на исполь­зо­ва­ние Squid в каче­стве прок­си-сер­ве­ра, мож­но исполь­зо­вать ACL сле­ду­ю­ще­го вида;

acl mylocalnet src 192.168.60.0/24

Прок­си созда­ет ACL под назва­ни­ем mylocalnet, кото­рый опре­де­ля­ет хосты в ука­зан­ной сети.

После опре­де­ле­ния ACL необ­хо­ди­мо доба­вить стро­ку, кото­рая ссы­ла­ет­ся на опре­де­лен­ный ACL , что­бы раз­ре­шить или запре­тить доступ к функ­ции кэша.

Squid чита­ет кон­фи­гу­ра­цию свер­ху вниз, поэто­му поря­док опций кон­фи­гу­ра­ции важен.

В этой статье предполагается, что у вас есть хотя бы базовые знания Linux, вы знаете, как использовать оболочку, и, что наиболее важно, вы размещаете свой сайт на собственном VPS. Установка довольно проста и предполагает, что вы работаете с учетной записью root, в противном случае вам может потребоваться добавить sudo к командам для получения привилегий root. Я покажу вам пошаговую установку Squid на сервере CentOS 8.

Установка Squid Proxy на CentOS 8

Шаг 1. Сначала давайте начнем с проверки актуальности вашей системы.

Шаг 2. Установка прокси-сервера Squid на CentOS 8.

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

После завершения установки запустите и включите ее при запуске системы, используя следующие команды:

Шаг 3. Настройка прокси-сервера Squid.

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

Теперь мы открываем основной файл конфигурации squid и добавляем / редактируем следующее:

Затем создайте наш файл аутентификации, который Squid может использовать для проверки аутентификации пользователей:

Шаг 4. Настройте брандмауэр для Squid.

Если брандмауэр включен, разрешите порт Squid. Замените порт, если вы изменили значение по умолчанию:

Наконец, завершена часть настройки шага. Теперь пора протестировать просмотр с указанием IP-адреса squid и порта по умолчанию в браузере клиента. В Firefox настройте его для подключения к внешней сети через сервер Squid. Предпочтения> Общие> Параметры сети> Настройка прокси вручную. Установите флажок Использовать этот прокси-сервер для всех протоколов.

Поздравления! Вы успешно установили squid . Благодарим за использование этого руководства по установке прокси-сервера Squid в системе CentOS 8. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный сайт Squid .

Веб прокси Squid на CentOS 8 в окружении Active Directory 2019


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

Статья описывает минимальную рабочую конфигурацию прокси Squid на CentOS Stream 8 в связке с Windows Server 2019 Active Directory, с авторизацией Kerberos, NTLM и, опционально, LDAP.

1. Описание среды

· Домен Active Directory - papa.local (NetBIOS имя PAPA ), ОС контроллеров домена - Windows Server 2019 Datacenter Edition, функциональные уровни домена и леса – Windows Server 2016;

· Подсеть - 192.168.44.0/24 , шлюз по умолчанию - 192.168.44.2 ;

· Контроллеры домена - cntr-dc2.papa.local (IP-адрес 192.168.44.12 ) и cntr-dc4.papa.local (IP-адрес 192.168.44.28 ); мастер всех операций - cntr-dc4.papa.local ;

· Службы DNS и WINS (для совместимости) размещены на контроллерах домена;

· Сервер Squid с одним сетевым интерфейсом, ОС - CentOS Stream 8, имя хоста - cntr-gate4.papa.local , IP-адрес - 192.168.44.35 ;

· В домене AD для авторизации Squid создан специальный пользователь PAPA\squid (UPN squid@papa.local ) с достаточно стойким паролем без ограничения срока действия, учетная запись размещена в OU Papa.local/Special ;

· Вся инфраструктура – виртуальная Hyper-V (в принципе, это неважно).

2. Установка CentOS

Установка со стандартного дистрибутива CentOS Stream 8, вариант установки – Minimal Install , задаем пароль для root :



Задаем IP-адрес, шлюз по умолчанию и серверы DNS - контроллеры домена, имя хоста cntr-gate4.papa.local и суффикс поиска DNS papa.local :


Задаем NTP-серверы - используем службу NTP контроллеров домена, временная зона Europe/Moscow :




После установки системы следует перезагрузка.

3. Предварительная конфигурация и установка Squid

Устанавливаем ntpstat и проверяем синхронизацию времени:

dnf install ntpstat

chronyc sources -v

Должны увидеть успешную синхронизацию времени:



Добавляем разрешение порта 3128/tcp для прокси Squid:

firewall-cmd --permanent --add-port=3128/tcp

Устанавливаем Squid (для нашей конфигурации достаточно готового пакета из репозитария):

dnf install squid

Объявляем в /etc/squid/squid.conf нашу сеть как локальную:

acl localnet src 192.168.44.0/24

Включаем службу Squid для автоматического запуска:

systemctl enable squid --now

4. Настройка Kerberos

Сначала мы должны подготовить файл ключей (keytab) для Kerberos. Для этого запускаем на контроллере домена следующую команду:

Регистр символов важен! Пароль указывается в двойных кавычках, значение “ password “ взято для примера. Результирующий файл proxy.keytab необходимо скопировать в каталог /etc/squid на системе CentOS ( cntr-gate4.papa.local ).

Учетная запись PAPA\squid в AD выглядит так:



Все остальное делается на системе CentOS. Устанавливаем необходимые пакеты для поддержки Kerberos:

dnf install cyrus-sasl-gssapi krb5-workstation krb5-devel

Теперь редактируем файл конфигурации Kerberos /etc/krb5.conf . У меня файл получился такой:

После правки файла /etc/krb5.conf перегружаем систему командой reboot .

Теперь нужно проверить корректность работы Kerberos. Для этого, получаем билеты от KDC и проверяем результат (я для примера сначала использую встроенную учетную запись администратора домена AD, но это не обязательно):

Если мы все сделали правильно, то должны увидеть что-то, похожее на это:


Файл ключей proxy.keytab критичен с точки зрения безопасности системы. Поскольку он предназначен специально для сервиса Squid, ограничиваем доступ к нему только для учетной записи службы:

chown squid:squid /etc/squid/proxy.keytab

chmod 400 /etc/squid/proxy.keytab

auth_param negotiate children 100 startup=0 idle=10

auth_param negotiate keep_alive on

acl authenticated_user proxy_auth REQUIRED

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

Перезапускаем Squid, чтобы конфигурация вступила в силу:

service squid restart

Настройка авторизации Kerberos на этом закончена.

5. Настройка NTLM

Так или иначе, обычно этот старый протокол в доменной среде до сих пор используется, несмотря на его очевидные недостатки. Поэтому, здесь описывается рабочая конфигурация для NTLM тоже. Для поддержки NTLM, мы используем связку Samba/Winbind.

Устанавливаем необходимые пакеты для поддержки Samba и Winbind:

dnf install samba samba-client samba-winbind samba-winbind-clients krb5-workstation

Включаем необходимые службы:

systemctl enable smb

systemctl enable nmb

systemctl start smb

systemctl start nmb

Теперь редактируем файл конфигурации Samba /etc/samba/smb.conf для членства в домене. У меня файл получился такой:

password server = cntr-dc4.papa.local

idmap uid = 10000-20000

idmap gid = 10000-20000

winbind use default domain = no

winbind request timeout = 300

wins server = 192.168.44.28

passdb backend = tdbsam

printcap name = cups

load printers = yes

cups options = raw

comment = Home Directories

valid users = %S, %D%w%S

inherit acls = Yes

comment = All Printers

create mask = 0600

comment = Printer Drivers

write list = @printadmin root

force group = @printadmin

create mask = 0664

directory mask = 0775

Включаем систему в домен, используя учетную запись Active Directory с правом добавления компьютеров. У меня это встроенная учетная запись администратора:

net ads join -U Administrator

Вводим пароль и проверяем членство в домене:

net ads testjoin

Если мы все сделали правильно, то должны увидеть “Join is OK”:


при этом, в домене AD (по умолчанию в стандартном контейнере Computers) должен создаться объект компьютера для CNTR-GATE4 .

Перестартуем службы Samba и включаем Winbind:

systemctl restart smb

systemctl restart nmb

systemctl enable winbind

systemctl start winbind

Проверяем функциональность Winbind:

Должны увидеть что-то похожее на это:




(это мои примеры. В любом случае, это должны быть валидные списки групп и пользователей домена).

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --domain=PAPA

auth_param ntlm children 100 startup=0 idle=10

auth_param ntlm keep_alive off

Перезапускаем Squid, чтобы конфигурация вступила в силу:

service squid restart

Настройка авторизации NTLM закончена.

6. Настройка LDAP (опционально)

Squid позволяет настроить авторизацию также и по протоколу LDAP. В данном примере, доступ предоставляется для членов группы безопасности AD InternetAccess в домене papa.local с помощью стандартного helper’а ext_ldap_group_acl . Для этого в конфигурацию Squid необходимо добавить следующие строки:

external_acl_type ldap_group %LOGIN /usr/lib64/squid/ext_ldap_group_acl -R -b "dc=papa,dc=local" -D "cn=squid,ou=special,dc=papa,dc=local" -K -W /etc/squid/password.txt -f "(&(objectclass=person) (sAMAccountname=%u)(memberof=cn=%g,cn=users,dc=papa,dc=local))" -h cntr-dc4.papa.local

acl InternetAccess external ldap_group InternetAccess

Для LDAP-запросов к AD здесь мы используем учетную запись PAPA\squid с паролем (можно использовать и другую - право на чтение LDAP в домене по умолчанию имеет любая запись рядового пользователя в группе Domain Users ). В данном примере пароль указан в дополнительном файле /etc/squid/password.txt открытым текстом, без символа перевода строки. Файл можно создать в любом текстовом редакторе (вроде vi /etc/squid/password.txt ). Из соображений безопасности, доступ к нему следует ограничить для учетной записи службы:

chown squid:squid /etc/squid/password.txt

chmod 400 /etc/squid/password.txt

Альтернативно, можно указать пароль с ключом -W в хелпере прямо в файле /etc/squid/squid.conf , но это небезопасно – пароль здесь необходимо указывать открытым текстом.

После внесения изменения в конфигурацию, Squid необходимо перезапустить:

service squid restart

Одно замечание – пароль в запросах LDAP для учетной записи PAPA\squid до контроллера домена здесь передается по сети открытым текстом. А это может быть риском.

7. Настройка доступа для группы Active Directory с авторизацией NTLM и Kerberos

Выше были описаны базовые настройки авторизации по Kerberos и NTLM. Чтобы ограничить доступ в Интернет для членов определенной группы (здесь это PAPA\InternetAccess , как в примере для LDAP), необходимо прописать следующие строки в /etc/squid/squid.conf :

external_acl_type InternetAccess_from_ad_krb ttl=300 negative_ttl=60 %LOGIN /usr/lib64/squid/ext_kerberos_ldap_group_acl -g InternetAccess@PAPA.LOCAL

external_acl_type InternetAccess_from_ad_ntlm %LOGIN /usr/lib64/squid/ext_wbinfo_group_acl -d

acl InternetAccess_acl_krb external InternetAccess_from_ad_krb

acl InternetAccess_acl_ntlm external InternetAccess_from_ad_ntlm InternetAccess

8. Базовая аутентификация

9. Файлы конфигурации для примера из статьи

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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


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

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


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

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

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

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

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


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


Заключение

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

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