LINUX.ORG.RU
решено ФорумAdmin

Squid 3 + домен на Samba 4

 , ,


0

2

Всем привет. Уже второй день занимаюсь чем-то непотребным с пингвинами. А именно пытаюсь настроить Kerberos-авторизацию в Squid 3. Инфраструктура следующая: сервак на бубунту сервер 14.04. На нем стоит самба 4, в которой поднят домен через samba-tool domain provision. На этом же серваке стоит кальмар. Домен фукнционирует нормально. Компы загоняются, юзеры авторизуются, все ок. Пока настроил basic-ldap аутентификацию в сквиде, чтобы инет у пользователей работал. Пытаюсь сгенерить файл keytab следующей командой:

msktutil -c -b "CN=Computers" -s HTTP/{SERVERNAME}.{domainname} -k /etc/squid3/PROXY.keytab --computer-name {SERVERNAME} --upn HTTP/{SERVERNAME}.{domainname} --server {SERVERNAME}.{domainname} --verbose
Где {SERVERNAME} - имя сервера, на котором развернут домен и кальмар {domainname} - полное имя домена На эту команду получаю такой ответ:
 -- init_password: Wiping the computer password structure
 -- generate_new_password: Generating a new, random password for the computer account
 -- generate_new_password:  Characters read from /dev/udandom = 82
 -- create_fake_krb5_conf: Created a fake krb5.conf file: /tmp/.msktkrb5.conf-ZxlBKg
 -- reload: Reloading Kerberos Context
 -- finalize_exec: SAM Account Name is: {SERVERNAME}$
 -- try_machine_keytab_princ: Trying to authenticate for {SERVERNAME}$ from local keytab...
 -- try_machine_keytab_princ: Error: krb5_get_init_creds_keytab failed (No such file or directory)
 -- try_machine_keytab_princ: Authentication with keytab failed
 -- try_machine_keytab_princ: Trying to authenticate for host/{servername} from local keytab...
 -- try_machine_keytab_princ: Error: krb5_get_init_creds_keytab failed (Client not found in Kerberos database)
 -- try_machine_keytab_princ: Authentication with keytab failed
 -- try_machine_password: Trying to authenticate for {SERVERNAME}$ with password.
 -- create_default_machine_password: Default machine password for {SERVERNAME}$ is {servername}
 -- try_machine_password: Error: krb5_get_init_creds_keytab failed (Bad encryption type)
 -- try_machine_password: Authentication with password failed
 -- try_user_creds: Checking if default ticket cache has tickets...
 -- finalize_exec: Authenticated using method 4

 -- ldap_connect: Connecting to LDAP server: {SERVERNAME}.{domainname} try_tls=YES
 -- ldap_connect: Connecting to LDAP server: {SERVERNAME}.{domainname} try_tls=NO
SASL/GSSAPI authentication started
Error: ldap_sasl_interactive_bind_s failed (Local error)
Error: ldap_connect failed
--> Is your kerberos ticket expired? You might try re-"kinit"ing.
 -- ~KRB5Context: Destroying Kerberos Context
kinit разумеется делал. После этого запускал klist, там все в порядке. Подскажи, уважаемый ЛОР, что я делаю не так и как мне сгенерить кейтаб??

Попробовал без генерации keytab сделать kinit и затем в squid.conf прописал

auth_param negotiate program /usr/lib/squid3/negotiate_kerberos_auth -r -s HTTP/{servername}@{DOMAINNAME}
После перезапуска кальмара получил следующие строки в cache.log:
2015/09/16 14:31:18| ERROR: Negotiate Authentication validating user. Error returned 'BH received type 1 NTLM token'
2015/09/16 14:31:30| ERROR: Negotiate Authentication validating user. Error returned 'BH gss_acquire_cred() failed: Unspecified GSS failure.  Minor code may provide more information. Permission denied'



Последнее исправление: AlexPRN (всего исправлений: 2)

чтобы создать keytab берешь в руки ktpass и запускаешь ее на контроллере домена по пунктам: 1)создать пользователя с вечным паролем 2)проследить чтобы он был в контейнере который в самой вершине ад 3)после чего экспортируем кейтаб

ktpass -princ HTTP/proxy.example.org@EXAMPLE.ORG -mapuser SAMPLE\squid -pass passWD -crypto all -ptype KRB5_NT_SRV_HST -out squid.keytab

где учетку зовут «squid», ее пароль «passWD» домен назван «example.org», NetBios-имя моего домена «sample». Контроллеры домена называются dc1.example.org и dc2.example.org. Сам сервер, который я настраивал зовется proxy.example.org. На выходе ktpass получился файл squid.keytab. Его нужно скопировать на себе на сервер.

потом проверить kinit -V -k -t /путь/до/файла/кейтаб HTTP/proxy.example.org

hydropon
()
Ответ на: комментарий от hydropon

Контроллер домена в моем случае - тот же сервер, на котором кальмар стоит. У меня домен развернут на samba 4. Ktpass, соответственно, я не запущу.

AlexPRN
() автор топика
Ответ на: комментарий от AlexPRN

есть еще 2 способа извлечения файла keytab для созданной «учетки»: с помощью samba на *nix сервере (сервер должен быть в домене), утилитой mskutil на *nix сервере

но как я не подскажу, потому что не знаю)

hydropon
()

Сгенерировал keytab через Samba. Включил авторизацию Kerberos d squid. нифига не работает. В логах следующее:

/var/log/squid3/cache.log                                                                                     
2015/09/16 18:19:36| ERROR: Negotiate Authentication validating user. Error returned 'BH gss_acquire_cred() failed: Unspecified GSS failure.
  Minor code may provide more information. Permission denied'
2015/09/16 18:19:36| ERROR: Negotiate Authentication validating user. Error returned 'BH gss_acquire_cred() failed: Unspecified GSS failure.
  Minor code may provide more information. Permission denied'

AlexPRN
() автор топика
Ответ на: комментарий от AlexPRN

вот и у меня ничего не работает как буд то сам процесс авторизации не пашет(

hydropon
()

Отвечу сам себе. Проблему с авторизацией через керберос решил. Нужно было просто на некоторое время на нее забить и переключиться на другие задачи :). Истратил много времени на гуглинг, пусть это останется в анналах ЛОРа :) Итак, мои ошибки: 1) использование msktutil при работе kerberos в составе домен-контроллера на базе samba4 (samba-ad-dc) - это неправильно. Правильно юзать samba-tool domain exportkeytab

2) перед тем, как пытаться экспортировать кейтаб нужно сделать следующее:

samba-tool spn add HTTP/gw0 proxy_auth
samba-tool spn add HTTP/gw0.example.com proxy_auth
где gw0 - hostname нашей прокси, example.com - имя домена, а proxy_auth - имя пользователя, которого мы создаем для авторизации squid

3) прежде чем генерировать keytab нужно внести изменения в атрибуты пользователя proxy_auth в домене, а именно (нашел здесь:

find the just created user Edit «userPrincipalName» to reflect servicePrincipleName + REALM (in my case http/myserver.mycompany.com@MYCOMPANY.COM)

По-русски: нужно изменить значение атрибута «userPrincipalName», чтобы оно соответствовало тому, что написано в примере выше

4) ВСЕГДА ИМЯ РЕАЛМА ПИШЕМ БОЛЬШИМИ БУКВАМИ, а имя сервера и имя домена маленькими, даже если в /etc/hosts имя сервака написано большими буквами

5) Тут написано,как потестить работу хелпера kerberos авторизации в сквиде, прежде чем курочить конфиг рабочего прокси. Маленькое лирическое отступление: когда запускаем проверку, кейтаб по умолчанию берется из /etc/krb5.keytab, что бы там ни было прописано в конфигах сквида в переменной KRB5_KEYTAB.

AlexPRN
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.