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

Как использовать Calling-Station-Id для каждого пользователя в freeRADIUS?

Я пытаюсь ограничить каждого пользователя небольшим набором Mac-ID в RADIUS, напрямую включив соответствующую информацию в users файл. Это было бы приемлемо, даже если бы каждый пользователь был ограничен одним Mac. На сервере работает FreeRADIUS версии 2.1.12 из репозиториев Ubuntu 13.10. Используемая аутентификация - PEAP и MSCHAPv2.

Когда физический клиент (Nexus 5) пытается подключиться через точку доступа (Netgear WG-102), то FreeRADIUS, кажется, идентифицирует Mac-id в запросе доступа, но не использует его в проверках. Единственными устройствами в сети в моей текущей тестовой настройке являются сервер RADIUS, точка доступа и тестовый клиент. Записи в users файл настроен как:

testuser   NT-Password := "<hash>", Calling-Station-Id == "a1b2c3d4e5f6"

В policy.conf файл имеет rewrite.calling_station_id функция, которая нормализует идентификаторы Mac до указанного выше формата, и вызывается в available-sites/default сразу после preprocess. Правильно отформатированные идентификаторы mac-id отображаются в журнале при запуске freeradius -X. Однако запросы отклоняются. Даже если чек заменить на Calling-Station-Id =* "a1b2c3d4e5f6", который должен проходить всякий раз, когда атрибут просто существует, запросы отклоняются. Однако если его заменить на Calling-Station-Id !* "a1b2c3d4e5f6", который должен пройти, только если атрибут не присутствует в заявке, заявки принимаются.

Напротив, если я использую radclient, ожидаемое поведение наблюдается. Ссылки на файлы конфигурации и соответствующие журналы приведены ниже. Целый /etc/freeradius папка связана, а также содержит журналы для следующих четырех случаев. Обратите внимание, что номер 2 - единственное неожиданное поведение:

  1. nexus-without-mac-success: The users файл не прошел проверку Mac и аутентификация прошла успешно
  2. nexus-with-mac-fail: The users файл имел правильный MAC-адрес, и аутентификация не удалась
  3. radclient-with-mac-expected-behaviour-fail-with-wrong: radclient запускается с неправильным MAC-адресом и отклоняется: echo "User-Name=testuser,User-Password=test,Calling-Station-Id=8c:3a:e3:19:70:0e" | radclient localhost auth testing123
  4. radclient-with-mac-expected-behaviour-success-with-correct: radclient запускается с правильным MAC-адресом и принимается: echo "User-Name=testuser,User-Password=test,Calling-Station-Id=8c:3a:e3:19:70:0f" | radclient localhost auth testing123

Разве нельзя использовать Calling-Station-Id сюда? Вопреки http://wiki.freeradius.org/guide/Mac-Auth, Я хочу, чтобы Mac-Id был ограничен для каждого пользователя, поэтому, если у вас есть альтернативный способ сделать это, это также будет приветствоваться.

http://portmasters.com/tech/docs/radius/userinfo.html#1004825 кажется, что это правильный способ сделать это, хотя он написан в 1999 году.

http://www.cmi.ac.in/~ronno/freeradius-test содержит следующее:

Вы не передали атрибуты во внешнем запросе внутреннему серверу.

Устанавливать copy_tunnel_request = yes в eap{peap{}} (в eap.conf или mods-available / eap).

https://github.com/FreeRADIUS/freeradius-server/blob/master/raddb/mods-available/eap#L594

Вызов файлов на внутреннем сервере не имеет доступа к атрибуту Calling-Station-ID во внешнем запросе, не соответствует никаким записям и поэтому не устанавливает атрибут управления NT-Password.