Автор Тема: Помогите настроить аутентификацию SQUID через LDAP  (Прочитано 66035 раз)

ubushan

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Запускаю непосредственно на прокси-сервере хелпер

/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

Что не правильно?
Всё извиняюсь лишняя запятая)
« Последнее редактирование: 16 Январь 2015, 13:05:42 от ubushan »

ubushan

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
/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 не впускает в инет(((

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Вообщем пользователя создал, как ему теперь права назначить на "только чтение"

Права назначаются с помощью ACL. Если Вы настраиваете slapd с помощью slapd.conf, то это директива access, если через cn=config -- то атрибут olcAccess. Универсального ответа тут нет, всё зависит от того, какие ACL у Вас уже настроены. Об ACL написано много толкового материала: в OLAG24, LFRS и в man-странице slapd.access.

Егор

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
/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 -- авторизации, они настраиваются по разному и для разных целей. Ещё раз внимательно читайте статью, особенно squid.conf, только в Вашем случае будет использоваться basic-аутентификация.

Егор.

ubushan

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
/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 -- авторизации, они настраиваются по разному и для разных целей. Ещё раз внимательно читайте статью, особенно 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

Проблемы как я понимаю, в верхней строчке "аутентификации", вот только в чем понять немогу(
« Последнее редактирование: 16 Январь 2015, 15:32:19 от ubushan »

ubushan

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Всё получилось настроить спасибо Вам большое!!! низкий поклон!
Вот только ещё один вопрос, авторизованный пользователь может находится в инете с разных компьютеров одновременно, как сделать так, чтобы если он уже авторизовался и находится в инете в данный момент времени, чтобы параллельной авторизации по этому логину и паролю были невозможны?

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Здравствуйте!
Вот только ещё один вопрос, авторизованный пользователь может находится в инете с разных компьютеров одновременно, как сделать так, чтобы если он уже авторизовался и находится в инете в данный момент времени, чтобы параллельной авторизации по этому логину и паролю были невозможны?
Думаю, стандартными средствами не получится. Если у Вас есть привязка пользователя к машине, то можно попробовать хелпер ip_user. Если привязки нет, то можно написать свой хелпер, который будет получать на вход переменные %SRC и %LOGIN и, если ip-адрес изменился и с момента последнего запроса прошло меньше N минут, отвергать этот запрос (возвращать ERR). Решение, конечно, не слишком красивое, но поддержки сессий в squid нет, да и ни к чему они.  Посмотрите примеры использования хелперов и написания своего здесь.

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

ubushan

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Здравствуйте!
Вот только ещё один вопрос, авторизованный пользователь может находится в инете с разных компьютеров одновременно, как сделать так, чтобы если он уже авторизовался и находится в инете в данный момент времени, чтобы параллельной авторизации по этому логину и паролю были невозможны?
Думаю, стандартными средствами не получится. Если у Вас есть привязка пользователя к машине, то можно попробовать хелпер ip_user. Если привязки нет, то можно написать свой хелпер, который будет получать на вход переменные %SRC и %LOGIN и, если ip-адрес изменился и с момента последнего запроса прошло меньше N минут, отвергать этот запрос (возвращать ERR). Решение, конечно, не слишком красивое, но поддержки сессий в squid нет, да и ни к чему они.  Посмотрите примеры использования хелперов и написания своего здесь.

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

У нас привязка по ip совместно с ldap не настроена, в интернете инфу не нашел( если знаете подскажите, плиз.

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Здравствуйте!
У нас привязка по ip совместно с ldap не настроена, в интернете инфу не нашел( если знаете подскажите, плиз.

Я, наверное, не совсем корректно сформулировал. Под привязкой я понимал не какие-либо настройки, а то, что конкретный пользователь выходит с Инет только со своего конкретного рабочего места. Тогда как раз подойдёт хелпер ip_user (см. здесь).

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

Егор

ubushan

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Теперь к этому же ldap подключил терминальный сервер, настроили через pam_ldap.conf вот только опять проблема с ограничением,, авторизуются все, а нужно определенной только группе, аналогичное proxy
В pam_ldap настройки такие
pam_filter posixAccount
С таким параметром пускает всех, как добавляю pam_group так сразу глохнет авторизация
« Последнее редактирование: 23 Январь 2015, 18:58:03 от ubushan »

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Здраствуйте!
Теперь к этому же 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
Но работает такое ограничение далеко не у всех (у меня, к примеру, не получилось: авторизация проходит не зависимо от того, принадлежит ли пользователь группе или нет). Так что приходится идти на ухищрения. Можно, например, поставить значение атрибута loginShell: /bin/bash только тем, пользователям, которым нужно аутентифицироваться, остальным -- /bin/false, и использовать такой фильтр:
pam_filter loginShell=/bin/bash

Если использования posixGroup-групп не принципиально, можно сделать трюк с обратным членством в группе и использовать фильтр:
pam_filter memberOf=cn=proxy,ou=r77,ou=groups,dc=fssprus,dc=ru

Егор

ubushan

  • Новичок
  • *
  • Сообщений: 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

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
# 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? Это, как раз, должно работать.

Егор