Всем доброго времени суток . В прошлой части ( 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 должно измениться:
Далее нам нужно будет сформированный нами squid.keytab скинуть на прокси-сервер. Лично делаю это таким образом: сначала подключаюсь к контроллеру домена по RDP с обычной виндовой машины, а затем при помощи mRemoteNG перекидываю squid.keytab на прокси-сервер. Заходим на наш прокси-сервер по ssh, и затем делаем следующее:
Щелкаем правой кнопкой по вкладке отрытого соединения с прокси-сервером и выбираем пункт Передача файлов (SSH)
Далее, в строчке локальный файл, выбираем место, где лежит squid.keytab, а в строчке удалить файл пишем как этот файл будет называться, когда окажется на прокси-сервере.
В результате мы должны получить вот такую картину:
То есть squid.keytab окажется в папке нашего пользователя. В нашем случае это /home/arseniy . После этого нам нужно искомый файл скопировать в папку /etc/squid . Делается это при помощи команды:
copy squid.keytab /etc/squid (это при условии если мы находимся в папке /home/arseniy)
Далее нам нужно проверить kerberos аутентификацию. Делается это при помощи команды kinit. И по итогу мы должны получить следующий результат:
Это значит, что аутентификация прошла успешно. Так же можно посмотреть на билет, который выдал нам kerberos:
Далее при помощи команды kdestroy удаляем билет, выданный нам kerberos, он нам больше не пригодится.
Итак, аутентификацию проверили. Теперь нам нужно проверить авторизацию пользователей, которую осуществляет хелпер ext_kerberos_ldap_group_acl. Сделаем это при помощи команды:
В данный момент мы проверяем авторизацию пользователей из группы FullInternet. Введем пользователя, который есть в данной группе и посмотрим результат вывода команды.
Как видим, с первым пользователем я ошибся и оказалось, что его нет в данной группе. А вот второй пользователь оказался членом этой группы.
Но, чаще всего, для того чтобы работала авторизация пользователей через данный хелпер необходимо установить дополнительную библиотеку, которая называется 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-запись контроллера домена можно прочитать по ссылке:
Итак, мы проверили аутентификацию kerberos и авторизацию при помощи хелпера squid ext_kerberos_ldap_group_acl. В следующей 5-ой, заключительной части мы проверим работоспособность нашего прокси-сервера.