Re: [freebsd] squid + kerberos
04.04.2016 9:59, Golub Mikhail пишет: Доброго времени суток. Используйте ntlm_fake_auth - будет фейковая аутентификация в браузерах, поддерживающих ntlm (ie, firefox точно). А если все же хотите именно kerberos, то прокси надо указывать в браузере явно и по тому имени, на которое выдан тикет. Т.е., например, proxy.domain.local, а не IP 1.1.1.1 ... Я именно так и указывал. Проблему нашёл и решил. А заключалась она в том, что было прописано 2 SPN записи в АД для HTTP/. Удалил лишнюю и заработало. Всем спасибо за помощь.
Re: [freebsd] squid + kerberos
03.04.2016 10:15, skeletor пишет: 02.04.2016 22:43, Eugene Grosbein пишет:-- Доброго времени суток. Используйте ntlm_fake_auth - будет фейковая аутентификация в браузерах, поддерживающих ntlm (ie, firefox точно). А если все же хотите именно kerberos, то прокси надо указывать в браузере явно и по тому имени, на которое выдан тикет. Т.е., например, proxy.domain.local, а не IP 1.1.1.1 ...
Re: [freebsd] squid + kerberos
02.04.2016 22:43, Eugene Grosbein пишет: Для проверки пользователей/групп из squid в Active Directory нет необходимости использовать Kerberos. Достаточно посылать запросы в AD по протоколу LDAP. На примере squid 3.2, для домена COMPANY.local и контроллера на адресе 192.168.1.3, в squid.conf: # Проверка пароля пользователя auth_param basic program /usr/local/adm/squid_ad_auth auth_param basic children 10 auth_param basic realm COMPANY auth_param basic credentialsttl 5 minutes acl ad_user proxy_auth REQUIRED # Проверка вхождения пользователя в группу InetPermitted external_acl_type ad_permitted ttl=300 %LOGIN /usr/local/adm/squid_ad_group acl ad_authorized external ad_permitted InetPermitted Скрипт /usr/local/adm/squid_ad_auth: #!/bin/sh base=COMPANY domain="dc=$base,dc=local" dom="$base.local" controller="192.168.1.3" user=squid passwordfile=/usr/local/adm/ad.pwd exec /usr/local/libexec/squid/basic_ldap_auth -R -b "$domain" \ -D "$user@$dom" -W "$passwordfile" -f sAMAccountName=%s -h "$controller" В домене нужен пользователь squid, чей пароль записан в /usr/local/adm/ad.pwd. Скрипт /usr/local/adm/squid_ad_group: #!/bin/sh base=COMPANY domain="dc=$base,dc=local" dom="$base.local" controller="192.168.1.3" user=squid passwordfile=/usr/local/adm/ad.pwd exec /usr/local/libexec/squid/ext_ldap_group_acl -R -b "$domain" \ -D "$user@$dom" -W "$passwordfile" \ -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,$domain))" \ -h "$controller" "$@" Спасибо, Евгений. Скрипт работает, но есть 2 нюанса: при каждом открытии браузера приходится вбивать login/pass (что очень неудобно, поэтому и использовал для этого kerberos, что бы передавало login/pass юзера автоматически), а так же не работает аутентификация для юзеров с русскими логинами (не спрашивайте кто такое придумал, мне оно тоже не нравится)
Re: [freebsd] squid + kerberos
02.04.2016 22:41, skeletor пишет: Всем привет. Использую связку squid+kerberos для аутентификации юзеров из АД. squid собран с поддержкой AUTH_LDAP AUTH_SASL GSSAPI_MIT Для проверки пользователей/групп из squid в Active Directory нет необходимости использовать Kerberos. Достаточно посылать запросы в AD по протоколу LDAP. На примере squid 3.2, для домена COMPANY.local и контроллера на адресе 192.168.1.3, в squid.conf: # Проверка пароля пользователя auth_param basic program /usr/local/adm/squid_ad_auth auth_param basic children 10 auth_param basic realm COMPANY auth_param basic credentialsttl 5 minutes acl ad_user proxy_auth REQUIRED # Проверка вхождения пользователя в группу InetPermitted external_acl_type ad_permitted ttl=300 %LOGIN /usr/local/adm/squid_ad_group acl ad_authorized external ad_permitted InetPermitted Скрипт /usr/local/adm/squid_ad_auth: #!/bin/sh base=COMPANY domain="dc=$base,dc=local" dom="$base.local" controller="192.168.1.3" user=squid passwordfile=/usr/local/adm/ad.pwd exec /usr/local/libexec/squid/basic_ldap_auth -R -b "$domain" \ -D "$user@$dom" -W "$passwordfile" -f sAMAccountName=%s -h "$controller" В домене нужен пользователь squid, чей пароль записан в /usr/local/adm/ad.pwd. Скрипт /usr/local/adm/squid_ad_group: #!/bin/sh base=COMPANY domain="dc=$base,dc=local" dom="$base.local" controller="192.168.1.3" user=squid passwordfile=/usr/local/adm/ad.pwd exec /usr/local/libexec/squid/ext_ldap_group_acl -R -b "$domain" \ -D "$user@$dom" -W "$passwordfile" \ -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,$domain))" \ -h "$controller" "$@"
[freebsd] squid + kerberos
Всем привет. Использую связку squid+kerberos для аутентификации юзеров из АД. squid собран с поддержкой AUTH_LDAP AUTH_SASL GSSAPI_MIT Из необходимых пакетов стоит: openldap-sasl-client-2.4.44 krb5-1.14.1 cyrus-sasl-2.1.26_12 cyrus-sasl-gssapi-2.1.26_7 squid-3.5.15_1 Билет от кербероса получаю (через keytab-файл, сгенерённый на контроллере домена). Но вот аутентицировать юзера не могу. В логах ошибка: ERROR: Negotiate Authentication validating user. Result: {result=BH, notes={message: received type 1 NTLM token; }} Гугление вообще мало что знает, а то, что знает от разряда "у меня вот в такой конфигурации работает". Перепробовал много чего, в том числе и пересборка squid'a с системным/heimdal керберосом, но ничего не поменялось. Рядом, на Debian'e с теми же конфигами работает. Вот конфиги: squid.conf: ... auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -s HTTP/proxy.domain.local@DOMAIN.LOCAL auth_param negotiate children 50 startup=10 idle=5 auth_param negotiate keep_alive on ... /etc/krb5.conf [libdefaults] default_realm = DOMAIN.LOCAL default_keytab_name = /usr/local/etc/squid/squid.keytab [realms] OVOSTAR.LOCAL = { kdc = srvad.domain.local kdc = srvad2.domain.local admin_server = srvad.domain.local default_domain = domain.local } [domain_realm] .domain.local = DOMAIN.LOCAL domain.local = DOMAIN.LOCAL [logging] kdc = FILE:/var/log/kerberos/kdc.log admin_server = FILE:/var/log/kerberos/kadmin.log default = FILE:/var/log/kerberos/default.log # kinit -k HTTP/proxy.domain.local@DOMAIN.LOCAL # klist Credentials cache: FILE:/tmp/krb5cc_0 Principal: HTTP/proxy.domain.local@DOMAIN.LOCAL IssuedExpires Principal Apr 2 18:36:22 2016 Apr 3 04:36:22 2016 krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL