Re: [freebsd] squid + kerberos

2016-04-04 Пенетрантность skeletor

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

2016-04-03 Пенетрантность Golub Mikhail

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

2016-04-03 Пенетрантность skeletor

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

2016-04-02 Пенетрантность Eugene Grosbein

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

2016-04-02 Пенетрантность skeletor

Всем привет.
Использую связку 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