mirror of
https://github.com/3proxy/3proxy.git
synced 2026-04-11 07:30:10 +08:00
Привет ! Исправил старую багу по утечки памяти в плагине .. теперь вообще не течет , глупая ошибка.. Вот так 3,5 года не попрограммируеш , срузу ошибку найдеш :) -- Kirill Lopuchov
592 lines
21 KiB
Plaintext
592 lines
21 KiB
Plaintext
----------------------------win1251------------------------------
|
||
Плагин аутентификации в LDAP для сервера 3proxу (ОС windows,unix)
|
||
(c) Lopuchov Kirill lopuchov@mail.ru
|
||
|
||
1. Краткое описание
|
||
|
||
* Поддерживается только аутентификация открытым текстом (basic)
|
||
* Поддерживается создание лимитов по трафику для групп пользователей
|
||
(в день,месяц,неделю)
|
||
* Поддерживается создание лимитов по скорости для групп пользователей
|
||
(пока лимиты только на входящий трафик)
|
||
|
||
* Отсутcтвует кеширование имен пользователей.
|
||
|
||
В качестве интерфейса доступа к ldap используется библиотека openldap,
|
||
поэтому плагин может компилироваться и работать как на Windows 98/2000/XP
|
||
так и на различных unix подобных системах например Linux,FreeBSD.
|
||
Все тесты работоспособности проводились на сервере с Active Directory в
|
||
ее реализации ldap но в принципе должно работать и на других ldap системах.
|
||
|
||
Для компиляции и тестирования под ОС Windows использовался пакет Dev-C++
|
||
http://www.bloodshed.net/dev/ и часть библиотек OpenLDAP for Windows
|
||
http://lucas.bergmans.us/hacks/openldap/
|
||
версия openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.exe,
|
||
версия этой же библиотеки идет в комплекте к плагину.
|
||
|
||
под unix подобной ОС (Freebsd) использовался стандартный gcc.
|
||
и библиотеки openldap-client.
|
||
|
||
|
||
|
||
2. Настройка плагина.
|
||
|
||
2.1 Для подключения к LDAP серверу используется комманда ldapconnect .
|
||
Первый параметр определят ip адрес или host имя LDAP сервера ,
|
||
второй параметр имя пользователя от имени корого будут совершиться
|
||
вся дальнейшая работа с ldap каталогом такая как поиск пользователей
|
||
и проверка их принадлежности к той или иной группе, третий параметр это
|
||
пароль для этого пользователя.
|
||
|
||
У такого пользовате в контекстет Active Directory могут отсутсвовать
|
||
права администратора для нормальной работы плагина. В классических Open Ldap
|
||
серверах под xNIX таким пользователем может выступать anonymous.
|
||
|
||
Пример:
|
||
ldapconnect 192.160.0.1 cn=ldap,cn=users,dc=domain,dc=ru ldap
|
||
|
||
2.2 Для определения в каком контексте искать пользователей и группы
|
||
служит комманда ldapsbase
|
||
Пример:
|
||
ldapsbase cn=users,dc=domain,dc=ru
|
||
|
||
2.3 Комманда ldapattr служит для определния различных параметров плагина.
|
||
a)первый параметр определяет атрибут "пользователь" в контексте ldap каталога
|
||
в Active Directory это как правило "cn" , в других ldap серверах "uid".
|
||
b)второй параметр опеределяет атрибут "группа" в контексте ldap каталога
|
||
в Active Directory это как правило "memberof" , в других ldap серверах "ou".
|
||
c)третий параметр может не обязательный и может содержать 0 или 1
|
||
1 - означает, что при авторизации пользователя или создании для него
|
||
орграничения по трафику его имя будет приводится к нижнему регистру
|
||
(примечание: только для имен пользователей на английском) .
|
||
Этот параметр создан для исключения случаев когда LDAP каталог при
|
||
авторизации не отличает имен пользователей в регистрах.
|
||
|
||
Пример:
|
||
ldapattr cn memberof 1
|
||
|
||
2.4 Комманда ldapaccess служит для определения "признака" доступности
|
||
пользователю вообще пройти авторизацию на proxy сервере. В контексте
|
||
ldap каталога это ЗНАЧЕНИЕ атрибута "группы" описанной в комманде ldapattr.
|
||
|
||
Пример:
|
||
ldapaccess CN=internet,CN=Users,DC=domain,DC=ru
|
||
|
||
Например: для Active Directory это будет пользователь входящий в группу
|
||
internet. Тоесть при проверке можно ли пользователю работать с proxy
|
||
формируется фильтр он должен попасть в следующий фильтр:
|
||
(&(cn=имяпользователя)(memberof=CN=internet,CN=Users,DC=domain,DC=ru))
|
||
|
||
2.5 Комманда ldapuserenv служит для формирования строки имени пользователя
|
||
который пытается пройти авторизацию в ldap. Тоесть фактически это base DN
|
||
для пользователя.
|
||
|
||
Пример:
|
||
ldapuserenv cn=users,dc=domain,dc=ru
|
||
|
||
|
||
2.7 Комманда ldaptrafgroup служит для создания лимитов
|
||
ОНИ ОБЯЗАТЕЛЬНО ДОЛЖНА ИДТИ ПОСЛЕ ВСЕХ остальных комманд плагина.
|
||
a) первый параметр это название группы (значение ldap атрибута ) в которую
|
||
входит пользователь.
|
||
b) второй параметр на какой период накладывается ограничение по объему
|
||
трафика . Может иметь одно из следующих значений "MONTHLY","DAILY","WEEKLY".
|
||
с) третий параметр это размер лимита в мегабайтах .
|
||
в) четвертый параметр это ограничение по скорости в бит/сек.
|
||
|
||
Лимиты накладываются персонально на пользователя входящего в группу,
|
||
а не НА группу в целом.
|
||
В данном примере в Active Directory создана группа с именем traf200m
|
||
куда ключенны все пользователи кторым необходим данный лимит 200 Мбайт,
|
||
в месяц с входящей полосой 60000 бит/сек НА КАЖДОГО ПОЛЬЗОВАТЕЛЯ.
|
||
|
||
Пример:
|
||
ldaptrafgroup CN=traf200m,CN=Users,DC=domain,DC=ru MONTHLY 200 60000
|
||
|
||
|
||
Счетчики храняться для каждого пользователя в отдельном файле,имя которых
|
||
формируется, как имя пользователя и расширение lc. Сохранение счетчиков
|
||
происходит раз в минуту.
|
||
|
||
2.6 Комманда ldapdircount служит для указания директории куда будут
|
||
сохраняться файлы с пользовательскими счетчиками. Путь к директории
|
||
надо заканчивать слэшем, прямой или обратный в зависимости от ОС.
|
||
|
||
Пример:
|
||
ldapdircount c:\3proxy\counter\
|
||
ldapdircount /usr/3proxy/counter/
|
||
|
||
|
||
Настройка 3proxy
|
||
---------------------
|
||
# ВНИМАНИЕ ! Не забывайте что daemon или service должен идти первой строкой
|
||
# конфигурационного файла,то есть до загрузки любых плагинов
|
||
daemon
|
||
|
||
# для win32
|
||
plugin "с:\3proxy\ldapauth.dll" start
|
||
# для unix
|
||
plugin "/3proxy/libldapauth.so" start
|
||
|
||
ldapconnect 192.160.0.1 cn=ldap,cn=users,dc=domain,dc=ru ldap
|
||
ldapsbase cn=users,dc=domain,dc=ru
|
||
ldapaccess CN=internet,CN=Users,DC=domain,DC=ru
|
||
ldapuserenv cn=users,dc=domain,dc=ru
|
||
ldapdircount /3proxy/counter/
|
||
ldapattr cn memberof 1
|
||
|
||
ldaptrafgroup CN=traf200m,CN=Users,DC=domain,DC=ru MONTHLY 200 60000
|
||
ldaptrafgroup CN=traf60d,CN=Users,DC=domain,DC=ru DAILY 60 80000
|
||
ldaptrafgroup CN=traf100w,CN=Users,DC=domain,DC=ru WEEKLY 100 80000
|
||
|
||
auth ldap
|
||
allow * * * *
|
||
proxy -p3128 -n
|
||
--------------------
|
||
|
||
Так же возможна следующая конфигурация без учета трафика и ограничений
|
||
по скорости.
|
||
---------------------
|
||
service
|
||
|
||
plugin "с:\3proxy\ldapauth.dll" start
|
||
ldapconnect 192.160.0.1 cn=ldap,cn=users,dc=domain,dc=ru ldap
|
||
ldapsbase cn=users,dc=domain,dc=ru
|
||
ldapaccess CN=internet,CN=Users,DC=domain,DC=ru
|
||
ldapuserenv cn=users,dc=domain,dc=ru
|
||
ldapattr cn memberof 1
|
||
auth ldap
|
||
allow * * * *
|
||
proxy -p3128 -n
|
||
---------------------
|
||
|
||
Создание списков доступа
|
||
|
||
Чтобы можно было создавать ACL на основе списков пользователей входящих
|
||
в различные группы каталога ldap существует утилита getldapuser
|
||
Данной утилите могут переданы 5 параметров :
|
||
|
||
getldapuser < ldapserver basedn user_attribute filter user password >
|
||
|
||
ldapserver - имя или ip адрес LDAP сервера
|
||
basedn - контекст подключения к LDAP (например: cn=users,dc=domain,dc=com)
|
||
user_attribute - название пользовательского атрибута (например:
|
||
в Active Directory это cn в других LDAP каталогах он может
|
||
быт ou)
|
||
filter - фильтр по какому пользователи будут отбираться из LDAP (например:
|
||
для Active Directory вывести всех пользователей входящих в группу
|
||
internet будет следующая строка
|
||
(memberOf=cn=internet,cn=Users,dc=domain,dc=com) )
|
||
|
||
user - имя пользователя для подключения к серверу
|
||
password - пароль (если есть)
|
||
|
||
Пример использования getldapuser в 3proxy.
|
||
|
||
Необходимо дать доступ к icq только определенным пользоватлям . Cоздаем
|
||
в AD группу icquser заносим туда нужных пользователей.
|
||
Создаем bat файл следующего содержания который будет формировать файл
|
||
c:\3proxy\icquser со списком пользователей:
|
||
-------------------------------------------
|
||
getldapuser 192.168.0.1 dc=domain,dc=com cn (memberOf=cn=icquser,cn=Users,dc=domain,dc=com)
|
||
cn=admin,cn=users,dc=domain,dc=com password > c:\3proxy\icquser
|
||
-------------------------------------------
|
||
Вставляем данный bat файл на периодическое выполнение.
|
||
|
||
Далее прописываем 3proxy.cfg след строки
|
||
-------------------------------------------------
|
||
monitor "c:\3proxy\icquser"
|
||
|
||
auth ldap
|
||
allow $"c:\3proxy\icquser" * *icq.com
|
||
deny * * *icq.com
|
||
allow *
|
||
proxy -n
|
||
-------------------------------------------------
|
||
|
||
|
||
Компиляция плагина на различных ОС
|
||
|
||
1) Win32 (windows 98/NT/XP/2000/2003)
|
||
Для сборки и работы плагина в архиве с ним уже идут в каталоге ldapwindev
|
||
следующие библиотеки (версия 2.2.29).
|
||
|
||
libcrypto.dll
|
||
liblber.dll
|
||
libldap.dll
|
||
libssl.dll
|
||
и заголовочные файлы
|
||
lber.h
|
||
lber_types.h
|
||
ldap.h
|
||
ldap_cdefs.h
|
||
ldap_features.h
|
||
ldap_schema.h
|
||
ldap_utf8.h
|
||
|
||
Далее вам необходимо скачать и установить компилятор Dev-Cpp с сайта
|
||
http://www.bloodshed.net/dev/
|
||
|
||
Далее скачать исходные тексты 3proxy отсюда:
|
||
http://3proxy.ru/current/3proxy-0.6-devel.tgz и распаковать.
|
||
В каталог \src\plugins скопировать каталог с исходными текстами
|
||
плагина. Скорректировать com-win32.bat файл с учетом того где у Вас установлен
|
||
компилятор gcc , например:
|
||
-------------com-win32.bat----------------
|
||
c:\Dev-Cpp\bin\gcc -shared -o ldapauth.dll ldapauth.c -DWIN32 -I"./ldapwindev" -L"./ldapwindev" -lldap
|
||
------------------------------------------
|
||
И запустить на выполнение com-win32.bat после этого у Вас должна появится
|
||
библиотека ldapauth.dll и исполняемый файл getldapuser.exe .
|
||
Для дальнейшей работы получившиеся файлы и все библиотеки dll из каталога
|
||
ldapwindev скопировать в каталог с 3proxy.
|
||
|
||
2) xNIX (linux,freebsd и т.п. )
|
||
|
||
Перед компиляцией нужно проверить чтобы в системе был уcтановлен
|
||
OpenLDAP client. В системе должны присутвовать следующие
|
||
библиотеки:
|
||
|
||
liblber.a
|
||
libldap.a
|
||
liblber.so
|
||
libldap.so
|
||
|
||
и заголовочные файлы
|
||
lber.h
|
||
lber_types.h
|
||
ldap.h
|
||
ldap_cdefs.h
|
||
ldap_features.h
|
||
ldap_schema.h
|
||
ldap_utf8.h
|
||
|
||
Установка клиента под разными ОС это делается либо инсталяцией готового пакета
|
||
либо самостоятельная сборка данного клиента из исходных текстов которые
|
||
расположенны тут ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/
|
||
|
||
Чтобы собрать пакет, необходимо скачать архив
|
||
wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.3.9.tgz
|
||
|
||
распаковываем архив
|
||
tar xvzf openldap-2.3.9.tgz
|
||
|
||
и запускаем скрипт автоконфигурации со следующими
|
||
параметрами:
|
||
./configure --enable-backends=no --enable-slapd=no
|
||
|
||
далее
|
||
|
||
make
|
||
make install
|
||
|
||
Далее скачать исходные тексты 3proxy отсюда:
|
||
http://3proxy.ru/current/3proxy-0.6-devel.tgz и распаковать.
|
||
В каталог \src\plugins скопировать каталог с исходными текстами
|
||
плагина. Изменить пути в файле com-unix.sh параметрах компиляции -I и -L
|
||
к заголовочным и библиотечным файлам ldap для Вашей системы.
|
||
|
||
Выполнить следующие комманды:
|
||
chmod +x com-unix.sh
|
||
com-unix.sh
|
||
|
||
И запустить на выполнение com-unix.sh после этого у Вас должна появится
|
||
библиотека ldapauth.so и исполняемый файл getldapuser.
|
||
|
||
Получившиеся файлы скопировать в каталог с 3proxy.
|
||
----------------------------win1251------------------------------
|
||
----------------------------KOI8-R------------------------------
|
||
рМБЗЙО БХФЕОФЙЖЙЛБГЙЙ Ч LDAP ДМС УЕТЧЕТБ 3proxХ (пу windows,unix)
|
||
(c) Lopuchov Kirill lopuchov@mail.ru
|
||
|
||
1. лТБФЛПЕ ПРЙУБОЙЕ
|
||
|
||
* рПДДЕТЦЙЧБЕФУС ФПМШЛП БХФЕОФЙЖЙЛБГЙС ПФЛТЩФЩН ФЕЛУФПН (basic)
|
||
* рПДДЕТЦЙЧБЕФУС УПЪДБОЙЕ МЙНЙФПЧ РП ФТБЖЙЛХ ДМС ЗТХРР РПМШЪПЧБФЕМЕК
|
||
(Ч ДЕОШ,НЕУСГ,ОЕДЕМА)
|
||
* рПДДЕТЦЙЧБЕФУС УПЪДБОЙЕ МЙНЙФПЧ РП УЛПТПУФЙ ДМС ЗТХРР РПМШЪПЧБФЕМЕК
|
||
(РПЛБ МЙНЙФЩ ФПМШЛП ОБ ЧИПДСЭЙК ФТБЖЙЛ)
|
||
|
||
* пФУХФcФЧХЕФ ЛЕЫЙТПЧБОЙЕ ЙНЕО РПМШЪПЧБФЕМЕК.
|
||
|
||
ч ЛБЮЕУФЧЕ ЙОФЕТЖЕКУБ ДПУФХРБ Л ldap ЙУРПМШЪХЕФУС ВЙВМЙПФЕЛБ openldap,
|
||
РПЬФПНХ РМБЗЙО НПЦЕФ ЛПНРЙМЙТПЧБФШУС Й ТБВПФБФШ ЛБЛ ОБ Windows 98/2000/XP
|
||
ФБЛ Й ОБ ТБЪМЙЮОЩИ unix РПДПВОЩИ УЙУФЕНБИ ОБРТЙНЕТ Linux,FreeBSD.
|
||
чУЕ ФЕУФЩ ТБВПФПУРПУПВОПУФЙ РТПЧПДЙМЙУШ ОБ УЕТЧЕТЕ У Active Directory Ч
|
||
ЕЕ ТЕБМЙЪБГЙЙ ldap ОП Ч РТЙОГЙРЕ ДПМЦОП ТБВПФБФШ Й ОБ ДТХЗЙИ ldap УЙУФЕНБИ.
|
||
|
||
дМС ЛПНРЙМСГЙЙ Й ФЕУФЙТПЧБОЙС РПД пу Windows ЙУРПМШЪПЧБМУС РБЛЕФ Dev-C++
|
||
http://www.bloodshed.net/dev/ Й ЮБУФШ ВЙВМЙПФЕЛ OpenLDAP for Windows
|
||
http://lucas.bergmans.us/hacks/openldap/
|
||
ЧЕТУЙС openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.exe,
|
||
ЧЕТУЙС ЬФПК ЦЕ ВЙВМЙПФЕЛЙ ЙДЕФ Ч ЛПНРМЕЛФЕ Л РМБЗЙОХ.
|
||
|
||
РПД unix РПДПВОПК пу (Freebsd) ЙУРПМШЪПЧБМУС УФБОДБТФОЩК gcc.
|
||
Й ВЙВМЙПФЕЛЙ openldap-client.
|
||
|
||
|
||
|
||
2. оБУФТПКЛБ РМБЗЙОБ.
|
||
|
||
2.1 дМС РПДЛМАЮЕОЙС Л LDAP УЕТЧЕТХ ЙУРПМШЪХЕФУС ЛПННБОДБ ldapconnect .
|
||
рЕТЧЩК РБТБНЕФТ ПРТЕДЕМСФ ip БДТЕУ ЙМЙ host ЙНС LDAP УЕТЧЕТБ ,
|
||
ЧФПТПК РБТБНЕФТ ЙНС РПМШЪПЧБФЕМС ПФ ЙНЕОЙ ЛПТПЗП ВХДХФ УПЧЕТЫЙФШУС
|
||
ЧУС ДБМШОЕКЫБС ТБВПФБ У ldap ЛБФБМПЗПН ФБЛБС ЛБЛ РПЙУЛ РПМШЪПЧБФЕМЕК
|
||
Й РТПЧЕТЛБ ЙИ РТЙОБДМЕЦОПУФЙ Л ФПК ЙМЙ ЙОПК ЗТХРРЕ, ФТЕФЙК РБТБНЕФТ ЬФП
|
||
РБТПМШ ДМС ЬФПЗП РПМШЪПЧБФЕМС.
|
||
|
||
х ФБЛПЗП РПМШЪПЧБФЕ Ч ЛПОФЕЛУФЕФ Active Directory НПЗХФ ПФУХФУЧПЧБФШ
|
||
РТБЧБ БДНЙОЙУФТБФПТБ ДМС ОПТНБМШОПК ТБВПФЩ РМБЗЙОБ. ч ЛМБУУЙЮЕУЛЙИ Open Ldap
|
||
УЕТЧЕТБИ РПД xNIX ФБЛЙН РПМШЪПЧБФЕМЕН НПЦЕФ ЧЩУФХРБФШ anonymous.
|
||
|
||
рТЙНЕТ:
|
||
ldapconnect 192.160.0.1 cn=ldap,cn=users,dc=domain,dc=ru ldap
|
||
|
||
2.2 дМС ПРТЕДЕМЕОЙС Ч ЛБЛПН ЛПОФЕЛУФЕ ЙУЛБФШ РПМШЪПЧБФЕМЕК Й ЗТХРРЩ
|
||
УМХЦЙФ ЛПННБОДБ ldapsbase
|
||
рТЙНЕТ:
|
||
ldapsbase cn=users,dc=domain,dc=ru
|
||
|
||
2.3 лПННБОДБ ldapattr УМХЦЙФ ДМС ПРТЕДЕМОЙС ТБЪМЙЮОЩИ РБТБНЕФТПЧ РМБЗЙОБ.
|
||
a)РЕТЧЩК РБТБНЕФТ ПРТЕДЕМСЕФ БФТЙВХФ "РПМШЪПЧБФЕМШ" Ч ЛПОФЕЛУФЕ ldap ЛБФБМПЗБ
|
||
Ч Active Directory ЬФП ЛБЛ РТБЧЙМП "cn" , Ч ДТХЗЙИ ldap УЕТЧЕТБИ "uid".
|
||
b)ЧФПТПК РБТБНЕФТ ПРЕТЕДЕМСЕФ БФТЙВХФ "ЗТХРРБ" Ч ЛПОФЕЛУФЕ ldap ЛБФБМПЗБ
|
||
Ч Active Directory ЬФП ЛБЛ РТБЧЙМП "memberof" , Ч ДТХЗЙИ ldap УЕТЧЕТБИ "ou".
|
||
c)ФТЕФЙК РБТБНЕФТ НПЦЕФ ОЕ ПВСЪБФЕМШОЩК Й НПЦЕФ УПДЕТЦБФШ 0 ЙМЙ 1
|
||
1 - ПЪОБЮБЕФ, ЮФП РТЙ БЧФПТЙЪБГЙЙ РПМШЪПЧБФЕМС ЙМЙ УПЪДБОЙЙ ДМС ОЕЗП
|
||
ПТЗТБОЙЮЕОЙС РП ФТБЖЙЛХ ЕЗП ЙНС ВХДЕФ РТЙЧПДЙФУС Л ОЙЦОЕНХ ТЕЗЙУФТХ
|
||
(РТЙНЕЮБОЙЕ: ФПМШЛП ДМС ЙНЕО РПМШЪПЧБФЕМЕК ОБ БОЗМЙКУЛПН) .
|
||
ьФПФ РБТБНЕФТ УПЪДБО ДМС ЙУЛМАЮЕОЙС УМХЮБЕЧ ЛПЗДБ LDAP ЛБФБМПЗ РТЙ
|
||
БЧФПТЙЪБГЙЙ ОЕ ПФМЙЮБЕФ ЙНЕО РПМШЪПЧБФЕМЕК Ч ТЕЗЙУФТБИ.
|
||
|
||
рТЙНЕТ:
|
||
ldapattr cn memberof 1
|
||
|
||
2.4 лПННБОДБ ldapaccess УМХЦЙФ ДМС ПРТЕДЕМЕОЙС "РТЙЪОБЛБ" ДПУФХРОПУФЙ
|
||
РПМШЪПЧБФЕМА ЧППВЭЕ РТПКФЙ БЧФПТЙЪБГЙА ОБ proxy УЕТЧЕТЕ. ч ЛПОФЕЛУФЕ
|
||
ldap ЛБФБМПЗБ ЬФП ъобюеойе БФТЙВХФБ "ЗТХРРЩ" ПРЙУБООПК Ч ЛПННБОДЕ ldapattr.
|
||
|
||
рТЙНЕТ:
|
||
ldapaccess CN=internet,CN=Users,DC=domain,DC=ru
|
||
|
||
оБРТЙНЕТ: ДМС Active Directory ЬФП ВХДЕФ РПМШЪПЧБФЕМШ ЧИПДСЭЙК Ч ЗТХРРХ
|
||
internet. фПЕУФШ РТЙ РТПЧЕТЛЕ НПЦОП МЙ РПМШЪПЧБФЕМА ТБВПФБФШ У proxy
|
||
ЖПТНЙТХЕФУС ЖЙМШФТ ПО ДПМЦЕО РПРБУФШ Ч УМЕДХАЭЙК ЖЙМШФТ:
|
||
(&(cn=ЙНСРПМШЪПЧБФЕМС)(memberof=CN=internet,CN=Users,DC=domain,DC=ru))
|
||
|
||
2.5 лПННБОДБ ldapuserenv УМХЦЙФ ДМС ЖПТНЙТПЧБОЙС УФТПЛЙ ЙНЕОЙ РПМШЪПЧБФЕМС
|
||
ЛПФПТЩК РЩФБЕФУС РТПКФЙ БЧФПТЙЪБГЙА Ч ldap. фПЕУФШ ЖБЛФЙЮЕУЛЙ ЬФП base DN
|
||
ДМС РПМШЪПЧБФЕМС.
|
||
|
||
рТЙНЕТ:
|
||
ldapuserenv cn=users,dc=domain,dc=ru
|
||
|
||
|
||
2.7 лПННБОДБ ldaptrafgroup УМХЦЙФ ДМС УПЪДБОЙС МЙНЙФПЧ
|
||
пой пвсъбфемшоп дпмцоб йдфй рпуме чуеи ПУФБМШОЩИ ЛПННБОД РМБЗЙОБ.
|
||
a) РЕТЧЩК РБТБНЕФТ ЬФП ОБЪЧБОЙЕ ЗТХРРЩ (ЪОБЮЕОЙЕ ldap БФТЙВХФБ ) Ч ЛПФПТХА
|
||
ЧИПДЙФ РПМШЪПЧБФЕМШ.
|
||
b) ЧФПТПК РБТБНЕФТ ОБ ЛБЛПК РЕТЙПД ОБЛМБДЩЧБЕФУС ПЗТБОЙЮЕОЙЕ РП ПВЯЕНХ
|
||
ФТБЖЙЛБ . нПЦЕФ ЙНЕФШ ПДОП ЙЪ УМЕДХАЭЙИ ЪОБЮЕОЙК "MONTHLY","DAILY","WEEKLY".
|
||
У) ФТЕФЙК РБТБНЕФТ ЬФП ТБЪНЕТ МЙНЙФБ Ч НЕЗБВБКФБИ .
|
||
Ч) ЮЕФЧЕТФЩК РБТБНЕФТ ЬФП ПЗТБОЙЮЕОЙЕ РП УЛПТПУФЙ Ч ВЙФ/УЕЛ.
|
||
|
||
мЙНЙФЩ ОБЛМБДЩЧБАФУС РЕТУПОБМШОП ОБ РПМШЪПЧБФЕМС ЧИПДСЭЕЗП Ч ЗТХРРХ,
|
||
Б ОЕ об ЗТХРРХ Ч ГЕМПН.
|
||
ч ДБООПН РТЙНЕТЕ Ч Active Directory УПЪДБОБ ЗТХРРБ У ЙНЕОЕН traf200m
|
||
ЛХДБ ЛМАЮЕООЩ ЧУЕ РПМШЪПЧБФЕМЙ ЛФПТЩН ОЕПВИПДЙН ДБООЩК МЙНЙФ 200 нВБКФ,
|
||
Ч НЕУСГ У ЧИПДСЭЕК РПМПУПК 60000 ВЙФ/УЕЛ об лбцдпзп рпмшъпчбфемс.
|
||
|
||
рТЙНЕТ:
|
||
ldaptrafgroup CN=traf200m,CN=Users,DC=domain,DC=ru MONTHLY 200 60000
|
||
|
||
|
||
уЮЕФЮЙЛЙ ИТБОСФШУС ДМС ЛБЦДПЗП РПМШЪПЧБФЕМС Ч ПФДЕМШОПН ЖБКМЕ,ЙНС ЛПФПТЩИ
|
||
ЖПТНЙТХЕФУС, ЛБЛ ЙНС РПМШЪПЧБФЕМС Й ТБУЫЙТЕОЙЕ lc. уПИТБОЕОЙЕ УЮЕФЮЙЛПЧ
|
||
РТПЙУИПДЙФ ТБЪ Ч НЙОХФХ.
|
||
|
||
2.6 лПННБОДБ ldapdircount УМХЦЙФ ДМС ХЛБЪБОЙС ДЙТЕЛФПТЙЙ ЛХДБ ВХДХФ
|
||
УПИТБОСФШУС ЖБКМЩ У РПМШЪПЧБФЕМШУЛЙНЙ УЮЕФЮЙЛБНЙ. рХФШ Л ДЙТЕЛФПТЙЙ
|
||
ОБДП ЪБЛБОЮЙЧБФШ УМЬЫЕН, РТСНПК ЙМЙ ПВТБФОЩК Ч ЪБЧЙУЙНПУФЙ ПФ пу.
|
||
|
||
рТЙНЕТ:
|
||
ldapdircount c:\3proxy\counter\
|
||
ldapdircount /usr/3proxy/counter/
|
||
|
||
|
||
оБУФТПКЛБ 3proxy
|
||
---------------------
|
||
# чойнбойе ! оЕ ЪБВЩЧБКФЕ ЮФП daemon ЙМЙ service ДПМЦЕО ЙДФЙ РЕТЧПК УФТПЛПК
|
||
# ЛПОЖЙЗХТБГЙПООПЗП ЖБКМБ,ФП ЕУФШ ДП ЪБЗТХЪЛЙ МАВЩИ РМБЗЙОПЧ
|
||
daemon
|
||
|
||
# ДМС win32
|
||
plugin "У:\3proxy\ldapauth.dll" start
|
||
# ДМС unix
|
||
plugin "/3proxy/libldapauth.so" start
|
||
|
||
ldapconnect 192.160.0.1 cn=ldap,cn=users,dc=domain,dc=ru ldap
|
||
ldapsbase cn=users,dc=domain,dc=ru
|
||
ldapaccess CN=internet,CN=Users,DC=domain,DC=ru
|
||
ldapuserenv cn=users,dc=domain,dc=ru
|
||
ldapdircount /3proxy/counter/
|
||
ldapattr cn memberof 1
|
||
|
||
ldaptrafgroup CN=traf200m,CN=Users,DC=domain,DC=ru MONTHLY 200 60000
|
||
ldaptrafgroup CN=traf60d,CN=Users,DC=domain,DC=ru DAILY 60 80000
|
||
ldaptrafgroup CN=traf100w,CN=Users,DC=domain,DC=ru WEEKLY 100 80000
|
||
|
||
auth ldap
|
||
allow * * * *
|
||
proxy -p3128 -n
|
||
--------------------
|
||
|
||
фБЛ ЦЕ ЧПЪНПЦОБ УМЕДХАЭБС ЛПОЖЙЗХТБГЙС ВЕЪ ХЮЕФБ ФТБЖЙЛБ Й ПЗТБОЙЮЕОЙК
|
||
РП УЛПТПУФЙ.
|
||
---------------------
|
||
service
|
||
|
||
plugin "У:\3proxy\ldapauth.dll" start
|
||
ldapconnect 192.160.0.1 cn=ldap,cn=users,dc=domain,dc=ru ldap
|
||
ldapsbase cn=users,dc=domain,dc=ru
|
||
ldapaccess CN=internet,CN=Users,DC=domain,DC=ru
|
||
ldapuserenv cn=users,dc=domain,dc=ru
|
||
ldapattr cn memberof 1
|
||
auth ldap
|
||
allow * * * *
|
||
proxy -p3128 -n
|
||
---------------------
|
||
|
||
уПЪДБОЙЕ УРЙУЛПЧ ДПУФХРБ
|
||
|
||
юФПВЩ НПЦОП ВЩМП УПЪДБЧБФШ ACL ОБ ПУОПЧЕ УРЙУЛПЧ РПМШЪПЧБФЕМЕК ЧИПДСЭЙИ
|
||
Ч ТБЪМЙЮОЩЕ ЗТХРРЩ ЛБФБМПЗБ ldap УХЭЕУФЧХЕФ ХФЙМЙФБ getldapuser
|
||
дБООПК ХФЙМЙФЕ НПЗХФ РЕТЕДБОЩ 5 РБТБНЕФТПЧ :
|
||
|
||
getldapuser < ldapserver basedn user_attribute filter user password >
|
||
|
||
ldapserver - ЙНС ЙМЙ ip БДТЕУ LDAP УЕТЧЕТБ
|
||
basedn - ЛПОФЕЛУФ РПДЛМАЮЕОЙС Л LDAP (ОБРТЙНЕТ: cn=users,dc=domain,dc=com)
|
||
user_attribute - ОБЪЧБОЙЕ РПМШЪПЧБФЕМШУЛПЗП БФТЙВХФБ (ОБРТЙНЕТ:
|
||
Ч Active Directory ЬФП cn Ч ДТХЗЙИ LDAP ЛБФБМПЗБИ ПО НПЦЕФ
|
||
ВЩФ ou)
|
||
filter - ЖЙМШФТ РП ЛБЛПНХ РПМШЪПЧБФЕМЙ ВХДХФ ПФВЙТБФШУС ЙЪ LDAP (ОБРТЙНЕТ:
|
||
ДМС Active Directory ЧЩЧЕУФЙ ЧУЕИ РПМШЪПЧБФЕМЕК ЧИПДСЭЙИ Ч ЗТХРРХ
|
||
internet ВХДЕФ УМЕДХАЭБС УФТПЛБ
|
||
(memberOf=cn=internet,cn=Users,dc=domain,dc=com) )
|
||
|
||
user - ЙНС РПМШЪПЧБФЕМС ДМС РПДЛМАЮЕОЙС Л УЕТЧЕТХ
|
||
password - РБТПМШ (ЕУМЙ ЕУФШ)
|
||
|
||
рТЙНЕТ ЙУРПМШЪПЧБОЙС getldapuser Ч 3proxy.
|
||
|
||
оЕПВИПДЙНП ДБФШ ДПУФХР Л icq ФПМШЛП ПРТЕДЕМЕООЩН РПМШЪПЧБФМСН . CПЪДБЕН
|
||
Ч AD ЗТХРРХ icquser ЪБОПУЙН ФХДБ ОХЦОЩИ РПМШЪПЧБФЕМЕК.
|
||
уПЪДБЕН bat ЖБКМ УМЕДХАЭЕЗП УПДЕТЦБОЙС ЛПФПТЩК ВХДЕФ ЖПТНЙТПЧБФШ ЖБКМ
|
||
c:\3proxy\icquser УП УРЙУЛПН РПМШЪПЧБФЕМЕК:
|
||
-------------------------------------------
|
||
getldapuser 192.168.0.1 dc=domain,dc=com cn (memberOf=cn=icquser,cn=Users,dc=domain,dc=com)
|
||
cn=admin,cn=users,dc=domain,dc=com password > c:\3proxy\icquser
|
||
-------------------------------------------
|
||
чУФБЧМСЕН ДБООЩК bat ЖБКМ ОБ РЕТЙПДЙЮЕУЛПЕ ЧЩРПМОЕОЙЕ.
|
||
|
||
дБМЕЕ РТПРЙУЩЧБЕН 3proxy.cfg УМЕД УФТПЛЙ
|
||
-------------------------------------------------
|
||
monitor "c:\3proxy\icquser"
|
||
|
||
auth ldap
|
||
allow $"c:\3proxy\icquser" * *icq.com
|
||
deny * * *icq.com
|
||
allow *
|
||
proxy -n
|
||
-------------------------------------------------
|
||
|
||
|
||
лПНРЙМСГЙС РМБЗЙОБ ОБ ТБЪМЙЮОЩИ пу
|
||
|
||
1) Win32 (windows 98/NT/XP/2000/2003)
|
||
дМС УВПТЛЙ Й ТБВПФЩ РМБЗЙОБ Ч БТИЙЧЕ У ОЙН ХЦЕ ЙДХФ Ч ЛБФБМПЗЕ ldapwindev
|
||
УМЕДХАЭЙЕ ВЙВМЙПФЕЛЙ (ЧЕТУЙС 2.2.29).
|
||
|
||
libcrypto.dll
|
||
liblber.dll
|
||
libldap.dll
|
||
libssl.dll
|
||
Й ЪБЗПМПЧПЮОЩЕ ЖБКМЩ
|
||
lber.h
|
||
lber_types.h
|
||
ldap.h
|
||
ldap_cdefs.h
|
||
ldap_features.h
|
||
ldap_schema.h
|
||
ldap_utf8.h
|
||
|
||
дБМЕЕ ЧБН ОЕПВИПДЙНП УЛБЮБФШ Й ХУФБОПЧЙФШ ЛПНРЙМСФПТ Dev-Cpp У УБКФБ
|
||
http://www.bloodshed.net/dev/
|
||
|
||
дБМЕЕ УЛБЮБФШ ЙУИПДОЩЕ ФЕЛУФЩ 3proxy ПФУАДБ:
|
||
http://3proxy.ru/current/3proxy-0.6-devel.tgz Й ТБУРБЛПЧБФШ.
|
||
ч ЛБФБМПЗ \src\plugins УЛПРЙТПЧБФШ ЛБФБМПЗ У ЙУИПДОЩНЙ ФЕЛУФБНЙ
|
||
РМБЗЙОБ. уЛПТТЕЛФЙТПЧБФШ com-win32.bat ЖБКМ У ХЮЕФПН ФПЗП ЗДЕ Х чБУ ХУФБОПЧМЕО
|
||
ЛПНРЙМСФПТ gcc , ОБРТЙНЕТ:
|
||
-------------com-win32.bat----------------
|
||
c:\Dev-Cpp\bin\gcc -shared -o ldapauth.dll ldapauth.c -DWIN32 -I"./ldapwindev" -L"./ldapwindev" -lldap
|
||
------------------------------------------
|
||
й ЪБРХУФЙФШ ОБ ЧЩРПМОЕОЙЕ com-win32.bat РПУМЕ ЬФПЗП Х чБУ ДПМЦОБ РПСЧЙФУС
|
||
ВЙВМЙПФЕЛБ ldapauth.dll Й ЙУРПМОСЕНЩК ЖБКМ getldapuser.exe .
|
||
дМС ДБМШОЕКЫЕК ТБВПФЩ РПМХЮЙЧЫЙЕУС ЖБКМЩ Й ЧУЕ ВЙВМЙПФЕЛЙ dll ЙЪ ЛБФБМПЗБ
|
||
ldapwindev УЛПРЙТПЧБФШ Ч ЛБФБМПЗ У 3proxy.
|
||
|
||
2) xNIX (linux,freebsd Й Ф.Р. )
|
||
|
||
рЕТЕД ЛПНРЙМСГЙЕК ОХЦОП РТПЧЕТЙФШ ЮФПВЩ Ч УЙУФЕНЕ ВЩМ ХcФБОПЧМЕО
|
||
OpenLDAP client. ч УЙУФЕНЕ ДПМЦОЩ РТЙУХФЧПЧБФШ УМЕДХАЭЙЕ
|
||
ВЙВМЙПФЕЛЙ:
|
||
|
||
liblber.a
|
||
libldap.a
|
||
liblber.so
|
||
libldap.so
|
||
|
||
Й ЪБЗПМПЧПЮОЩЕ ЖБКМЩ
|
||
lber.h
|
||
lber_types.h
|
||
ldap.h
|
||
ldap_cdefs.h
|
||
ldap_features.h
|
||
ldap_schema.h
|
||
ldap_utf8.h
|
||
|
||
хУФБОПЧЛБ ЛМЙЕОФБ РПД ТБЪОЩНЙ пу ЬФП ДЕМБЕФУС МЙВП ЙОУФБМСГЙЕК ЗПФПЧПЗП РБЛЕФБ
|
||
МЙВП УБНПУФПСФЕМШОБС УВПТЛБ ДБООПЗП ЛМЙЕОФБ ЙЪ ЙУИПДОЩИ ФЕЛУФПЧ ЛПФПТЩЕ
|
||
ТБУРПМПЦЕООЩ ФХФ ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/
|
||
|
||
юФПВЩ УПВТБФШ РБЛЕФ, ОЕПВИПДЙНП УЛБЮБФШ БТИЙЧ
|
||
wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.3.9.tgz
|
||
|
||
ТБУРБЛПЧЩЧБЕН БТИЙЧ
|
||
tar xvzf openldap-2.3.9.tgz
|
||
|
||
Й ЪБРХУЛБЕН УЛТЙРФ БЧФПЛПОЖЙЗХТБГЙЙ УП УМЕДХАЭЙНЙ
|
||
РБТБНЕФТБНЙ:
|
||
./configure --enable-backends=no --enable-slapd=no
|
||
|
||
ДБМЕЕ
|
||
|
||
make
|
||
make install
|
||
|
||
дБМЕЕ УЛБЮБФШ ЙУИПДОЩЕ ФЕЛУФЩ 3proxy ПФУАДБ:
|
||
http://3proxy.ru/current/3proxy-0.6-devel.tgz Й ТБУРБЛПЧБФШ.
|
||
ч ЛБФБМПЗ \src\plugins УЛПРЙТПЧБФШ ЛБФБМПЗ У ЙУИПДОЩНЙ ФЕЛУФБНЙ
|
||
РМБЗЙОБ. йЪНЕОЙФШ РХФЙ Ч ЖБКМЕ com-unix.sh РБТБНЕФТБИ ЛПНРЙМСГЙЙ -I Й -L
|
||
Л ЪБЗПМПЧПЮОЩН Й ВЙВМЙПФЕЮОЩН ЖБКМБН ldap ДМС чБЫЕК УЙУФЕНЩ.
|
||
|
||
чЩРПМОЙФШ УМЕДХАЭЙЕ ЛПННБОДЩ:
|
||
chmod +x com-unix.sh
|
||
com-unix.sh
|
||
|
||
й ЪБРХУФЙФШ ОБ ЧЩРПМОЕОЙЕ com-unix.sh РПУМЕ ЬФПЗП Х чБУ ДПМЦОБ РПСЧЙФУС
|
||
ВЙВМЙПФЕЛБ ldapauth.so Й ЙУРПМОСЕНЩК ЖБКМ getldapuser.
|
||
|
||
рПМХЮЙЧЫЙЕУС ЖБКМЩ УЛПРЙТПЧБФШ Ч ЛБФБМПЗ У 3proxy.
|
||
----------------------------KOI8-R------------------------------ |