Администрирование Squid и LDAP-аутентификация из Active Directory
- Подробности
Сегодня возникла необходимость аутентифицировать пользователей на
прокси. Поскольку все они уже имеют учётные записи в ActiveDirectory,
то было решено брать информацию оттуда.
Сразу оговорюсь, строил basic аутентификацию, т.к. посмотрев на танцы
с бубнами вокруг ntlm-authentication & kerberos & AD, решил что
овчинка не стоит выделки.
Подобную схему аутентификации при минимальных переделках можно
применить к любому дереву каталогов, например к Novell eDirectory или
Netscape Directory Server...
В системе должены быть установлены библиотеки openldap для последующей
сборки squid.
Сам squid должен быть собран с поддержкой basic аутентификации и
внешних групп в LDAP. Ключи для конфигурации при ручной сборке:
... --enable-basic-auth-helpers=LDAP --enable-external-acl-helpers=ldap_group ...
Наш домен в 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.
Теперь проверяем на доступность каталога под вышеуказанным
пользователем.
ldapsearch -D " Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. " -x -W -b "dc=domain,dc=com" -h 192.168.1.1
В результате выпольнения команды мы должны получить содержимое нашего
АД.
Маленькое отступление. Для соединения с каталогом мы должны указать
Distinguished Name, под которым мы его будем читать. Так вот, в
отличии от нормальных LDAP каталогов, DN в Microsoft Active Directory
мы можем извратиться, указав его как "
Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
", либо же
указать в нормальном виде как "cn=squidreader,dc=domain,dc=com".
Дальше проверяем работу работу компонентов squid. Создаём файл с
паролем к учётной записи, которой мы читаем, к примеру он будет
/usr/local/etc/squid/adpw.txt.
Сначала проверяем группы.
/usr/local/libexec/squid/squid_ldap_group -R -b "dc=domain,dc=com" -f
"(&(sAMAccountName=%v)(memberOf=cn=%a,dc=domain,dc=com))" -D
Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
-W
/usr/local/etc/squid/adpw.txt 192.168.1.1
В качестве запроса вводим строку в формате:
имя_пользователя группа_пользователя
Ответом будет либо "ОК", либо "ERR". В нашем случае это будет
"test_inet inet_64k".
Естессно, что если у нас всё правильно работает, то ответ будет "ОК".
Дальше проверяем аутентификацию.
/usr/local/libexec/squid/squid_ldap_auth -R -D
Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
-W
/usr/local/etc/squid/adpw.txt -b "dc=domain,dc=com" -f "sAMAccountName=%s"
192.168.1.1
В качестве запроса вводим строку в формате:
имя_пользователя пароль
Ответы такие же как и в прошлом случае. Вводим "test_inet 123456" и
ждём ответа "ОК" :).
Теперь конфигурим сам squid.
Аутентификатор:
auth_param basic program /usr/local/libexec/squid/squid_ldap_auth -R -D
Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
-W /usr/local/etc/squid/adpw.txt -b "dc=domain,dc=com" -f
"sAMAccountName=%s" 192.168.1.1
Внешняя группа:
external_acl_type ldap_users %LOGIN /usr/local/libexec/squid/squid_ldap_group -R -b
"dc=domain,dc=com" -f "(&(cn=%v)(memberOf=cn=%a,dc=domain,dc=com
))" -D
Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
-W /usr/local/etc/squid/adpw.txt 192.168.1.1
Параметр %LOGIN в описании внешней группы указывает на то, перед
проверкой на вхождение в эту группу, пользователя необходимо
аутентифицировать.
Описание ACL:
acl ad64 external ldap_users inet_64k
acl ad128 external ldap_users inet_128k
acl ad1024 external ldap_users inet_1024k
Ну и последние штрихи - разрешаем данным ACL ходить в интернет и
добавляем их в delay pool.
...
http_access allow ad128
...
delay_class 3 1
delay_access 3 allow ad128
delay_access 3 deny all
...
Источник: X-news.ru

Странный темный шар около Солнца
В США разработано новое оружие: "луч боли" для разгона митингов
"Корабль пришельцев" у Солнца оказался торнадо
Михаил Горбачев уснул во время саммита нобелевских лауреатов
Представлять Россию на конкурсе «Евровидение-2012» будет коллектив из Удмуртии
Ученые нашли в глубинах космоса планетарную систему ранних времен Большого взрыва
В Великобритании запретили на рабочем месте носить кресты
Обзор нового планшета от Apple
Сьюзен Эман: к 42 годам я хочу весить 725 кг
Врач Лиза Кадди из сериала "Доктор Хаус" снялась обнаженной в рамках участия в кампании РЕТА
10-летняя девочка из Колумбии родила ребёнка
Эпизодические роли Сильвестра Сталлоне
В Британии место в очереди на новый iPad продается через eBay
Новинка от Sony - Xperia S
Призывать в армию собираются без повесток
Красной «изюминкой» на открытии Женевского автосалона стал Lamborghini Aventador J
Вирусный ролик "добавить драму" привлек внимание 22 миллионов человек
Лучшие места для пикника в Москве
Около 100 редких фотографий Мэрилин Монро выставят на аукцион
Израильские ученые изобрели вакцину от рака









