Форум проекта Pro-LDAP.ru

Общие вопросы по LDAP => Общий раздел => Тема начата: ubushan от 15 Январь 2015, 19:19:15

Название: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 15 Январь 2015, 19:19:15
Доброе время суток! Помогите настроить аутентификацию SQUID через OpenLDAP (отдельный сервер). Оба сервера на Linux CentOS 6.4
С чего начать и куда смотреть, получилось только настроить по pam_ldap.conf, он авторизует всех юзеров, а нужно по определенной ветке proxy.
Заранее спасибо!
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: egor от 16 Январь 2015, 00:21:21
Здрасвствуйте! Вы читали этот материал (http://pro-ldap.ru/art/levintsa/20140626-squid/)? Там много разных решений по отбору по критериям как при аутенитификации, так и при авторизации пользователей  squid, учётки которых хранятся в каталоге. Если у Вас другая задача, опишите её подробнее (чего Вы уже добились и что нужно получить), решение найдём.

Егор
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 16 Январь 2015, 09:17:06
Добрый день! Да читал, получилось только
auth_param basic program /usr/lib64/squid/squid_ldap_auth -b "ou=r77,ou=users,dc=fssprus,dc=ru" -H ldap://10.77.4.10:389 только так авторизует, но нам нужно по конкретной группе cn=proxy, которая находится cn=proxy,ou=r77,ou=groups,dc=fssprus,dc=ru.

В LDAP группа, по которой должен проходить отбор.
cn=proxy
gidNumber=1005
memberUid=ubushaev@r77
objectClass=posixGroup
                  top

Я в этом деле новичок, мне кажется, что группа создана некорректно. Подскажите
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: egor от 16 Январь 2015, 09:29:05
Если у Вас POSIX-группа, то этот случай тоже рассматривался в статье (http://pro-ldap.ru/art/levintsa/20140626-squid/#groups-rfc2307). Посмотрите.

Егор
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 16 Январь 2015, 09:57:14
Posix не получается, делаю как всё написано в инструкции, и мне не нравится то, что нужно указывать наименование группы вместо пароля,
в процессе настройки мы поняли, что нам нужно настроить по memberOf, не получается создать группу с objectClass=groupOfUniqueNames, для этого метода авторизации
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 16 Январь 2015, 10:10:54
/usr/lib64/squid/squid_ldap_group -b 'ou=r77,ou=groups,dc=fssprus,dc=ru' -f '(&(objectClass=posixAccount)(cn=%g)(memberUid=%u))' -d -H ldap://10.77.4.10:389
ubushaev@r77 proxy
Connected OK
group filter '(&(objectClass=posixAccount)(cn=proxy)(memberUid=ubushaev@r77))', searchbase 'ou=r77,ou=groups,dc=fssprus,dc=ru'
squid_ldap_group WARNING, LDAP search error 'No such object'
ERR

Также с posixGroup
/usr/lib64/squid/squid_ldap_group -b 'ou=r77,ou=groups,dc=fssprus,dc=ru' -f '(&(objectClass=posixGroup)(cn=%g)(memberUid=%u))' -d -H ldap://10.77.4.10:389
ubushaev@r77 proxy
Connected OK
group filter '(&(objectClass=posixGroup)(cn=proxy)(memberUid=ubushaev@r77))', searchbase 'ou=r77,ou=groups,dc=fssprus,dc=ru'
squid_ldap_group WARNING, LDAP search error 'No such object'
ERR

Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: egor от 16 Январь 2015, 10:20:15
Покажите, пожалуйста, точный LDIF Вашей группы, вывод команды:

# ldapsearch -x -LLL -b 'ou=r77,ou=groups,dc=fssprus,dc=ru' 'cn=proxy'
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 16 Январь 2015, 10:25:40
ldapsearch -x -LLL -b 'ou=r77,ou=groups,dc=fssprus,dc=ru' 'cn=proxy'
No such object (32)
Хотя в JXplorer всё есть
см.скрин
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: egor от 16 Январь 2015, 10:31:35
Проблема с ACL? Попробуйте выполнить ldapsearch от имени той учётки, что и графический клиент:

# ldapsearch -x -LLL -D 'some_dn' -W -b 'ou=r77,ou=groups,dc=fssprus,dc=ru' 'cn=proxy'
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 16 Январь 2015, 10:50:38
От пользователя:
ldapsearch -x -LLL -D 'uid=ubushaev@r77,ou=r77,ou=users,dc=fssprus,dc=ru' -W -b 'ou=r77,ou=groups,dc=fssprus,dc=ru' 'cn=proxy'
Enter LDAP Password:
dn: cn=proxy,ou=r77,ou=groups,dc=fssprus,dc=ru
cn: proxy
objectClass: posixGroup
objectClass: top
memberUid: ubushaev@r77
gidNumber: 1005

Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: egor от 16 Январь 2015, 10:58:49
А так:

# ldapsearch -x -LLL -D 'uid=ubushaev@r77,ou=r77,ou=users,dc=fssprus,dc=ru' -W -b 'ou=r77,ou=groups,dc=fssprus,dc=ru' '(&(objectClass=posixGroup)(cn=proxy)(memberUid=ubushaev@r77))'
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 16 Январь 2015, 11:10:34
А так:

# ldapsearch -x -LLL -D 'uid=ubushaev@r77,ou=r77,ou=users,dc=fssprus,dc=ru' -W -b 'ou=r77,ou=groups,dc=fssprus,dc=ru' '(&(objectClass=posixGroup)(cn=proxy)(memberUid=ubushaev@r77))'

ldapsearch -x -LLL -D 'uid=ubushaev@r77,ou=r77,ou=users,dc=fssprus,dc=ru' -W -b 'ou=r77,ou=groups,dc=fssprus,dc=ru' '(&(objectClass=posixGroup)(cn=proxy)(memberUid=ubushaev@r77))'
Enter LDAP Password:
dn: cn=proxy,ou=r77,ou=groups,dc=fssprus,dc=ru
cn: proxy
objectClass: posixGroup
objectClass: top
memberUid: ubushaev@r77
gidNumber: 1005
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: egor от 16 Январь 2015, 11:17:26
Ну тогда два варианта: либо разрешаете анонимный доступ на чтение каталога, либо прописываете в хелпере аутентификацию для выполнения LDAP-поиска (смотрите параметры -D -W (-w) в man squid_ldap_group), только желательно не под своей учёткой, а заведите отдельную с правами только на чтение.

Егор
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 16 Январь 2015, 11:27:13
Ну тогда два варианта: либо разрешаете анонимный доступ на чтение каталога, либо прописываете в хелпере аутентификацию для выполнения LDAP-поиска (смотрите параметры -D -W (-w) в man squid_ldap_group), только желательно не под своей учёткой, а заведите отдельную с правами только на чтение.

Егор

А как завести учетку? например с учетным именем squid.
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 16 Январь 2015, 12:46:19
Вообщем пользователя создал, как ему теперь права назначить на "только чтение"
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 16 Январь 2015, 13:04:03
Запускаю непосредственно на прокси-сервере хелпер

/usr/lib64/squid/squid_ldap_group -b 'dc=fssprus,dc=ru' -D 'uid=proxy,ou=local,ou=users,,dc=fssprus,dc=ru' -w пароль -f '(&(objectClass=posixGroup)(cn=proxy)(memberUid=%u))' -d -H ldap://10.77.4.10:389
ubushaev@r77 A123456
squid_ldap_group WARNING, could not bind to binddn 'Invalid DN syntax'
ERR

Что не правильно?
Всё извиняюсь лишняя запятая)
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 16 Январь 2015, 13:09:49
/usr/lib64/squid/squid_ldap_group -b 'dc=fssprus,dc=ru' -D 'uid=proxy,ou=local,ou=users,dc=fssprus,dc=ru' -w пароль -f '(&(objectClass=posixGroup)(cn=proxy)(memberUid=%u))' -d -H ldap://10.77.4.10:389
ubushaev@r77 A123456
Connected OK
group filter '(&(objectClass=posixGroup)(cn=proxy)(memberUid=ubushaev@r77))', searchbase 'dc=fssprus,dc=ru'

Теперь squid не впускает в инет(((
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: egor от 16 Январь 2015, 13:14:38
Вообщем пользователя создал, как ему теперь права назначить на "только чтение"

Права назначаются с помощью ACL. Если Вы настраиваете slapd с помощью slapd.conf, то это директива access, если через cn=config -- то атрибут olcAccess. Универсального ответа тут нет, всё зависит от того, какие ACL у Вас уже настроены. Об ACL написано много толкового материала: в OLAG24 (http://pro-ldap.ru/tr/admin24/access-control.html), LFRS (http://pro-ldap.ru/tr/zytrax/ch6/index.html#access) и в man-странице slapd.access (http://pro-ldap.ru/tr/man/slapd.access.5.html).

Егор
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: egor от 16 Январь 2015, 13:30:24
/usr/lib64/squid/squid_ldap_group -b 'dc=fssprus,dc=ru' -D 'uid=proxy,ou=local,ou=users,dc=fssprus,dc=ru' -w пароль -f '(&(objectClass=posixGroup)(cn=proxy)(memberUid=%u))' -d -H ldap://10.77.4.10:389
ubushaev@r77 A123456
Connected OK
group filter '(&(objectClass=posixGroup)(cn=proxy)(memberUid=ubushaev@r77))', searchbase 'dc=fssprus,dc=ru'

Теперь squid не впускает в инет(((
Вы понимаете разницу между аутентификацией и авторизацией? Так вот, squid_ldap_auth -- это хелпер аутентификации, а squid_ldap_group -- авторизации, они настраиваются по разному и для разных целей. Ещё раз внимательно читайте статью (http://pro-ldap.ru/art/levintsa/20140626-squid/#groups-rfc2307), особенно squid.conf, только в Вашем случае будет использоваться basic-аутентификация.

Егор.
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 16 Январь 2015, 15:10:22
/usr/lib64/squid/squid_ldap_group -b 'dc=fssprus,dc=ru' -D 'uid=proxy,ou=local,ou=users,dc=fssprus,dc=ru' -w пароль -f '(&(objectClass=posixGroup)(cn=proxy)(memberUid=%u))' -d -H ldap://10.77.4.10:389
ubushaev@r77 A123456
Connected OK
group filter '(&(objectClass=posixGroup)(cn=proxy)(memberUid=ubushaev@r77))', searchbase 'dc=fssprus,dc=ru'

Теперь squid не впускает в инет(((
Вы понимаете разницу между аутентификацией и авторизацией? Так вот, squid_ldap_auth -- это хелпер аутентификации, а squid_ldap_group -- авторизации, они настраиваются по разному и для разных целей. Ещё раз внимательно читайте статью (http://pro-ldap.ru/art/levintsa/20140626-squid/#groups-rfc2307), особенно squid.conf, только в Вашем случае будет использоваться basic-аутентификация.

Егор.

Вот такой вот конфиг сквида

auth_param basic program /usr/lib64/squid/squid_ldap_auth -b 'ou=r77,ou=users,dc=fssprus,dc=ru' -H ldap://10.77.4.10:389
auth_param basic realm WEB FSSP MSK
auth_param basic children 10
auth_param basic credentialsttl 20 minute
external_acl_type ldap_group %LOGIN /usr/lib64/squid/squid_ldap_group -b 'dc=fssprus,dc=ru' -D 'uid=proxy,ou=local,ou=users,dc=fssprus,dc=ru' -w пароль -f '(&(objectClass=posixGroup)(cn=proxy)(memberUid=%u))' -d -H ldap://10.77.4.10:389
acl test2 external ldap_group Admins
http_access allow test2
http_access deny all

Проблемы как я понимаю, в верхней строчке "аутентификации", вот только в чем понять немогу(
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 16 Январь 2015, 20:13:49
Всё получилось настроить спасибо Вам большое!!! низкий поклон!
Вот только ещё один вопрос, авторизованный пользователь может находится в инете с разных компьютеров одновременно, как сделать так, чтобы если он уже авторизовался и находится в инете в данный момент времени, чтобы параллельной авторизации по этому логину и паролю были невозможны?
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: egor от 19 Январь 2015, 08:42:53
Здравствуйте!
Вот только ещё один вопрос, авторизованный пользователь может находится в инете с разных компьютеров одновременно, как сделать так, чтобы если он уже авторизовался и находится в инете в данный момент времени, чтобы параллельной авторизации по этому логину и паролю были невозможны?
Думаю, стандартными средствами не получится. Если у Вас есть привязка пользователя к машине, то можно попробовать хелпер ip_user. Если привязки нет, то можно написать свой хелпер, который будет получать на вход переменные %SRC и %LOGIN и, если ip-адрес изменился и с момента последнего запроса прошло меньше N минут, отвергать этот запрос (возвращать ERR). Решение, конечно, не слишком красивое, но поддержки сессий в squid нет, да и ни к чему они.  Посмотрите примеры использования хелперов и написания своего здесь (http://etutorials.org/Server+Administration/Squid.+The+definitive+guide/Chapter+12.+Authentication+Helpers/12.5+External+ACLs/).

Имейте ввиду, что дополнительные проверки приводят к довольно большим накладным расходам при каждом запросе к squid.
Егор
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 19 Январь 2015, 13:22:20
Здравствуйте!
Вот только ещё один вопрос, авторизованный пользователь может находится в инете с разных компьютеров одновременно, как сделать так, чтобы если он уже авторизовался и находится в инете в данный момент времени, чтобы параллельной авторизации по этому логину и паролю были невозможны?
Думаю, стандартными средствами не получится. Если у Вас есть привязка пользователя к машине, то можно попробовать хелпер ip_user. Если привязки нет, то можно написать свой хелпер, который будет получать на вход переменные %SRC и %LOGIN и, если ip-адрес изменился и с момента последнего запроса прошло меньше N минут, отвергать этот запрос (возвращать ERR). Решение, конечно, не слишком красивое, но поддержки сессий в squid нет, да и ни к чему они.  Посмотрите примеры использования хелперов и написания своего здесь (http://etutorials.org/Server+Administration/Squid.+The+definitive+guide/Chapter+12.+Authentication+Helpers/12.5+External+ACLs/).

Имейте ввиду, что дополнительные проверки приводят к довольно большим накладным расходам при каждом запросе к squid.
Егор

У нас привязка по ip совместно с ldap не настроена, в интернете инфу не нашел( если знаете подскажите, плиз.
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: egor от 20 Январь 2015, 00:15:12
Здравствуйте!
У нас привязка по ip совместно с ldap не настроена, в интернете инфу не нашел( если знаете подскажите, плиз.

Я, наверное, не совсем корректно сформулировал. Под привязкой я понимал не какие-либо настройки, а то, что конкретный пользователь выходит с Инет только со своего конкретного рабочего места. Тогда как раз подойдёт хелпер ip_user (см. здесь (http://etutorials.org/Server+Administration/Squid.+The+definitive+guide/Chapter+12.+Authentication+Helpers/12.5+External+ACLs/)).

Если такого рода привязки нет (любой пользователь может выходить в Инет откуда угодно), то можно написать свой хелпер, который будет где-то (м.б. в каталоге?) хранить данные о "сессии" пользователя и принимать решения о его доступе в Инет по той схеме, которую я предлагал в прошлом посте.

Егор
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 23 Январь 2015, 18:54:46
Теперь к этому же ldap подключил терминальный сервер, настроили через pam_ldap.conf вот только опять проблема с ограничением,, авторизуются все, а нужно определенной только группе, аналогичное proxy
В pam_ldap настройки такие
pam_filter posixAccount
С таким параметром пускает всех, как добавляю pam_group так сразу глохнет авторизация
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: egor от 26 Январь 2015, 06:53:17
Здраствуйте!
Теперь к этому же ldap подключил терминальный сервер, настроили через pam_ldap.conf вот только опять проблема с ограничением,, авторизуются все, а нужно определенной только группе, аналогичное proxy
В pam_ldap настройки такие
pam_filter posixAccount
С таким параметром пускает всех, как добавляю pam_group так сразу глохнет авторизация

Если речь идёт о PADL-библиотеке pam_ldap, то теоретически должно быть так:
# Group to enforce membership of
pam_groupdn cn=proxy,ou=r77,ou=groups,dc=fssprus,dc=ru

# Group member attribute
pam_member_attribute memberUid
Но работает такое ограничение далеко не у всех (http://serverfault.com/questions/183215/ssh-ldap-pam-groupdn-problem) (у меня, к примеру, не получилось: авторизация проходит не зависимо от того, принадлежит ли пользователь группе или нет). Так что приходится идти на ухищрения. Можно, например, поставить значение атрибута loginShell: /bin/bash только тем, пользователям, которым нужно аутентифицироваться, остальным -- /bin/false, и использовать такой фильтр:
pam_filter loginShell=/bin/bash

Если использования posixGroup-групп не принципиально, можно сделать трюк с обратным членством в группе (http://pro-ldap.ru/art/levintsa/20140626-squid/#auth-basic-ex3) и использовать фильтр:
pam_filter memberOf=cn=proxy,ou=r77,ou=groups,dc=fssprus,dc=ru

Егор
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: ubushan от 26 Январь 2015, 09:25:16
# Group to enforce membership of
pam_groupdn cn=ldapclient,ou=group,dc=aaaa,dc=zzzz

# Group member attribute
pam_member_attribute memberUid

Неполучилось:(

И это тоже не получилось pam_filter memberOf=cn=proxy,ou=r77,ou=groups,dc=fssprus,dc=ru
Название: Re: Помогите настроить аутентификацию SQUID через LDAP
Отправлено: egor от 26 Январь 2015, 13:48:04
# Group to enforce membership of
pam_groupdn cn=ldapclient,ou=group,dc=aaaa,dc=zzzz

# Group member attribute
pam_member_attribute memberUid

Неполучилось:(
Я сегодня тоже пробовал -- если смотреть в логи, pam_ldap работает достаточно нелогично: выполняется Compare, завершающееся ошибкой, а доступ, тем не менее, предоставляется.

И это тоже не получилось pam_filter memberOf=cn=proxy,ou=r77,ou=groups,dc=fssprus,dc=ru
Вы не забыли настроить наложение memberOf (http://pro-ldap.ru/forum/index.php?topic=50.msg176#msg176)? Это, как раз, должно работать.

Егор