Назад | Перейти на главную страницу

Разделите пользователей на две группы (персонал и гости) в FreeRADIUS 3

У меня есть сервер FreeRADIUS (3.0.15) для аутентификации WPA (PEAP + MSCHAPv2), и все работает из коробки, хотя мне кажется, что потребуется целая жизнь обучения в закрытом монастыре, чтобы освоить каждый бит конфигурации.

У меня есть пользователи в users файл, и я хотел бы сохранить его таким образом (по сравнению с sql или ldap), потому что мне нравится удобство редактирования пользователей с помощью простого текстового редактора.

Чего я пытаюсь достичь:

У меня два SSID (staff и guests), и я хотел бы разделить моих пользователей на две группы, чтобы гостевой пользователь был отклонен, если они попытаются пройти аутентификацию на staff SSID.

Что у меня есть на данный момент:

В моем users файл:

DEFAULT
    MyGroup := 'guests',
    Fall-Through := Yes

# Guest users
guest1 Cleartext-Password := 'password1'
# End of guest users

DEFAULT
    MyGroup := 'staff',
    Fall-Through := Yes

# Staff users
staff1 Cleartext-Password := 'kdjsfhksf'
# End of staff users

Я надеюсь, что после анализа файла reply:MyGroup атрибут имеет staff или guest в зависимости от того, какой пользователь соответствует запросу.

Мой dictionary файл имеет это:

ATTRIBUTE MyGroup 3000 string

И мой default сайт имеет это в authorize группа, сразу после files модуль. В rewrite_called_station_id создает новый атрибут Called-Station-SSID, который я использую вместе MyGroup attr, созданный files мод, чтобы попытаться отфильтровать пользователей:

# get SSID from Called-Station-Id
rewrite_called_station_id

# check guest connecting to staff SSID and reject if so
if (&MyGroup == 'guests' && &Called-Station-SSID == 'STAFF') {
        reject
}

Я тоже пробовал это:

if (&reply:MyGroup == 'guests' && &Called-Station-SSID == 'STAFF') {

Но в любом случае я получаю следующую ошибку:

if (&reply:MyGroup == 'guests' && &Called-Station-SSID == 'STAFF') {
ERROR: Failed retrieving values required to evaluate condition

На данный момент я понятия не имею, что происходит и как это исправить.

Если вы хотите назначать группы для пользователей, сделайте это с помощью элементов флажка, которые вставляют элементы в &control список, т.е.

guest1  Mygroup := 'guests', Cleartext-Password := 'password1'

staff1  Mygroup := 'staff', Cleartext-Password := 'kdjsfhksf'

а потом

if ((&control:MyGroup == 'guests') && (&Called-Station-SSID == 'STAFF')) {