Dialin сервер с авторизацией из openldap, но не PAM

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
bitman
рядовой
Сообщения: 38
Зарегистрирован: 2008-08-29 14:35:29

Dialin сервер с авторизацией из openldap, но не PAM

Непрочитанное сообщение bitman » 2009-12-27 20:16:00

Привет.
Помогите определиться в выборе решения:
Нужно реализовать аутентификацию для разных сервисов на основе openldap, но чтобы каждому отдельному пользователю была возможность задавать в свойствах возможность (невозможность) доступа к указанным сервисам.
Поясняю: есть список юзеров. Нужна возможность указать "вон тот юзер имеет почтовый ящик, а вон тот - имеет вход по диал-ап. А вон те двое - имеют логины на ВПН", и т.п.
В общем-то это пока не сам вопрос. А вопрос вот: организовать dialin-сервер, который будет вписываться в заданную схему. Помогите выбрать, на чем реализовать. Диал-ап юзеры (отдельно указанные) тоже должны иметь возможность пользоваться "нашими" VPN и почтой. Читал про PAM-LDAP - вроде не совсем то, что нужно: там ВСЕ юзеры видятся как системные и я не смогу разрешить доступ по диал-ап, а, например, на почту (или VPN) - запретить.
Хотелось бы, для начала, получить рекомендацию по "комплексному решению" - с указанием составных частей. Ну и, наверное, хотелось бы обойтись без Радиуса (мне кажется, он тут лишний).
В данный момент "курю" MPD, PPPD, настройку модемов. Ядро пересобрал (FreeBSD-6.4). Модемы "вижу". Что дальше?
Рано или поздно докурю, но может, поможете сэкономить время, а?
Уточнение: openldap пока используется просто как база.
Последний раз редактировалось f_andrey 2009-12-27 21:45:33, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
bitman
рядовой
Сообщения: 38
Зарегистрирован: 2008-08-29 14:35:29

Re: Dialin сервер с авторизацией из openldap, но не PAM

Непрочитанное сообщение bitman » 2009-12-30 3:30:04

Пока остановился на MPD5.
Возникла такая заминка: при попытке соединения с винды модемы трубку снимают, но после обмена "трелями" винда пишет что-то вроде "ошибка 50. Такое соединение не поддерживается". Вот mpd.log в этот промежуток времени:

Код: Выделить всё

mpd: [L5] chat: Incoming call detected...
mpd: [L5] chat: Connected at 115200.
mpd: [L5] MODEM: idle script succeeded, action=answer
mpd: [L5] MODEM: opening link in answer mode
mpd: [L5] Link: OPEN event
mpd: [L5] LCP: Open event
mpd: [L5] LCP: state change Initial --> Starting
mpd: [L5] LCP: LayerStart
mpd: [L5] MODEM: chat script succeeded
mpd: [L5] Link: UP event
mpd: [L5] LCP: Up event
mpd: [L5] LCP: state change Starting --> Req-Sent
mpd: [L5] LCP: SendConfigReq #3
mpd: [L5]   ACFCOMP
mpd: [L5]   PROTOCOMP
mpd: [L5]   ACCMAP 0x000a0000
mpd: [L5]   MRU 1500
mpd: [L5]   MAGICNUM 1f255ded
mpd: [L5]   AUTHPROTO CHAP MSOFTv2
mpd: [L5] MODEM: carrier detect (CD) signal lost
mpd: [L5] Link: DOWN event
mpd: [L5] LCP: Close event
mpd: [L5] LCP: state change Req-Sent --> Closing
mpd: [L5] LCP: SendTerminateReq #4
mpd: [L5] LCP: Down event
mpd: [L5] LCP: LayerFinish
mpd: [L5] LCP: state change Closing --> Initial
mpd: [L5] chat: Waiting for ring...
Вот mpd.conf:

Код: Выделить всё

startup:
        set user foo bar admin
        set user foo1 bar1
        set console self 127.0.0.1 5005
        set console open
        set web self 0.0.0.0 5006
        set web open

default:
        load multi-dialin

multi-dialin:
        create bundle template B
        set iface idle 900
#       set iface up-script ""
#       set iface down-script ""
        set ipcp ranges 192.168.0.0/16 192.168.0.0/16

        create link static L2 modem
        load common
        set modem device /dev/cuad2
        open
...
        create link static L9 modem
        load common
        set modem device /dev/cuad9

common:
        set link action bundle B
        set link type modem
        set link no pap chap eap
        set link enable chap
        set modem speed 115200
        set modem var $DialPrefix "DP"
        set modem idle-script AnswerCall
#       set modem script AutoLogin
        set link enable incoming
Пробовал коннектиться стандартным гипертерминалом, так он после "трелей" на экран выдает кучу мусора. Хэндбук советует раз в секунду нажимать Enter до появления приглашения залогиниться, но приглашение так и не повляется...

Аватара пользователя
bitman
рядовой
Сообщения: 38
Зарегистрирован: 2008-08-29 14:35:29

Re: Dialin сервер с авторизацией из openldap, но не PAM

Непрочитанное сообщение bitman » 2010-01-01 21:02:36

Получается разговор с самим собой :(
Не верю, что никто не может помочь.
Что, ни у кого не было ситуации, когда и так дел "по горло" (и вроде бы сам не "последний ламер"), а тут еще и "пожар" навалился? И что в это время особо ценна ТА помощь, которая поможет сэкономить драгоценное время?
Следующая ситуация:
Для тестирования "того, что получилось" звоню с домашнего компа (венда Експишка) по модему D-Link 562IS (чипсет Конексантовский). Получается какой-то "бред" - связь обрывается (уже писал) после обмена трелями и пишет "ошибка 50..." (см. предидущий пост). Пытаюсь по очереди включать/выключать разные опции в mpd.conf. "Прочитал" mpd.script. Определил, что скрипты отрабатывают нормально, а разрыв происходит уже после этого. И тут немного помог случай: кто-то позвонил на один из модемов и в логе я увидел (жаль не сохранил), что этот "клиентский модем" обменивался с моим разными конфигурациями. Что-то вроде: "предлагаю так" - "не, так не могу, хочу вот так" - "в принципе так нормально, только убери вот эту опцию" - "ОК, убрал". А дальше написало про ошибку получения адреса! Т. е., более-менее "продвинутые" модемы (предполагаю, что в данном случае именно такой хотел приконнектиться) пытаются согласовать параметры связи, и им это удается! Из этого:
1. Многое понял в порядке установления связи модемами (но - ВРЕМЯ, камрады, ВРЕМЯ!), многое уяснил из параметров самого MPD.
2. Понял, что мой домашний модем кроме того, что не "продвинутый", так еще и "хам" - рвет коннект без всяких объяснений.
А вот и сам следующий вопрос:
Подскажите, плиз, "безотказную умолчальную" комбинацию вида (взял из лога то, что предлагают мои модемы сейчас)

Код: Выделить всё

mpd: [L6]   ACFCOMP
mpd: [L6]   PROTOCOMP
mpd: [L6]   ACCMAP 0x00000000
mpd: [L6]   MRU 1500
mpd: [L6]   MAGICNUM 979380d5
, которая будет принята подобными модемами при настройке соединения со стороны вендового клиента по умолчанию.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35262
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Dialin сервер с авторизацией из openldap, но не PAM

Непрочитанное сообщение Alex Keda » 2010-01-01 21:19:07

та непонятно чего вы в конечном итоге хотите получить...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
bitman
рядовой
Сообщения: 38
Зарегистрирован: 2008-08-29 14:35:29

Re: Dialin сервер с авторизацией из openldap, но не PAM

Непрочитанное сообщение bitman » 2010-01-01 21:45:19

В конечном итоге - то, что в первом посте.
Но сейчас эта задача разделилась на несколько подзадач (от одной "проблемы" к следующей :) ).
И в данный момент нужна рабочая конфигурация MPD для приёма звонков (раздача сети по телефону) с вендовых клиентов, настроенных по умолчанию.
Вот текущий mpd.conf:

Код: Выделить всё

startup:
    # configure mpd users
    set user foo bar admin
    set user foo1 bar1
    # configure the console
    set console self 127.0.0.1 5005
    set console open
    # configure the web server
    set web self 0.0.0.0 5006
    set web open

default:
        load multi-dialin

multi-dialin:
#yes = enable & accept; no = disable & deny
#LAYERS: iface -> ipcp -> ccp -> ecp -> bundle -> link
    set ippool add pool5 192.168.1.101 192.168.1.250
#bundle layer
    create bundle template B
#ipcp layer
    set ipcp ranges 192.168.1.1/32 ippool pool5
    set ipcp dns 10.3.0.128
    set ipcp nbns 0.0.0.0
#iface layer
#    set iface mtu 576
    set iface route 10.3.0.128
    set iface idle 900
    set iface route default
#    set iface up-script ""
#    set iface down-script ""
    set iface enable proxy-arp
    set iface enable nat

#link layer
    create link static L5 modem
    set modem device /dev/cuad5
    load modem-common
    load link-common
    open
    create link static L6 modem
    set modem device /dev/cuad6
    load modem-common
    load link-common
    open
    create link static L7 modem
    set modem device /dev/cuad7
    load modem-common
    load link-common
    open

link-common:
#    set link disable acfcomp protocomp
#    set link accept acfcomp protocomp
#    set link disable magicnum check-magic
#    set link enable passive
    set link accmap 0
    set link mtu 576
    set link mru 576
#    set link no chap
    set link accept pap chap
    set auth max-logins 0 CI
    set auth enable ext-auth
#    set auth extauth-script ...
#    set auth extacct-script ...
#default disable accept: pap, chap-md5, chap-msv2
#default deny: chap-msv1
    set link action bundle B
    set link enable incoming

modem-common:
    set modem speed 115200
    set modem var $DialPrefix "DP"
#    set modem watch -cd
    set modem idle-script AnswerCall
Последнее, что попробовал - поменять MTU.

P.S. Очень рад, что кто-то отозвался, а тем более - ты (надеюсь, ты не против такого обращения - располагает к ускорению получения нужного эффекта :) , и ко мне тоже можно просто - мы хоть лично и не знакомы, этот сайт читаю очень давно и, считай, почти все мои (какие-никакие) умения отсюда).
Жаль только, что "отрываю" от празднования. С праздником! :)

Аватара пользователя
bitman
рядовой
Сообщения: 38
Зарегистрирован: 2008-08-29 14:35:29

Re: Dialin сервер с авторизацией из openldap, но не PAM

Непрочитанное сообщение bitman » 2010-01-01 22:09:00

Почитал вот тут http://www.taurion.ru/ie6/8/4 и засомневался в правильности установленного MTU. Пока сброшу на "умолчальный" (1500), а там - разберусь.

Burner
лейтенант
Сообщения: 693
Зарегистрирован: 2009-06-14 7:02:26

Re: Dialin сервер с авторизацией из openldap, но не PAM

Непрочитанное сообщение Burner » 2010-01-02 10:39:20

bitman писал(а): Поясняю: есть список юзеров. Нужна возможность указать "вон тот юзер имеет почтовый ящик, а вон тот - имеет вход по диал-ап. А вон те двое - имеют логины на ВПН", и т.п.
не знаю, как насчет dialin-сервера, но вот для этого в openldap есть группы.

Аватара пользователя
bitman
рядовой
Сообщения: 38
Зарегистрирован: 2008-08-29 14:35:29

Re: Dialin сервер с авторизацией из openldap, но не PAM

Непрочитанное сообщение bitman » 2010-01-02 16:36:23

Burner писал(а):не знаю, как насчет dialin-сервера, но вот для этого в openldap есть группы.
Спасибо, приблизительно в этом же направлении я и думаю. Сам ldap-сервер уже поднят (хотя еще не опробован :)), "ждёт" mpd-шку.
К слову, open-ldap ставил с хранением конфигов в своей же базе, а не в slapd.conf. Инструкцию "нарыл" тут http://diary.ru/~ldap.

Аватара пользователя
bitman
рядовой
Сообщения: 38
Зарегистрирован: 2008-08-29 14:35:29

Re: Dialin сервер с авторизацией из openldap, но не PAM

Непрочитанное сообщение bitman » 2010-01-06 5:56:12

bitman писал(а): Для тестирования "того, что получилось" звоню с домашнего компа (венда Експишка) по модему D-Link 562IS (чипсет Конексантовский). Получается какой-то "бред" - связь обрывается (уже писал) после обмена трелями и пишет "ошибка 50..." (см. предидущий пост).
Где-то нагуглил, что виновата система. Говорят: "лечится только переустановкой системы". Переставил несколько раз драйвер (в т. ч. с ручным удалением файлов) - не помогло. Переустанавливать систему - "влом", не я один пользуюсь этим компом. Втыкнул в другой компьютер - конекты "пошли"... Вот такая мистика. Обе системы одинаковые, куплены "правильно", недавно переустановлены... Что я тут могу сказать...

Аватара пользователя
bitman
рядовой
Сообщения: 38
Зарегистрирован: 2008-08-29 14:35:29

Re: Dialin сервер с авторизацией из openldap, но не PAM

Непрочитанное сообщение bitman » 2010-01-06 6:12:41

Burner писал(а):не знаю, как насчет dialin-сервера, но вот для этого в openldap есть группы.
Вот я и до групп "добрался" :)
Пока вижу такие варианты:
1. Подключить базу ldap к системным пользователям (pam_ldap/nss_ldap -да?) с соответствующими настройками в mpd-шке.
2. Через FreeRADIUS и rlm_ldap http://wiki.freeradius.org/Rlm_ldap
3. Обрабатывать поиск пользователя вручную скриптом внешней авторизации mpd.
Вопросы:
1. Как все-таки разграничивать права пользователей для разных сервисов? Группы? Можно подробнее? Я поковырялся и вижу, что этот способ отличается от назначения классов. А классами получится - или я "бред несу"? Чем эти способы хороши (плохи)?
2. Никто не поделится примером внешнего скрипта проверки авторизации для mpd? Или хотя-бы помогите въехать, как его писать? Там какие-то пары параметр:значение упоминаются. Это что - с помощью awk или sed нужно обрабатывать? В случае ручного поиска, кажется, было бы проще (ошибаюсь?) - можно задавать нужные ветки и критерии поиска. Т. о. получаем больше возможностей фантазировать с группировками пользователей в базе...