Squid и LDAP-аутентификация из Active Directory (squid_ldap_auth)

Уже давно и достаточно продуктивно в своей работе я использую прокси-сервер squid. Думаю, не стоит описывать все его преимущества, кто знаком с данным прокси-сервером, все и без меня прекрасно знают. Скажу лишь, что squid является по сути, стандартом де-факто в корпоративных сетях. Начиная от средних организаций и заканчивая крупными банками, используют squid в своей работе.

Не так давно решил все-таки разобрать с LDAP аутентификацией в squid через аккаунты в Active Directory. С NTLM решил не заморачиваться, остановился на Basic аутентификации. Все делал по этой статье: http://www.opennet.ru/base/net/squid_ldap_ad.txt.html

У меня все заработало, но с некоторыми оговорками, поэтому опишу их здесь, думаю, будет полезно, тем, кто только собирается настроить аутентификацию в squid из АD. Все это настраивалось на Windows 2003 Standard Server R2 x64 + Squid 3.0.STABLE19.

Сквид собираем с ключами: —enable-basic-auth-helpers=LDAP —enable-external-acl-helpers=ldap_group

Предварительно создадим пользователя в домене, от имени которого будем читать содержимое АD. Привилегии никакие не нужны, достаточно Domain Users. Также я создал глобальную группу, вхождение в которую будет обеспечивать пользователям доступ к прокси.

Пробуем прочитать каталог:

ldapsearch -D «squidreader@domain.com» -x -W -b «dc=domain,dc=com» -h 192.168.1.2

(этой командой мы прочитаем содержимое AD)

Проверка групп. Внимание! Именно здесь отличия от статьи. У меня заработало только в таком виде, особое внимание обратить на регистр (большие маленькие буквы). На самом деле, это есть в комментариях к статье, но я решил обобщить изменения в этой короткой заметке.

/usr/libexec/squid/squid_ldap_group -R -b «dc=domain,dc=com» \
-f «(&(sAMAccountName=%v)(memberOf=CN=%a,CN=Users,DC=domain,DC=com))» \
-D squidreader@domain.com -w password -h 192.168.1.2

Запрос: имя_пользователя группа_пользователя

Ответ: ОК или ERR

Проверка аутентификации:

/usr/libexec/squid/squid_ldap_auth -R -D squidreader@domain.com -w \
password -b «dc=domain,dc=com» -f «sAMAccountName=%s» 192.168.1.2

Запрос: имя_пользователя пароль

Ответ: ОК или ERR

 Конфиг squid:

auth_param basic program /usr/libexec/squid/squid_ldap_auth -R -D \
squidreader@domain.com -w password -b «dc=domain,dc=com» -f \
«sAMAccountName=%s» 192.168.1.2

authenticate_ttl 1 hour

external_acl_type ldap_users %LOGIN /usr/libexec/squid/squid_ldap_group -R -b \              »dc=domain,dc=com» -f «(&(sAMAccountName=%v)(memberOf=CN=%a,CN=Users,DC=domain,DC=com \           ))» -D squidreader@domain.com -w password -h 192.168.1.2 ttl=3600

(%LOGIN — перед вхождением в группу мы аутентифицируем пользователя)

ACL:

acl group-allow-inet external ldap_users proxy-access-enable

(proxy-access-enable — глобальная группа в домене)

http_access allow group-allow-inet

Осталось только настроить squidguard для работы с LDAP (AD) — но у меня до сих пор никак не получается это сделать. Если у кого работает squidguard c AD — великодушно прошу помощи.

Свежие посты

Добавить комментарий