Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

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

Используется в UNIX-подобных системах и в ОС семейства Windows NT. Имеет возможность взаимодействия с доменными службами путём аутентификации через LDAP, что позволяет использовать разграничения доступа к интернет ресурсам пользователей, которые имеют учётные записи на Windows Server, также позволяет организовать «нарезку» интернет трафика для различных пользователей.

Используется вместе с движками Mediawiki на wiki хостингах. Использование кэширующего прокси-сервера для сайтов становится выгодно примерно с 2000 посетителей в сутки.


Информация
titleСтатья применима к:
  • ОС ОН Орёл 2.12
    • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
    • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)

    • Astra Linux Special Edition РУСБ.10015-16 исп. 1

    • Astra Linux Common Edition 2.12


    Информация
    При написании раздела "Авторизация через Kerberos" использованы материалы, предоставленные Романом Кисловым.
    ОС СН Смоленск 1.6


    Установка пакета

    Пакет squid входит в дистрибутивы ОС ОН Орёл 2.12 и ОС СН Смоленск 1.6Astra Linux, по умолчанию не устанавливается и может быть установлен либо с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic), либо из командной строки командой:

    Информация
    sudo apt install squid

    После установки сервис запускается автоматически, однако для работы требует настроек.

    Первичная настройка

    пакета

    службы

    Конфигурация службы squid хранится Параметры настройки пакета squid хранятся в файле /etc/squid/squid.confИз . Из важнейших параметров конфигурации можно отметить следующие параметры:

    ПараметрОписание
    http_port 3128Порт, через который осуществляется подключение к серверу. По умолчанию 3128.

    http_access

    Разрешение на доступ к серверу.

    Примечание
    Это единственный параметр, который требует   требующий настройки , так как по умолчанию доступ запрещен всем.

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

    Информация
    http_access allow all


    После изменения параметров для вступления изменений в силу требуется перезапустить сервис.
    Это можно сделать стандартными командами:

    Command
    sudo systemctl restart squid


    Информация

    Перезапуск сервиса с настройками "по умолчанию" занимает около 35-ти секунд.Для более быстрого обновления конфигурации:

    Command
    squid -k reconfigure

    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, которая введена в домен.

    1. На Зарегистрировать службу на контроллере домена регистрируем сервис. Имя сервиса службв состоит из ключевого слова HTTP, символа косой черты и полного доменного имени (FQDN), в нашем случае имя сервиса будет. Например:

      Информация
      HTTP/squid.ipadomain.ru

      Зарегистрировать сервис можно через WEB-интерфейс FreeIPA:

      Информация
      "Идентификация" - "Службы" - "+ Добавить"

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

      Command
      sudo ipa service-add HTTP/squid.ipadomain.ru


    2. На сервере 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).

    3. Установить для созданного на предыдущем шаге файла с ключами права доступа:

      Command

      chown proxy:proxy /etc/squid/krb5.keytab
      chmod 640 /etc/squid/krb5.keytab


    4. Отредактировать юнит запуска службы squid ( файл /etc/init.d/squid), добавив после строки "DESC=Squid HTTP Proxy" строки:

      Информация
      KRB5_KTNAME=/etc/squid/krb5.keytab
      export KRB5_KTNAME

      Отредактировать файл конфигурации службы 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
      ...


    5. Обновить конфигурацию юнитов запуска системных служб командой

      Command
      sudo systemctl daemon-reload



    6. Перезапустить службу squid командой:

      Command
      sudo systemctl restart squid


    Настройка клиентов

    Если используется аутентификация Kerberos, то на клиентских компьютерах при указании настроек прокси в браузере необходимо использовать не IP-адрес прокси-сервера, а его полное доменное имя (FQDN),  в настоящем примере это squid.ipadomain.ru.

    Файлы журналов

    Журналы squid располагаются в каталоге /var/log/squid:

    ФайлОписание

    cache.log

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

    access.log

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