| Squd: аутентификация в AD с LDAP |
Перепечатано из журнала "Хакер"При наличии Active Directory или сервера каталогов оптимальным вариантом будет использование единого хранилища. При большом количестве пользователей такой вариант упрощает администрирование, так как не нужно для каждого юзера создавать еще и учетную запись на прокси. Для работы с AD есть две схемы: аутентификация с использованием Kerberos + Samba (winbind) или получение информации об учетных записях при помощи LDAP. Первый вариант считается официальным и подробно расписан на сайте проекта (wiki.squid-cache.org/ConfigExamples/WindowsAuthenticationNTLM). Поэтому будем разбираться со вторым. Это несколько более универсальный способ, так как его можно использовать с любым LDAP-сервером, вроде OpenLDAP. Для работы через LDAP следует завести отдельную учетную запись (пусть это будет squidproxy). Причем, для AD можно использовать учетную запись с минимумом привилегий. Домен для примера возьмем domain.com. Для начала проверяем, видит ли модуль squid_ldap_auth наш сервер: $ /usr/lib/squid3/squid_ldap_auth -v 3 -b \ "cn=squidproxy,dc=domain,dc=com" -f "uid=%s" domain.com В ответ на запрос вводим строку в виде – «пользователь пароль». Если получаем OK, можно идти дальше. Вместо имени контроллера домена можно указать его IP-адрес. Второй вариант проверки – с помощью утилиты поиска ldapsearch, которая входит в пакет ldap-utils. При подключении к AD можно использовать вместо «cn=squidproxy,dc=domain,dc=com» более удобный вариант записи в виде squidproxy@domain.com. В AD имя учетной записи получается при помощи «sAMAccountName=%s», а в LDAP используем «cn=%s». Других отличий нет. Если планируется аутентификация не только по пользователям, но и по группе, проверяем доступность групп: $ /usr/lib/squid3/squid_ldap_group -R -b "dc=domain,dc=com" \ -f "(&(cn=%s)(memberOf=cn=%s,cn=Users, dc=domain,dc=com))" \ -D squidproxy@domain.com -w пароль -h domain.com На запрос вводим строку – «логин группа». С помощью параметра '–w' указывается пароль для доступа пользователя squidproxy к LDAP-серверу. Переходим непосредственно к настройкам Squid. Фактически в конфиг squid.conf нужно внести всего две записи и установить разрешения: auth_param basic program /usr/lib/squid3/squid_ldap_auth -R -D squidproxy squidproxy@domain.com –w пароль -b "cn=squidproxy,dc=domain,dc=com" -f "sAMAccountName=%s" domain.com # Если нужны разрешения на основании групп, то подключаем и внешнюю группу external_acl_type ldap_group %LOGIN /usr/lib/squid3/squid_ldap_group -R -b "dc=domain,dc=com" -f "(&(cn=%v)(memberOf=cn=%a,dc=domain,dc=com))" -D squidproxy@domain.com -W пароль domain.com Формат этих команд описан в документации к Squid. Здесь задаем %LOGIN. Тогда пользователь перед проверкой на принадлежность к группе будет аутентифицирован. Некоторые LDAP-сервера для передачи пароля используют TLS. Чтобы подружиться с ними, достаточно добавить в команды параметр '–Z'. Теперь в squid.conf дописываем правила: auth_param children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours acl ldap_group proxy_auth REQUIRED http_access allow ldap_group http_access allow localhost http_access deny all После перезапуска Squid все пользователи, входящие в указанную группу, будут выходить в интернет. |
Squd: аутентификация в AD с LDAP