Настройка squid centos 8
Он также выполняет прозрачное кэширование, которое снижает пропускную способность и улучшает время отклика за счет кэширования и повторного использования часто запрашиваемых веб-страниц.
Установка и настройка 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 [email protected] ) с достаточно стойким паролем без ограничения срока действия, учетная запись размещена в 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 [email protected]
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.
Читайте также: