Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
1) чем отличаются authorize и authenticate. какое действие делают модули, описанные соответственно, в каждом из них.
2) есть модули pap, chap, mschap — не пойму откуда они берут данные для аутентификации? и делают ли они вообще аутентификацию юзера. или все таки авторизацию? я путаю эти понятия.
3) собственно откуда возникла вообще надобность разобраться с радиусом: необходимо сделать внешнюю аутентификацию через стороннюю программу. известно, что на вход ей нужно подавать логин, и пароль пользователя, а она уже на выходе сработает как модуль радиуса — вернет 0, 1,… и пары атрибутов. Для этого нашел модуль exec — но почему-то простейшая программа в теле которой только int main(...){exit(0);} не авторизует пользователей.
то есть pap, chap, mschap не делают ниче, кроме разбора поступивших от пользователя параметров не делают?
а в результате разбора, я так понимаю, они выставляют некоторые атрибуты внутри радиуса?
а что является для радиуса, признаком того, что пользователя успешно аутентифицировали? Я думал что выдача всеми модулями, которые принимают участие в аутентификации 0 на выходе…
Они осуществляют прозрачную обработку протокола и использя собственно данные из базы говорят валиден пользователь или нет.
Больше они ничего не делают.
3) да хотелось бы чтобы штатными методами pppd/freeradius разобрать CHALLENGE до состояния какого-нить хэша, в который пароль из б/д зашифруется простым crypt/md5/etc… Ну что-то навроде if( radius(challenge-responce)==crypt(db_user_pass))
не получится?
Зависит от протокола. В случае chap не получится. Если интересует почему читайте спецификацию.
где, и что проверяет радиус? Наличие атрибута Auth-Type:=Accept?
Где? Поточнее сформулируйте. И вообще объясните что вам надо. Вместе с FreeRADIUS есть экзампл как оно работает с perl и exec. Еще кроме Cake можно почитать доки Abilis и wiki на freeradius.org и обязательно спеку на протокол.
Они осуществляют прозрачную обработку протокола и использя собственно данные из базы говорят валиден пользователь или нет.
Больше они ничего не делают.
Зависит от протокола. В случае chap не получится. Если интересует почему читайте спецификацию.Ммм… плохо… получается надо фактически писать свой модуль chap и mschap…
Где? Поточнее сформулируйте. И вообще объясните что вам надо. Вместе с FreeRADIUS есть экзампл как оно работает с perl и exec. Еще кроме Cake можно почитать доки Abilis и wiki на freeradius.org и обязательно спеку на протокол.
А что за данные из базы? из какой базы?
Хотя я кажется что-то понял… если подключить в конфиге радиуса модуль files, который берет данные о юзере из файла raddb/users — то прописанного там юзера пускает. Глянул в код — действительно парсит файл, но поскольку в таком «изощренном» Си-коде я не разбираюсь — не понял куда именно оно девает эти данные.
Ммм… плохо… получается надо фактически писать свой модуль chap и mschap…
Нужно аутентифицировать, авторизовывать и обсчитывать пользователей при помощи вызовов внешних программ. Программы пишутся не мной, поэтому где они берут данные — я не знаю. Программы пишутся не мной, поэтому где они берут данные — я не знаю.
Делаю я это через модуль exec. Судя по описанию модуля, я так понял, он ждет от вызываемой программы что она установит уровень ошибки (errorlevel) в 0, если аутентификация прошла успешно. А на вход ей, как аргументы программы можно подать любые переменные из радиуса… что, собственно, я и пытаюсь делать.
А что за данные из базы? из какой базы?
Из какой указано.
А какой еще модуль может выступать в качестве источника данных? (не считая rlm_sql)Хотя я кажется что-то понял… если подключить в конфиге радиуса модуль files, который берет данные о юзере из файла raddb/users — то прописанного там юзера пускает. Глянул в код — действительно парсит файл, но поскольку в таком «изощренном» Си-коде я не разбираюсь — не понял куда именно оно девает эти данные.
В случае подключения files читает оттуда.
«Там» — это где? Я вас теперь не понял, хотя казалось что уже начал :) Мне как раз хотелось бы скормить радиусу голый пароль пользователя, не разбираясь через какой протокол авторизовался пользователь, и не делая всю процедуру шифрации cleartext пароля, и сравнивания с присланным. Мне казалось что rlm_pap, rlm_chap, rlm_mschap как раз эту задачу и решают. Я не прав?Ммм… плохо… получается надо фактически писать свой модуль chap и mschap…
В случае этих протоколов все равно прийдется держать открытые пароли. Там просто подругому никак.
К сожалению, придумал это мой шеф, так что кагбе не вариант :)Нужно аутентифицировать, авторизовывать и обсчитывать пользователей при помощи вызовов внешних программ. Программы пишутся не мной, поэтому где они берут данные — я не знаю. Программы пишутся не мной, поэтому где они берут данные — я не знаю.
Найдите того кто это придумал и оторвите все выступающие части тела.
Это будет работать медленно и уныло. Лучше всего работать напрямую с СУБД через хранимые процедуры. Это эффективно и быстро.Ну это то в принципе пофиг, что медленно. Переписывать не катит, т.к. фактически в этих прогах зашита логика биллинга, а переносить ее на триггеры, это значит писать с нуля. Да еще и пересаживаться на другую БД, т.к. наша триггеры вроде как не умеет.
Где? Или вы имеете в виду, подключенный модуль для работы с SQL?
А какой еще модуль может выступать в качестве источника данных? (не считая rlm_sql)
К сожалению, придумал это мой шеф, так что кагбе не вариант :)
Ну это то в принципе пофиг, что медленно. Переписывать не катит, т.к. фактически в этих прогах зашита логика биллинга, а переносить ее на триггеры, это значит писать с нуля. Да еще и пересаживаться на другую БД, т.к. наша триггеры вроде как не умеет.
С третьей стороны хорошо бы написать это просто как еще один rlm_* к радиусу… надо только понять в каком формате, что, и через что он присылает в модуль, и что, где, и в каком формате желает увидеть в ответ…
Помогите понять как устроен и работает FreeRADIUS…