Первичная настройка службы
Конфигурация службы squid хранится в файле /etc/squid/squid.conf. Из важнейших параметров конфигурации можно отметить следующие:
| Параметр | Описание |
|---|
| http_port 3128 | Порт, через который осуществляется подключение к серверу. По умолчанию 3128. |
http_access | Разрешение на доступ к серверу. | Примечание |
|---|
| Это единственный параметр, требующий настройки , так как по умолчанию доступ запрещен всем. |
Простейшая настройка - чтобы разрешить доступ всем нужно добавить в файл конфигурации строчку: | Информация |
|---|
| http_access allow all |
|
После изменения параметров для вступления изменений в силу требуется перезапустить сервис. Это можно сделать стандартными командами:
| Command |
|---|
| sudo systemctl restart squid |
| Информация |
|---|
Перезапуск сервиса с настройками "по умолчанию" занимает около 35-ти секунд. |
ACL
Для управления доступом squid поддерживает работу со списками управления доступом (Access Control Lists, ACL). Примеры ACL:
| Информация |
|---|
# определить список портов acl Safe_ports port 80 21 443 563 70 210 1025-65535 280 488 591 777 |
Пример применения ACL:
| Информация |
|---|
# запретить работу со всеми портами, кроме безопасных http_access deny !Safe_ports |
Пример блокировки определённых сайтов с помощью ACL:
| Информация |
|---|
acl blocksite1 dstdomain telegram.com http_access deny blocksite1 |
Список ACL можно разместить во внешнем файле, например в файле /etc/squid/blockwebsites.lst:
| Информация |
|---|
acl blocksitelist dstdomain "/etc/squid/blockwebsites.lst" http_access deny blocksitelist |
При этом содержимое файла /etc/squid/blockwebsites.lst может быть:
| Информация |
|---|
google.com telegram.com |
Аналогично, можно блокировать адреса, содержащие ключевые слова:
| Информация |
|---|
acl blockkeyword1 url_regex telegram acl blockkeyword2 url_regex google http_access deny blockkeyword1 http_access deny blockkeyword2 |
Авторизация пользователей
Простая авторизация
В простейшем случае хранение паролей осуществляется в текстовом файле, содержащем учётные данные, закодированные в base64. Для обработки этого файла используется дополнительная программа
/usr/lib/squid3/basic_ncsa_auth, проверяющая соответствие переданной комбинации "логин:пароль" хранящимся в файле данными.
При этом на авторизованных пользователей распространяются любые правила контроля доступа, записанные в acl главного конфигурационного файла Squid.
Настройка конфигурации (файл паролей /etc/squid/users ):
| Информация |
|---|
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/users acl lan proxy_auth REQUIRED # создание списка доступа, в который включены все прошедшие аутентификацию пользователи http_access allow lan # теперь пользователям списка lan разрешен доступ к интернету |
Файл паролей для реализации можно создать с помощью утилиты htpasswd, которая входит в состав пакета apache2-utils. Синтаксис команды для htpasswd следующий:
| Command |
|---|
| htpasswd [-c] /создаваемый/файл/паролей имя_пользователя |
Параметр -с используется для создания нового файла, изменение существующего файла производится без этого параметра. Для созданного файла желательно установить права на чтение только пользователю и группе, от имени которой работает Squid:
| Command |
|---|
chmod 440 /etc/squid/users chown proxy:proxy /etc/squid/users |
Авторизация через Kerberos
В данной главе рассматривается настройка авторизации пользователей через контроллер домена Контроллер ЕПП FreeIPA в Astra Linux. Предполагается, что имеется настроенный сервер (контроллер домена) FreeIPA с полным доменным именем (FQDN) ipa.ipadomain.ru, а сервер squid расположен на отдельной машине с полным доменным именем (FQDN) squid.ipadomain.ru, которая введена в домен.
Зарегистрировать службу на контроллере домена. Имя службв состоит из ключевого слова HTTP, символа косой черты и полного доменного имени (FQDN). Например:
| Информация |
|---|
| HTTP/squid.ipadomain.ru |
Зарегистрировать сервис можно через WEB-интерфейс FreeIPA:
| Информация |
|---|
| "Идентификация" - "Службы" - "+ Добавить" |
или из командной строки, выполнив на контроллере домена команду
| Command |
|---|
| sudo ipa service-add HTTP/squid.ipadomain.ru |
На сервере squid получить ключи службы, для чего на сервере squid выполнить команду
| Command |
|---|
| sudo ipa-getkeytab -s ipa.ipadomain.ru -p HTTP/squid.ipadomain.ru -k /etc/squid/krb5.keytab |
где
-s - имя сервера, от которого нужно получить ключи (ipa.ipadomain.ru);
-p - имя службы, для которой нужно получить ключи (HTTP/squid.ipadomain.ru);
-k - имя файла, в котором нужно сохранить полученные ключи (/etc/squid/krb5.keytab).
Установить для созданного на предыдущем шаге файла с ключами права доступа:
| Command |
|---|
chown proxy:proxy /etc/squid/krb5.keytab chmod 640 /etc/squid/krb5.keytab |
Отредактировать файл конфигурации службы squid /etc/squid/squid.conf, закомментировав строки "#http_access allow localnet" и "#http_access allow localhost" и добавив после них строки для включения авторизации через Kerberos:
| Информация |
|---|
... #http_access allow localnet #http_access allow localhost auth_param negotiate program /usr/lib/squid/negotiate_kerberos_auth -k /etc/squid/krb5.keytab -d -s HTTP/squid.ipadomain.ru auth_param negotiate children 10 auth_param negotiate keep_alive on acl auth proxy_auth REQUIRED http_access deny !auth http_access allow auth ... |
Обновить конфигурацию юнитов запуска системных служб командой
| Command |
|---|
| sudo systemctl daemon-reload |
Перезапустить службу squid командой:
| Command |
|---|
| sudo systemctl restart squid |
Настройка клиентов
Если используется аутентификация Kerberos, то на клиентских компьютерах при указании настроек прокси в браузере необходимо использовать не IP-адрес прокси-сервера, а его полное доменное имя (FQDN), в настоящем примере это squid.ipadomain.ru.
Файлы журналов
Журналы squid располагаются в каталоге /var/log/squid:
| Файл | Описание |
|---|
cache.log | Содержит отладочную информацию и сообщения о ошибках, которые генерирует Squid. Обычно это отчеты о ошибках при программировании Squid, полезные при тестировании новых возможностей или поиске причин непонятного поведения прокси. |
| access.log | Содержит подробную информацию о подключениях, пригодную для автоматического анализа. |