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 юзера автоматически), а так же не работает аутентификация для юзеров с русскими логинами (не спрашивайте кто такое придумал, мне оно тоже не нравится)

Ответить