Интеграция Squid 4.9 с Active Directory на Debian 9 Stretch. Реализация Kerberos аутентификации и LDAP авторизации.

Разберем как настроить связь Squid 4.9 c Active Directory через Kerberos аутентификацию и Basic LDAP авторизацию, для предоставления доступа в интернет по доменным учетным записям и разграничение прав согласно заданным группам безопасности Active Directory.

 

Исходные данные:

  • Контроллер домена (DC1) на Windows Server 2012 R2, домен JAKONDA.LOCAL
  • Прокси-сервер Squid 4.9 (squid) на Debian 9 Stretch

 

Подготовка системы (Debian 9 Stretch)

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

 

Указываем FQDN (Fully Qualified Domain Name) имя системы, в файле (/etc/hostname):

 

Так же файл (/etc/hosts) приводим к виду таким образом, чтобы в нём была запись с полным доменным именем компьютера и с коротким именем, ссылающаяся на один из внутренних IP:

 

Настраиваем синхронизацию времени с контроллером домена, выполняем установку NTP, выполняем синхронизацию времени с контроллером домена:

Более подробно о синхронизации времени на Debian 8 Jessie/Ubuntu Server 14.04 можно почитать в этой статье

 

Настройка Active Directory (Windows Server 2012 R2)

В DNS зону (JAKONDA.LOCAL), добавляем A-запись файлового сервера:

 

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

Создаем KEYTAB-файл (необходим для аутентификации пользователей в Active Directory). В командной строке с правами администраторы выполняем команду (соблюдая регистр):

 

Полученный KEYTAB-файл, передаем любым удобным способом на файловый сервер (расположение KEYTAB-файла указываем — /etc/squid/squid.keytab). Как передать файл посредством утилиты PuTTY можно прочитать тут

 

Назначаем права доступа на KEYTAB-файл для использования его прокси-сервером:

 

Настройка Kerberos

Установка пакетов для поддержки аутентификации Kerberos:

В ходе установки может появится запрос указать область по-умолчанию для Kerberos, область необходимо его указать в заглавном виде (прим. JAKONDA.LOCAL)

 

Файл конфигурации Kerberos (/etc/krb5.conf), приводим к виду:

Соответственно подставляем название своего домена вместо jakonda.local/JAKONDA.LOCAL

 

Проверка работы Kerberos, выполним авторизацию в Active Directory:

Удаляем полученный билет:

 

Настройка Squid

Сперва установим необходимые пакеты для корректной работы механизмов Kerberos и LDAP:

 

В стартовом скрипте (/etc/init.d/squid) добавим путь к keytab-файлу. В скрипте находим строку DESC=»Squid HTTP Proxy» и ниже дописываем:

 

Применяем изменения в демоне и перезапускаем squid:

 

Для использования Kerberos аутентификации и LDAP авторизации, необходимо в файле конфигурации (/etc/squid/squid.conf) указать следующие параметры:

ПРИМЕЧАНИЕ. Обращаю внимание что в конфигурации строку http_access allow localnet необходимо закоментировать либо вовсе удалить из конфигурации.

Указанные параметры позволят выход в интернет только авторизованным в Active Directory пользователям. В случае если выход в интернет осуществляется из доменной системы и авторизованным доменным пользователем, то аутентификация будет проходить по методу SSO (Single Sign On), в противном случае будет запрошен ЛОГИН\ПАРОЛЬ (доменной учетной записи) для доступа в интернет.

 

 

Для более гибкого управления доступом в интернет конечно же необходимо задействовать Группы безопасности Active Directory. Рассмотрим пример использования групп безопасности в Squid.

 

Сперва создадим в Active Directory прим. следующие группы безопасности:

 

Для проверки, что хелперы (Kerberos и Basic LDAP) отрабатывают корректно, выполним для каждого из них запрос, в котором проверим членство пользователя squid в группе безопасности SQUID_FullAccess.

 

Для Kergeros, выполним запрос:

Для Basic LDAP, выполним запрос:

ПРИМЕЧАНИЕ. В случае если все работает корректно, то ответ на запрос в случае положительного результата, будет OK или же ERR. В моем случае пользователь squid имеет членство в группе SQUID_FullAccess

 

Теперь в файле конфигурации (/etc/squid/squid.conf) укажем следующие параметры:

Для общего понимания указанных выше параметров, небольшое пояснение. Сперва описывается механизм работы хелпера Kerberos, в котором мы указываем в какой группе необходимо проверять членство пользователя. Для каждой группы указывается отдельный хелпер Kerberos.

Далее описывается механизм работы хелпера Basic LDAP, в котором указывается учетная запись (я использую ту для которой делался keytab-файл) с помощью которой будет просматриваться каталог LDAP, а так же задается область в которой находятся группы безопасности. Далее задаются ACL (Access Lists), которые сопоставляются с указанными хелперами.

 

Зададим порядок обработки определенных выше ACL:

 

Применяем внесенные изменения в файл конфигурации:

 

На этом настройка squid завершена, можно приступать к проверке работы. Для этого на пользовательских ПК необходимо задать использование Прокси-сервера (Свойствах обозревателя — Подключения — Настройка сети). В поле «Адрес« указываем FQDN имя системы Squid, в моем случае это squid.jakonda.local и заданный порт.

При работе в прозрачном (transparent) режиме, аутентификация пользователей Active Directory невозможна! Подробнее: http://wiki.squid-cache.org/Features/Authentication#Authentication_in_interception_and_transparent_modes

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

 

БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
Загрузка...

Всего комментариев: 4 Комментировать

  1. Антон /

    Отличный мануал! Лучший во всем инете! Спасибо!!!

    1. Жаконда / Автор записи

      Спасибо! Рад что он помог вам! 🙂

  2. Артем /

    Здравствуйте! не сталкивались с такой ошибкой cache.log:

    negotiate_kerberos_auth.cc(612): pid=1493 :2020/06/11 13:30:33| negotiate_kerberos_auth: DEBUG: Got ‘YR YII…HcA==’ from squid (length: 5659).
    negotiate_kerberos_auth.cc(679): pid=1493 :2020/06/11 13:30:33| negotiate_kerberos_auth: DEBUG: Decode ‘YII…HcA==’ (decoded length estimate: 4242).
    negotiate_kerberos_auth.cc(182): pid=1493 :2020/06/11 13:30:33| negotiate_kerberos_auth: ERROR: gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information. Encryption type not permitted
    2020/06/11 13:30:33| negotiate_kerberos_auth: INFO: User not authenticated
    2020/06/11 13:30:33 kid1| ERROR: Negotiate Authentication validating user. Result: {result=BH, notes={message: gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information. Encryption type not permitted; }}

    система CenOS 8, squid 4.4

  3. demiant /

    впринципе внятный мануал, правда я собирал кальмара из исходников на 9.13, сам кальмар 4.13, единственное это был бы внятный мануал по sams2 на сборку из исходников, увы все разрабы забили на ротаторы логов под кальмара, что увы печально(

Оставить ответ

шестнадцать − семь =

© IT-блог Жаконды All Rights Reserved.
Яндекс.Метрика