From: Roman Shramko <http://dormestmass.blogspot.com>
Date: Mon, 3 Jan 2008 14:31:37 +0000 (UTC)
Subject: Squid и LDAP-аутентификация из Active Directory
Сегодня возникла необходимость аутентифицировать пользователей на
прокси. Поскольку все они уже имеют учётные записи в ActiveDirectory,
то было решено брать информацию оттуда.
Сразу оговорюсь, строил basic аутентификацию, т.к. посмотрев на танцы
с бубнами вокруг ntlm-authentication & kerberos & AD, решил что
овчинка не стоит выделки.
Подобную схему аутентификации при минимальных переделках можно
применить к любому дереву каталогов, например к Novell eDirectory или
Netscape Directory Server...
В системе должены быть установлены библиотеки openldap для последующей
сборки squid.
Сам squid должен быть собран с поддержкой basic аутентификации и
внешних групп в LDAP. Ключи для конфигурации при ручной сборке:
Наш домен в Active Directory называеться domain.com.
Для начала заведём в дерево несколько групп, пользователи которых
могут ходить в интернет. Почему несколько - вхождение в ту или иную
группу определяет delay pool в squid. Скажем inet_64k, inet_128k и
inet_1024k. Для отладки делаем тестового пользователя test_inet c
паролем 123456, и включаем его в группу inet_64k.
Для работы с каталогом нам необходим пользователь, в нём
зарегистрированный и умеющий читать оттуда хэши с паролями.
Применительнительно к Active Directory нам нужен обыкновенный юзер без
особых привилегий :). В Novell eDirectory или Netscape Directory такая
шутка уже не прокатит и пользователю нужно будет присвоить некие
привилегии для чтения паролей. Обозвём этого пользователя для примера
squidreader.
Теперь проверяем на доступность каталога под вышеуказанным
пользователем.
В результате выпольнения команды мы должны получить содержимое нашего
АД.
Маленькое отступление. Для соединения с каталогом мы должны указать
Distinguished Name, под которым мы его будем читать. Так вот, в
отличии от нормальных LDAP каталогов, DN в Microsoft Active Directory
мы можем извратиться, указав его как "squidreader@domain.com", либо же
указать в нормальном виде как "cn=squidreader,dc=domain,dc=com".
Дальше проверяем работу работу компонентов squid. Создаём файл с
паролем к учётной записи, которой мы читаем, к примеру он будет
/usr/local/etc/squid/adpw.txt.