Ключевые слова:ppp, ldap, auth, linux, (найти похожие документы)
From: Сергей Шинтёв <shint-sv@ngs.ru.>
Newsgroups:
Date: Mon, 20 Sep 2004 18:21:07 +0000 (UTC)
Subject: Установка плагина к pppd для аутентификации через LDAP сервер
Небольшое руководство по установке под Debian GNU/Linux плагина pppd_ldap к pppd
для аутентификации через LDAP сервер, описанного в новости
(http://www.opennet.me/opennews/art.shtml?num=3879).
Компиляция pppd_ldap-0.12b на debian 3.1 sarge и настройка
openldap (краткое руководство)
Для начала необходимо скомпилить модуль ppp_ldap, для
использования с текущем pppd, для этого необходимо
установить ppp-dev и libldap2-dev.
1. apt-get install ppp-dev
2. apt-get install libldap2-dev
3. модификация make файла , для указания пути к ppp headers
CFLAGS=-I../.. -I../../../include -I/usr/include/net -O2
А также включаем debug, пригодиться в дальнейшем для
поиска возможных проблем.
DEBUG=y
4. добавляем в файл /usr/include/ldap.h строки
"#define LDAP_FILT_MAXSIZ 1024"
, иначе ругается на
"main.c:145: error: `LDAP_FILT_MAXSIZ' undeclared (first use in this function)"
5. Копируем скомпилированный файл pppd_ldap.so в папку
/usr/lib/pppd/2.4.2/
6. Затем устанавливаем openldap, apt-get install slapd
7. Необходимо добавить в ldap radius схему, для этого
копируем файл RADIUS-LDAPv3.schema в папку
/etc/ldap/schema/ и добавляем в файл /etc/ldap/slapd.conf
строку include /etc/ldap/schema/RADIUS-LDAPv3.schema
8. Для простоты заведения пользователей можно использовать
phpLdapAdmin, устанавливаем apt-get install phpldapadmin,
требует установки apache.
9. Далее необходимо настроить pptp и pppd, для авторизации
в ldap необходимо внести следующие настройки в
/etc/ppp/options или pptpd-options
auth
-chap
+pap
# ppp_ldap потдерживает на текущий момент только pap авторизацию.
plugin pppd_ldap.so
# указываем pppd, что необходимо авторизировать через ldap
ldaphost localhost
# указываем сервер ldap
userbasedn dc=my,dc=test,dc=ru
# ldap настроен на my.test.ru
ldapdn cn=admin,dc=my,dc=test,dc=ru
# по умолчанию заводиться запись admin, для авторизации в
ldap, желательно
# использовать запись с ограниченными правами.
ldappw ХХХХ
ldaptimeout 30
debug 7
10. Далее необходимо модифицировать файл radius.ldif в
дистрибутиве и загрузить в ldap пользователя. Для этого
заходим http://host/phpldapamdin/ ,авторизируемся и
производим импорт ldif файла. далее этому пользователю
добавляем ldap атрибут userPassword и прописываем в нем
пароль для авторизации.
11. Теперь необходимо настроить vpn клиента, выбрать ppp
авторизацию и отключить шифрование. (ждем от автора
доработки плюгина для поддержки chap)
12. Далее подключаемся vpn клиентом, и если возникают
какие ошибки, смотрим syslog
При успешной авторизации видим в syslog следующее:
Plugin pppd_ldap.so loaded.
LDAP: plugin initialized.
........
search filter: (&(uid=name)(ob
jectClass=radiusProfile))
LDAP: found 1 entries
LDAP: rebind DN: cn=name,ou=People,dc=my,dc=test,dc=ru
LDAP: peer address is 0x250a8c0
LDAP: peer idle timeout is 600 seconds
LDAP: peer session timeout is 16000 seconds
LDAP: Auth success
sent [PAP AuthAck id=0x1 "Access OK!"]
Приветствуются комментарии и дополнения.
shint-sv@ngs dot ru /Сергей Шинтёв
Коментарий :) "Это работает". Уже где-то пол года, только не для vpn а для 3х модемов :) Причём этот плагин без лишних заморочек позволяет аутоидентифицировать пользователей на основе доменного аккаунта.
Такой вопрос.
Сейчас у меня авторизация идет только из файла pap-secrets.
Есть отдельно база пользователей в ldap, со своими cn=, uid=, userPassword=.
Так вот если подключить этот плагин то все юзеры сразу будут иметь доступ?
а как ограничить по типу "тебе можно тебе нельзя".. только создавать отдельную ветку ou=users_ppp?
А как же централизованное управление, пользователи, все в одной базе..
Хм.. я думаю что это не очень здорово, вот если бы был какой нибудь флаг разрешения типа true, false.. но это уже мечта идиота )))
з.ы. к примеру для сендмайля я такую штуку сделал...