URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID12
Нить номер: 6766
[ Назад ]

Исходное сообщение
"помогите прикрутить Squid к ldap"

Отправлено fordiego , 14-Янв-12 10:20 
OC Ubuntu Server 10.04.03 x86 squid 2.7
AD Win2k8r2
пользователь ldap с паролем Qwertyu1 создан для входа и просмотра каталога

задача прикрутить Squid с аутентификацией через АД

попытаюсь расписать корни проблемы:
в АД есть контейнер Users (создается по умолчанию), и например (я сам сделал) так называемое подразделение (organization units)с именем Contacts

поиск по Users проходит вот так
auth_param basic program /usr/lib/squid/ldap_auth -v 3 -R -D ldap -w "Qwertyu1" -f "(&(objectClass=person)(sAMAccountName=%s))" -u sAMAccountName -b "cn=Users,dc=domain,dc=company" -h domain.company

поиск в подразделении Contacts проходит вот так
auth_param basic program /usr/lib/squid/ldap_auth -v 3 -R -D ldap -w "Qwertyu1" -f "(&(objectClass=person)(sAMAccountName=%s))" -u sAMAccountName -b "ou=Contacts,dc=domain,dc=company" -h domain.company

к сожалению в squid можно подставит только одну запись поиска
вопрос: как объеденить два вида поиска в один фильтр? чтоб и в контейнере Users искало и в подразделении Conatacts


Еще одна проблема затрагивалась много раз но внятного решения так и не получила
делаю проверку поиска
adminalpha@Alpha:~$ /usr/lib/squid/ldap_auth -v 3 -R -D ldap -w "Qwertyu1" -f "(&(objectClass=person)(sAMAccountName=%s))" -u sAMAccountName -b "dc=domain,dc=company" -h domain.company
test Qwertyu1
OK

здесь пользователь test создан в АД в контейнере Users
как видно проверка проходит причем если даже перенести пользователя test в подразделение Contacts проверка так же пройдет на Ура

теперь я добавляю строку в аутентификации в squid
auth_param basic program /usr/lib/squid/ldap_auth -v 3 -R -D ldap -w "Qwertyu1" -f "(&(objectClass=person)(sAMAccountName=%s))" -u sAMAccountName -b "dc=domain,dc=company" -h domain.company

если пользователь test находится в подразделении Contacts то при запросе браузера логина и пароля аутентификация проходит и интернет доступен

но если пользователь находится в контейнере Users то в браузере не принимает логин пароль, хотя как написано выше проверка прошла когда пользователь test находится в контейнере Users

В чем баг? в squid? в ldap_auth ?


Содержание

Сообщения в этом обсуждении
"помогите прикрутить Squid к ldap"
Отправлено Vitaly_loki , 14-Янв-12 10:52 
>[оверквотинг удален]
> auth_param basic program /usr/lib/squid/ldap_auth -v 3 -R -D ldap -w "Qwertyu1" -f
> "(&(objectClass=person)(sAMAccountName=%s))" -u sAMAccountName -b "cn=Users,dc=domain,dc=company"
> -h domain.company
> поиск в подразделении Contacts проходит вот так
> auth_param basic program /usr/lib/squid/ldap_auth -v 3 -R -D ldap -w "Qwertyu1" -f
> "(&(objectClass=person)(sAMAccountName=%s))" -u sAMAccountName -b "ou=Contacts,dc=domain,dc=company"
> -h domain.company
> к сожалению в squid можно подставит только одну запись поиска
> вопрос: как объеденить два вида поиска в один фильтр? чтоб и в
> контейнере Users искало и в подразделении Conatacts

Я в своё время сделал так:
auth_param negotiate program /usr/lib64/squid/squid_kerb_auth -d -s HTTP/proxy-host.domain.ru@DOMAIN.RU
auth_param negotiate children 20
auth_param negotiate keep_alive on

external_acl_type ldap_check1 ttl=60 %LOGIN /usr/lib64/squid/squid_ldap_group -R -b "dc=domain,dc=ru" -f "(&(objectclass=user)(sAMAccountName=%v)(memberof=cn=%a,OU=Groups,OU=Users,OU=Tyumen,DC=domain,DC=ru))" -D "proxy_squid@domain.ru" -W "/etc/squid/adpw.txt" -K -d 10.172.22.22 10.172.22.25

external_acl_type ldap_check2 ttl=60 %LOGIN /usr/lib64/squid/squid_ldap_group -R -b "dc=domain,dc=ru" -f "(&(objectclass=user)(sAMAccountName=%v)(memberof=cn=%a,OU=AnotherGroups,OU=Users,OU=Tyumen,DC=domain,DC=ru))" -D "proxy_squid@domain.ru" -W "/etc/squid/adpw.txt" -K -d 10.172.22.22 10.172.22.25

Т.е. ldap_check1 ищет группы в OU=Groups,OU=Users,OU=Tyumen,DC=domain,DC=ru, а ldap_check2 в OU=AnotherGroups,OU=Users,OU=Tyumen,DC=domain,DC=ru

потом

#CN=FullInet,OU=Groups,OU=Users,OU=Tyumen,DC=domain,DC=ru
acl inet_access0 external ldap_check1 FullInet

#CN=Inet_for_another_groups,OU=AnotherGroups,OU=Users,OU=Tyumen,DC=domain,DC=ru
acl inet_access1 external ldap_check2 Inet_for_another_groups


http_access allow inet_access0
http_access allow inet_access1


"помогите прикрутить Squid к ldap"
Отправлено fordiego , 14-Янв-12 11:29 
>[оверквотинг удален]
> -D "proxy_squid@domain.ru" -W "/etc/squid/adpw.txt" -K -d 10.172.22.22 10.172.22.25
> Т.е. ldap_check1 ищет группы в OU=Groups,OU=Users,OU=Tyumen,DC=domain,DC=ru, а ldap_check2
> в OU=AnotherGroups,OU=Users,OU=Tyumen,DC=domain,DC=ru
> потом
> #CN=FullInet,OU=Groups,OU=Users,OU=Tyumen,DC=domain,DC=ru
> acl inet_access0 external ldap_check1 FullInet
> #CN=Inet_for_another_groups,OU=AnotherGroups,OU=Users,OU=Tyumen,DC=domain,DC=ru
> acl inet_access1 external ldap_check2 Inet_for_another_groups
> http_access allow inet_access0
> http_access allow inet_access1

как я понял у тебя идет сначала поиск юзера в АД а потом проверка состоит ли он в группе если все ОК дает интернеты
это все отлично, но я использую SAMS для таких вещей и проверка по группам мне не нужна к тому же я хочу прикрутить именно basic аутентификацию по пользователю и паролю. вся суть проблемы как организовать одновременный поиск по все АД в контейнерах CN и подразделениях OU в одной строке без использования acl и всяких там дополнительных скриптов, если это конечно возможно.... в чем я уже начал сомневаться.....


"помогите прикрутить Squid к ldap"
Отправлено fordiego , 14-Янв-12 11:34 
вот например почти такая же проблема у alkkoh
http://www.opennet.me/openforum/vsluhforumID12/6579.html
так же проверки проходят но squid не авторизует

"помогите прикрутить Squid к ldap"
Отправлено fordiego , 14-Янв-12 12:06 
проблема решена, необходимо добавить параметр -s sub

auth_param basic program /usr/lib/squid/ldap_auth -v 3 -R -D ldap -w "Qwertyu1" -f "(&(objectClass=person)(sAMAccountName=%s))" -s sub -u sAMAccountName -b "dc=domain,dc=company" -h domain.company

теперь поиск идет по каталогу users и подразделению contacts браузер понимает аутентификацию и даёт интернеты