Интеграция 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

 

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

 

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

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

  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

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

10 − восемь =

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