Форум проекта Pro-LDAP.ru
Общие вопросы по LDAP => Общий раздел => Тема начата: ubushan от 15 Январь 2015, 19:19:15
-
Доброе время суток! Помогите настроить аутентификацию SQUID через OpenLDAP (отдельный сервер). Оба сервера на Linux CentOS 6.4
С чего начать и куда смотреть, получилось только настроить по pam_ldap.conf, он авторизует всех юзеров, а нужно по определенной ветке proxy.
Заранее спасибо!
-
Здрасвствуйте! Вы читали этот материал (http://pro-ldap.ru/art/levintsa/20140626-squid/)? Там много разных решений по отбору по критериям как при аутенитификации, так и при авторизации пользователей squid, учётки которых хранятся в каталоге. Если у Вас другая задача, опишите её подробнее (чего Вы уже добились и что нужно получить), решение найдём.
Егор
-
Добрый день! Да читал, получилось только
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
Я в этом деле новичок, мне кажется, что группа создана некорректно. Подскажите
-
Если у Вас POSIX-группа, то этот случай тоже рассматривался в статье (http://pro-ldap.ru/art/levintsa/20140626-squid/#groups-rfc2307). Посмотрите.
Егор
-
Posix не получается, делаю как всё написано в инструкции, и мне не нравится то, что нужно указывать наименование группы вместо пароля,
в процессе настройки мы поняли, что нам нужно настроить по memberOf, не получается создать группу с objectClass=groupOfUniqueNames, для этого метода авторизации
-
/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
-
Покажите, пожалуйста, точный LDIF Вашей группы, вывод команды:
# ldapsearch -x -LLL -b 'ou=r77,ou=groups,dc=fssprus,dc=ru' 'cn=proxy'
-
ldapsearch -x -LLL -b 'ou=r77,ou=groups,dc=fssprus,dc=ru' 'cn=proxy'
No such object (32)
Хотя в JXplorer всё есть
см.скрин
-
Проблема с ACL? Попробуйте выполнить ldapsearch от имени той учётки, что и графический клиент:
# ldapsearch -x -LLL -D 'some_dn' -W -b 'ou=r77,ou=groups,dc=fssprus,dc=ru' 'cn=proxy'
-
От пользователя:
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
-
А так:
# 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))'
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
-
Ну тогда два варианта: либо разрешаете анонимный доступ на чтение каталога, либо прописываете в хелпере аутентификацию для выполнения LDAP-поиска (смотрите параметры -D -W (-w) в man squid_ldap_group), только желательно не под своей учёткой, а заведите отдельную с правами только на чтение.
Егор
-
Ну тогда два варианта: либо разрешаете анонимный доступ на чтение каталога, либо прописываете в хелпере аутентификацию для выполнения LDAP-поиска (смотрите параметры -D -W (-w) в man squid_ldap_group), только желательно не под своей учёткой, а заведите отдельную с правами только на чтение.
Егор
А как завести учетку? например с учетным именем squid.
-
Вообщем пользователя создал, как ему теперь права назначить на "только чтение"
-
Запускаю непосредственно на прокси-сервере хелпер
/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
Что не правильно?
Всё извиняюсь лишняя запятая)
-
/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 не впускает в инет(((
-
Вообщем пользователя создал, как ему теперь права назначить на "только чтение"
Права назначаются с помощью 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).
Егор
-
/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-аутентификация.
Егор.
-
/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
Проблемы как я понимаю, в верхней строчке "аутентификации", вот только в чем понять немогу(
-
Всё получилось настроить спасибо Вам большое!!! низкий поклон!
Вот только ещё один вопрос, авторизованный пользователь может находится в инете с разных компьютеров одновременно, как сделать так, чтобы если он уже авторизовался и находится в инете в данный момент времени, чтобы параллельной авторизации по этому логину и паролю были невозможны?
-
Здравствуйте!
Вот только ещё один вопрос, авторизованный пользователь может находится в инете с разных компьютеров одновременно, как сделать так, чтобы если он уже авторизовался и находится в инете в данный момент времени, чтобы параллельной авторизации по этому логину и паролю были невозможны?
Думаю, стандартными средствами не получится. Если у Вас есть привязка пользователя к машине, то можно попробовать хелпер 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_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 не настроена, в интернете инфу не нашел( если знаете подскажите, плиз.
-
Здравствуйте!
У нас привязка по ip совместно с ldap не настроена, в интернете инфу не нашел( если знаете подскажите, плиз.
Я, наверное, не совсем корректно сформулировал. Под привязкой я понимал не какие-либо настройки, а то, что конкретный пользователь выходит с Инет только со своего конкретного рабочего места. Тогда как раз подойдёт хелпер ip_user (см. здесь (http://etutorials.org/Server+Administration/Squid.+The+definitive+guide/Chapter+12.+Authentication+Helpers/12.5+External+ACLs/)).
Если такого рода привязки нет (любой пользователь может выходить в Инет откуда угодно), то можно написать свой хелпер, который будет где-то (м.б. в каталоге?) хранить данные о "сессии" пользователя и принимать решения о его доступе в Инет по той схеме, которую я предлагал в прошлом посте.
Егор
-
Теперь к этому же ldap подключил терминальный сервер, настроили через pam_ldap.conf вот только опять проблема с ограничением,, авторизуются все, а нужно определенной только группе, аналогичное proxy
В pam_ldap настройки такие
pam_filter posixAccount
С таким параметром пускает всех, как добавляю pam_group так сразу глохнет авторизация
-
Здраствуйте!
Теперь к этому же 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
Егор
-
# 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
-
# 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)? Это, как раз, должно работать.
Егор