3proxy/src/plugins/LdapPlugin/ldapauth.txt
Vladimir Dubrovin e3144dc61b ldapauth memory leak fixed
Привет !
Исправил старую багу по утечки памяти в плагине .. теперь вообще не
течет ,
глупая ошибка.. Вот так 3,5  года не попрограммируеш , срузу ошибку
найдеш :)

--
Kirill Lopuchov
2014-05-04 23:10:14 +04:00

592 lines
21 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

----------------------------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 и т.п. )
Перед компиляцией нужно проверить чтобы в системе был уановлен
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------------------------------