Для аутентификации пользователей из AD на прокси-сервере squid решил использовать модуль squid_ldap_auth.
Возникла проблема:авторизация пользователей из AD группы Users проходит отлично
./squid_ldap_auth -u cn -b "cn=Users,dc=test,dc=local" 172.16.3.1
squidtest squidtest
OKа вот из группы Domain Users не проходит:
./squid_ldap_auth -u cn -b "cn=Domain Users,dc=bsuir,dc=by" 172.16.83.1
koluchy ttt
ERR Successв чем может быть проблема? кто нибудь сталкивался?
может формат записи неправильный
>[оверквотинг удален]
>squidtest squidtest
>OK
>
>а вот из группы Domain Users не проходит:
>./squid_ldap_auth -u cn -b "cn=Domain Users,dc=bsuir,dc=by" 172.16.83.1
>koluchy ttt
>ERR Success
>
>в чем может быть проблема? кто нибудь сталкивался?
>может формат записи неправильныйможет быть проблема в названии группы - попробуй убрать пробел (проверь на других группах).
>может быть проблема в названии группы - попробуй убрать пробел (проверь на
>других группах).пробовали с пробелами и без, другие группы пробовал
такое ощущение что squid_ldap_auth не понимает вложенных групп
больше нет никаких соображений?
>больше нет никаких соображений?а для групп случайно используют не squid_ldap_group ???
>>больше нет никаких соображений?
>
>а для групп случайно используют не squid_ldap_group ???Если в имени группы есть проблел, то его надо заменить так:
Domain%20USersНа счет вложенности - не проверял, но посмотрите флаги squid_ldap_auth:
-b basedn (REQUIRED) base dn under which to search
-f filter search filter to locate user DN
-u userattr username DN attribute
-s base|one|sub search scope
-D binddn DN to bind as to perform searches
-w bindpasswd password for binddn
-W secretfile read password for binddn from file secretfile
-H URI LDAPURI (defaults to ldap://localhost)
-h server LDAP server (defaults to localhost)
-p port LDAP server port
-P persistent LDAP connection
-c timeout connect timeout
-t timelimit search time limit
-R do not follow referrals
-a never|always|search|find
when to dereference aliases
-v 2|3 LDAP version
-Z TLS encrypt the LDAP connection, requires LDAP version 3
спасибо за информацию.
2 fis На сколько я помню squid_ldap_group используется для прохождения аутентификации группой мне же нужно по отдельно взятому пользователю.
все попытки добраться-таки до группы для аутентификации пользователя закончились неудачей. squid_ldap_auth работает только с контейнером Users, и не хочет работать ни с группами находящимися в этом контейнере ни с другими организационными единицами.Кто сталкивался с такой проблемой посвятите пожалуйста как это победить :)
Пробуй так.У меня стоит sles 10.Тоже настраивал очень долго мучился но получилось и по группе сделать авторизацию
если будут вопросы пиши сразу на почтовый отвечу
auth_param basic program /usr/sbin/squid_ldap_auth -P -b "dc=akm,dc=ru" -f (uid=%s) -H "ldap://localhost" -v 3 -p 389
external_acl_type ldap_group %LOGIN /usr/sbin/squid_ldap_group -P -b "dc=akm,dc=ru" -f (&(memberUid=%v)(cn=%a)) -H "ldap://localhost" -v 3 -p 389
>Пробуй так.У меня стоит sles 10.Тоже настраивал очень долго мучился но получилось
>и по группе сделать авторизацию
>если будут вопросы пиши сразу на почтовый отвечу
>auth_param basic program /usr/sbin/squid_ldap_auth -P -b "dc=akm,dc=ru" -f (uid=%s) -H "ldap://localhost" -v
>3 -p 389
>external_acl_type ldap_group %LOGIN /usr/sbin/squid_ldap_group -P -b "dc=akm,dc=ru" -f (&(memberUid=%v)(cn=%a)) -H "ldap://localhost" -v
>3 -p 389в первом случае я так понимаю это аутетификация по юзерам?
по группам!в ACL я даю доступ по группам
>по группам!в ACL я даю доступ по группамчерт мне надо по узерам. Вот в чем дело :-)
по группам не подходит, потому, как у меня одна группа
To neodiz: ваш имэйл не доступен.squid_ldap_auth -P -b "dc=bsuir,dc=by" -f (uid=%s) -H "172.16.83.1" -v 3 -p 389
ругается на синтаксис bash: syntax error near unexpected token `('Вообще ситуация такая я создал группу в ad пользователи которой имеют право выходить в интернет. Так вот не могу я подобрать праильную последовательность записи в squid_ldap_auth, чтобы их аутентифицировать.
Так у меня работает:
./squid_ldap_auth -b "cn=Users,dc=bsuir,dc=by" -h ldapserv
C другиги группами не работает.
>авторизация пользователей из AD группы Users проходит отлично
>./squid_ldap_auth -u cn -b "cn=Users,dc=test,dc=local" 172.16.3.1есть group Users и Container "cn=Users,dc=test,dc=local"
>а вот из группы Domain Users не проходит:
>./squid_ldap_auth -u cn -b "cn=Domain Users,dc=bsuir,dc=by" 172.16.83.1а Container-а "cn=Domain Users,dc=bsuir,dc=by" нет
есть group "Domain Users"-b basedn (REQUIRED)
Specifies the base DN under which the users are located.
basedn - container "cn=Users,dc=test,dc=local" или Organizational units "ou=MyUsers,dc=bsuir,dc=by", но не groupПробуй так
/squid_ldap_auth -b "cn=Users,dc=bsuir,dc=by" -f '(&(sAMAccountName=%s)(memberOf=CN=Domain Users,CN=Builtin,dc=bsuir,dc=by))' -h ldapserv
>
>Пробуй так
>/squid_ldap_auth -b "cn=Users,dc=bsuir,dc=by" -f '(&(sAMAccountName=%s)(memberOf=CN=Domain Users,CN=Builtin,dc=bsuir,dc=by))' -h ldapserv5-313-kolnix:/usr/sbin # ./squid_ldap_auth -d -b "cn=Users,dc=bsuir,dc=by" -f '(&(sAMAccountName=%s)(memberOf=CN=Domain Users,CN=Builtin,dc=bsuir,dc=by))' -h 172.16.83.1
squidtest squidtest
user filter '(&(sAMAccountName=squidtest)(memberOf=CN=Domain Users,CN=Builtin,dc=bsuir,dc=by))', searchbase 'cn=Users,dc=bsuir,dc=by'
squid_ldap_auth: WARNING, LDAP search error 'Operations error'
ERR Success
что-то неверно в формате записи?
>[оверквотинг удален]
>>Пробуй так
>>/squid_ldap_auth -b "cn=Users,dc=bsuir,dc=by" -f '(&(sAMAccountName=%s)(memberOf=CN=Domain Users,CN=Builtin,dc=bsuir,dc=by))' -h ldapserv
>
>5-313-kolnix:/usr/sbin # ./squid_ldap_auth -d -b "cn=Users,dc=bsuir,dc=by" -f '(&(sAMAccountName=%s)(memberOf=CN=Domain Users,CN=Builtin,dc=bsuir,dc=by))' -h 172.16.83.1
>squidtest squidtest
>user filter '(&(sAMAccountName=squidtest)(memberOf=CN=Domain Users,CN=Builtin,dc=bsuir,dc=by))', searchbase 'cn=Users,dc=bsuir,dc=by'
>squid_ldap_auth: WARNING, LDAP search error 'Operations error'
>ERR Success
>
>что-то неверно в формате записи?Для авторизации юзеров - squid_ldap_auth.
Для использования групп в acl-ях - squid_ldap_group.Вот пример, уже работающий несколько лет:
auth_param basic program /usr/local/libexec/squid/squid_ldap_auth -R -v3 -P \
-b "DC=DOMAIN,DC=RU" \
-f "(&(objectclass=user)(!(objectclass=computer))(sAMAccountName=%s))" \
-D "CN=ldapreaduser,OU=OOOO,DC=DOMAIN,DC=RU" -w "pass_for_ldapreaduser" -H ldap://IP_DC:3268Где:
-b "DC=DOMAIN,DC=RU" --- base DN.
-D "CN=ldapreaduser,OU=OOOO,DC=DOMAIN,DC=RU" -w "pass_for_ldapreaduser" -H ldap://IP_DC:3268 --- под кем подключаться и куда.
IP_DC - IP контроллера домена.
3268 - порт Global Catalog MS AD (с GC чтение быстрее, чем с 389-го порта, да и если лес доменов, то доступны все).Для squid_ldap_group по аналогии.
А я бы не стал делать проверку по группе Domain Users. На мой взгляд лучше создать в АД группу к примеру Internet и использовать ее, пользователя ведь всегда можно будет из неё исключить и тем самым отлучить от интернета...
Спасибо всем. Сделал следующим образом:Создал в контейнере Users групп Unibel - все члены этой нруппы должны меть выход в инет.
Сделал пару пользователей из разных организационных единц членами этой группы.squid_ldap_group -R -b "dc=bsuir,dc=by" -f "(&(cn=%v)(memberOf=cn=%a,cn=Users,dc=bsuir,dc=by))" -D Administrator@bsuir.by -w пароль -h 172.16.83.1
squidtest Unibel
OKsquid_ldap_auth -R -D Administrator@bsuir.by -w пароль -b "dc=bsuir,dc=by" -f "cn=%s" -h 172.16.83.1
koluchy пароль
OKПока все работает.
Вообще исследую AD(winserver2003) при помощи ldapsearch, обнаружил, что различные единицы хранения объектов обозначаются не логично.
Например, CN - это и пользователь, и группа, и контейнер. Имхо.
>[оверквотинг удален]
>
>squidtest Unibel
>OK
>
>squid_ldap_auth -R -D Administrator@bsuir.by -w пароль -b "dc=bsuir,dc=by" -f "cn=%s" -h 172.16.83.1
>
>koluchy пароль
>OK
>
>Пока все работает.Я написал проще, ни каких там контейнеров создавать не нужно, просто делаете так:
./squid_ldap_auth -u cn -b "ou=Sector SAK,ou=Users_Admins,dc=niips,dc=ru" -h 10.3.1.1
имя пароль
OK
где имя - это Ваше common name (cn), а не логин на вход в систему, если токо они одинаковые. ou - Ваши органиционные единицы, прописывать надо их с конца.
>[оверквотинг удален]
>
>Я написал проще, ни каких там контейнеров создавать не нужно, просто делаете
>так:
>
>./squid_ldap_auth -u cn -b "ou=Sector SAK,ou=Users_Admins,dc=niips,dc=ru" -h 10.3.1.1
>имя пароль
>OK
>где имя - это Ваше common name (cn), а не логин на
>вход в систему, если токо они одинаковые. ou - Ваши органиционные
>единицы, прописывать надо их с конца.А если не одинаковые?
>[оверквотинг удален]
>>так:
>>
>>./squid_ldap_auth -u cn -b "ou=Sector SAK,ou=Users_Admins,dc=niips,dc=ru" -h 10.3.1.1
>>имя пароль
>>OK
>>где имя - это Ваше common name (cn), а не логин на
>>вход в систему, если токо они одинаковые. ou - Ваши органиционные
>>единицы, прописывать надо их с конца.
>
>А если не одинаковые?Путем извращизмов прошло следующее:
/usr/local/libexec/squid/squid_ldap_auth -b "dc=your_domain,dc=local" -f cn=%s -D "cn=ldapuser,cn=Users,dc=your_domain,dc=local" -w ldappasswd -R 10.0.3.5Коменты такие:
ключ f ищет по имени юзера в АД, неявно используя ключ -s sub (поиск по всему дереву LDAP)
ключи D и w - тут ясно, авторизация для домена
А заработало все после ключа R! Почему - не знаю, описание ключа туманное. Хотя в одном примере squid_ldap_auth фигурирует R:squid_ldap_auth -P -R -b "dc=your,dc=domain" -D "cn=squid,cn=users,dc=your,dc=domain" -w "secretsquidpassword" -f "(&(userPrincipalName=%s)(objectClass=Person))" activedirec-toryserver
Работает очень быстро, так что усложнять поисковый параметр -f не стал.
>[оверквотинг удален]
>>так:
>>
>>./squid_ldap_auth -u cn -b "ou=Sector SAK,ou=Users_Admins,dc=niips,dc=ru" -h 10.3.1.1
>>имя пароль
>>OK
>>где имя - это Ваше common name (cn), а не логин на
>>вход в систему, если токо они одинаковые. ou - Ваши органиционные
>>единицы, прописывать надо их с конца.
>
>А если не одинаковые?Уточнения :)
1. 10.0.3.5 - это мой сервак
2. Есть очень сильное подозрение, что порядок параметров тоже играет свою роль
3. Это гонялось на FeeBSD
/usr/local/libexec/squid/squid_ldap_auth -d -R -D admin@domen.local -W /usr/local/etc/passwordfile -b "cn=users,dc=domen,dc=local" -f "cn=%s" -h 192.168.5.1./squid_ldap_auth.sh
test пароль
user filter 'cn=test', searchbase 'cn=users,dc=domen,dc=local'
attempting to authenticate user 'CN=test,CN=Users,DC=domen,DC=local'
OKu.test тотжепароль
user filter 'cn=u.test', searchbase 'cn=users,dc=domen,dc=local'
Ldap search returned nothing
ERR SuccessЯ так понимаю пользователи с точкой не пашут.
Ладно. Это не так страшно.
Клиентская машина в домене. Шлюзом указана машина со сквидом. Захожу пользователем test.
Открываю браузер и он у меня спрашивает логин пароль. ПОЧЕМУ???