LINUX.ORG.RU
решено ФорумAdmin

Freeradius и ippool в SQL

 , ,


0

2

Есть необходимость использовать radius с SQL в качестве бэкенда. Первичная настрока вопросов не вызвала. Если добавить атрибут Auth-Type := accept то radtest test test 127.0.0.1 1218 testing123 говорит Access-Accept. Если сделать атрибут Cleartext-Password то также Access-Accept. Если добавить другой атрибут, например Mikrotik-Rate-Limit, то возвращает его. Но с ip pool возникло затруднение.

Для того чтобы получить рабочий пример, поставил daloradius. В нём добавил адреса в пул, в таблице radippool появились записи в полях pool_name, framedipaddress и expiry_time. Добавил пользователя в профиль (группу), в профиле (группе) добавил Reply Attributes: Mikrotik-Rate-Limit и Pool-Name. Первый получаю, адрес из пула – нет. Может быть в выводе radtest адреса и не должно быть или это обычный атрибут? И если должен быть в выводе то как его правильно добавить?

И чтоб два раза не вставать, что нужно сделать чтобы заменить Cleartext-Password на MS-CHAP? Какие атрибуты использовать и как шифровать пароль для внесения в БД?

★★★★★

Последнее исправление: sin_a (всего исправлений: 1)

Если добавить атрибут Auth-Type := accept

Auth-Type это такой управляющий атрибут, который не посылается в RADIUS сообщениях, а живёт только внутри FreeRADIUS сервера. Он говорит серверу как сверять креды из запроса с паролем из учётки пользователя. Обычно этот атрибут добавляется самим сервером. Менять его значение на Accept значит отключить проверку кредов. Ты именно этого хотел?

Если сделать атрибут Cleartext-Password

Cleartext-Password это тоже управляющий атрибут. Сервер кладёт в него пароль из учётки пользователя. А потом сверяет креды из запроса с Cleartext-Password.

что нужно сделать чтобы заменить Cleartext-Password на MS-CHAP?

Ничего не нужно делать. Пароль в учётке пользователя должен храниться в открытом виде. Иначе методы проверки кредов для CHAP, MS-CHAP, EAP-MSCHAPv2 и прочих схем аутентификации challenge-response работать не смогут, им нужен Cleartext-Password.

добавил Reply Attributes: Mikrotik-Rate-Limit и Pool-Name. Первый получаю, адрес из пула – нет.

Pool-Name это управляющий атрибут. Управляющие атрибуты надо добавлять не в Reply attributes, а в Check attributes пользовательской учётки. При обработке запроса сервер сначала сходит за учёткой в базу, и у запроса появится управляющий атрибут Pool-Name. После успешной сверки кредов из запроса с паролем из учётки сервер сходит в базу ещё раз за адресом из пула, и у запроса появится Reply атрибут Framed-IP-Address. И вот этот Framed-IP-Address уже будет отослан на NAS в ответе RADIUS Access-Accept.

iliyap ★★★★★
()
Ответ на: комментарий от sin_a

Там о другом речь, об аутентификации WLAN. Точка доступа WLAN предоставляет доступ пользователям не в IP сеть, а в Ethernet сеть. Поэтому Framed-IP-Address в ответе RADIUS Access-Accept обычная точка доступа просто игнорирует. Получив доступ в Ethernet сеть пользователь получает IP адрес у DHCP сервера. Обычная точка доступа этот процесс уже не контролирует.

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

Спасибо, многое стало яснее.

Auth-Type <…> Accept значит отключить проверку кредов.

Да, это я описывал шаги, через которые проходил. Это сразу проявляется при проверке пароля, который надо хоть один раз ввести неправильно.

Пароль в учётке пользователя должен храниться в открытом виде

Мне казалось что сегодня все всегда и везде стараются этого избежать.

Управляющие атрибуты надо добавлять <…> в Check attributes

Спасибо, в описаниях пишут «CONTROL attribute» и я думал что daloradius меня обделил типами атрибутов.

Значит тестовую схему разворачивать пока не нужно, если адрес придёт то не некими тайными путями а нормально появится в ответе radtest.

Сейчас у меня есть следующие записи:
radusergroup: test enabled-users
radgroupreply: enabled-users Mikrotik-Rate-Limit := 10M
radgroupcheck: enabled-users Pool-Name := LAN
radippool: LAN 192.168.0.1

при этом Rate-Limit получаю а адрес нет. Если такой набор правильный то надо смотреть конфигурацию радиуса.

sin_a ★★★★★
() автор топика
Ответ на: комментарий от sin_a

В дефолтной конфигурации (https://github.com/FreeRADIUS/freeradius-server/blob/v3.2.x/raddb/sites-available/default) в секции post-auth вызов модуля sqlippool закомментирован. Чтобы сервер после успешной сверки кредов сходил в базу второй раз за Framed-IP-Address, надо чтобы этот вызов sqlippool был раскомментирован.

Вообще в freeradius нет человеческого способа отлаживать конфигурацию. Авторы предлагают запускать его в дебаг режиме (-X), посылать ему запросы с помощью radtest или radclient, внимательно читать лог сервера.

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

Спасибо, да, раскомментировал в двух местах: в accounting и post-auth, начало выдавать. Правда когда вернулся через некоторое время – перестало, очистка некоторых полей в radippool и всей таблицы radpostauth помогло, сейчас при последовательных запросах возвращает одинаковые значения.

А для заполнения таблицы radacct тоже нужно что нибудь включить?

запускать его в дебаг режиме (-X)

О, это я уже умею. Вот только буквы там не всегда понятные.

sin_a ★★★★★
() автор топика
Ответ на: комментарий от sin_a

А для заполнения таблицы radacct тоже нужно что нибудь включить?

Обычно radacct заполняется по запросам RADIUS Accounting-Request, это делает вызов sql в секции accounting.

Есть ещё вызов sql_session_start в секции post-auth, он умеет заполнять radacct по факту успешной авторизации.

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

А вот ещё вопрос. В таблицу radreply добавляю запись username Acct-Interim-Interval := 60. После этого радиус сервер должен отправлять пакеты acct?

У меня отправляемые пакеты не видны (Access-Request/Access-Accept видны как уходящие, так и приходящие). Для этого тоже нужно что-то включить? Кажется что это должно быть всегда, но тогда я неправильно задаю атрибут? Или interium-update должен отправлять nas сам?

sin_a ★★★★★
() автор топика
Последнее исправление: sin_a (всего исправлений: 1)
Ответ на: комментарий от sin_a

AAA сервер не посылает аккаунтинговые запросы, а принимает их. Вообще для ликвидации безграмотности полезно просмотреть RFC 2865 RADIUS и RFC 2866 RADIUS Accouting.

Acct-Interim-Interval = 60 должен уходить в ответе Access-Accept с AAA сервера на NAS (RFC 2869 RADIUS Extensions). NAS может принять его во внимание, и отправлять промежуточный аккаунтинг (т.е. запросы Accounting-Request с атрибутом Acct-Status-Type = Interim-Update) с указанным интервалом. А может не принимать во внимание. А может не уметь промежуточный аккаунтинг. А может вообще не уметь аккаунтинг.

Проверь, уходит ли атрибут Acct-Interim-Interval в ответе Access-Accept. Если не уходит, может быть дело в :=. Вообще операция := служит для присваивания управляющим атрибутам. Для присваивания атрибутам ответа служит операция =.

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

При вызове radtest возвращается Acct-Interim-Interval = 60. Про := читал что в общем случае здесь это стандартное присваивание и другие могут понадобиться в неких специальных случаях, поэтому так и ставлю

Про то, что отправлять должен nas – в общем да, я должен был понять что если это в radreply то это инструкция для него.

sin_a ★★★★★
() автор топика