Найти тему
Арсений Бухарский

Настройка и установка SQUID на Debian 10.9 с kerberos-аутентификацией. Часть 4. Проверка ауттен-ии kerberos и авторизации squid.

Всем доброго времени суток . В прошлой части ( https://zen.yandex.ru/media/id/60e1d8d706f073705f93e6e0/nastroika-i-ustanovka-squid-na-debian-109-s-kerberosautentifikaciei-chast-3-vvod-proksiservera-v-domen-active-directory-60f08c62607ad91f33e9e8ae) мы вводили наш прокси-сервер в домен. Сегодня мы настроим аутентификацию kerberos и авторизацию в squid.

Итак для начала мы должны изменить конфигурационный файл krb5.conf, находящийся в папке etc, который будет отвечать за аутентификацию в домене. Готовый файл krb5.conf должен, в конечном итоге, выглядеть следующим образом:

Но сразу встает вопрос: а что это за файл squid.keytab? Дело в в том, что данный файл формируется на контроллере домена и отвечает за kerberos-аутентификацию. Итак, давайте сформируем его. Для этого идем на контроллер домена, открываем PowerShell с правами админа ( можно и через cmd, если например у вас контроллер домена на 2008 винде) и вводим следующую команду:

ktpass -princ HTTP/squid.telmana.local@TELMANA.LOCAL -mapuser squid -crypto RC4-HMAC-NT -pass "11Qwerty" -ptype KRB5_NT_PRINCIPAL -out C:\squid.keytab

Поясню немного, что тут написано. Дело в том, что этой командой создается уже описанный выше .keytab файл и в нем будет содержаться информация о пользователе с именем squid (пользователя, при помощи которого мы будем аутентифицироваться). Далее идем в корень диска C и забираем оттуда наш файл squid.keytab. Да и после данной команды имя пользователя squid должно измениться:

-2

Далее нам нужно будет сформированный нами squid.keytab скинуть на прокси-сервер. Лично делаю это таким образом: сначала подключаюсь к контроллеру домена по RDP с обычной виндовой машины, а затем при помощи mRemoteNG перекидываю squid.keytab на прокси-сервер. Заходим на наш прокси-сервер по ssh, и затем делаем следующее:

Щелкаем правой кнопкой по вкладке отрытого соединения с прокси-сервером и выбираем пункт Передача файлов (SSH)

-3

Далее, в строчке локальный файл, выбираем место, где лежит squid.keytab, а в строчке удалить файл пишем как этот файл будет называться, когда окажется на прокси-сервере.

-4

В результате мы должны получить вот такую картину:

-5

То есть squid.keytab окажется в папке нашего пользователя. В нашем случае это /home/arseniy . После этого нам нужно искомый файл скопировать в папку /etc/squid . Делается это при помощи команды:

copy squid.keytab /etc/squid (это при условии если мы находимся в папке /home/arseniy)

Далее нам нужно проверить kerberos аутентификацию. Делается это при помощи команды kinit. И по итогу мы должны получить следующий результат:

-6

Это значит, что аутентификация прошла успешно. Так же можно посмотреть на билет, который выдал нам kerberos:

Здесь мы можем видеть когда билет начал действовать и когда закончит действовать.
Здесь мы можем видеть когда билет начал действовать и когда закончит действовать.

Далее при помощи команды kdestroy удаляем билет, выданный нам kerberos, он нам больше не пригодится.

Итак, аутентификацию проверили. Теперь нам нужно проверить авторизацию пользователей, которую осуществляет хелпер ext_kerberos_ldap_group_acl. Сделаем это при помощи команды:

-8

В данный момент мы проверяем авторизацию пользователей из группы FullInternet. Введем пользователя, который есть в данной группе и посмотрим результат вывода команды.

-9

Как видим, с первым пользователем я ошибся и оказалось, что его нет в данной группе. А вот второй пользователь оказался членом этой группы.

Но, чаще всего, для того чтобы работала авторизация пользователей через данный хелпер необходимо установить дополнительную библиотеку, которая называется libsasl2-modules-gssapi-mit. Без установки данной библиотеки возникает ошибка аутентификации:

ERROR: ldap_sasl_interactive_bind_s error: Unknown authentication method

ERROR: Error while binding to ldap server with SASL/GSSAPI: Unknown authentication method

Так же, во время проверки работы хелпера, отвечающего за авторизацию может всплыть и такая ошибка:

support_ldap.cc(856): pid=1593 :2015/06/09 15:50:55| kerberos_ldap_group: DEBUG: Bind to ldap server with SASL/GSSAPI

support_sasl.cc(268): pid=1593 :2015/06/09 15:50:55| kerberos_ldap_group: ERROR: ldap_sasl_interactive_bind_s error: Local error

support_ldap.cc(860): pid=1593 :2015/06/09 15:50:55| kerberos_ldap_group: ERROR: Error while binding to ldap server with SASL/GSSAPI: Local error

Эта ошибка означает, что на контроллере домена в службе DNS отсутствует PTR-запись самого же контроллера домена. Подробнее, как создать PTR-запись контроллера домена можно прочитать по ссылке:

https://disk.yandex.ru/edit/disk/disk%2Fdisk%2FLinux%20и%20Unix%2FПрокси%20сервер%20на%20Debian%2FУстановка%20и%20конфигруция%20прокси-сервера.docx

Итак, мы проверили аутентификацию kerberos и авторизацию при помощи хелпера squid ext_kerberos_ldap_group_acl. В следующей 5-ой, заключительной части мы проверим работоспособность нашего прокси-сервера.