
Я пытаюсь ограничить каждого пользователя небольшим набором 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 отображаются в журнале при запуске freeradius -X
. Однако запросы отклоняются. Даже если проверка заменена на Calling-Station-Id =* "a1b2c3d4e5f6"
, которая должна проходить, когда атрибут просто существует, запросы отклоняются. Однако если она заменена на Calling-Station-Id !* "a1b2c3d4e5f6"
, которая должна проходить, только если атрибутнетприсутствуют в запросе, запросы принимаются.
Напротив, если я использую radclient
, то наблюдается ожидаемое поведение. Файлы конфигурации и соответствующие журналы приведены ниже. Вся /etc/freeradius
папка приведена в ссылке, а также содержит журналы для следующих четырех случаев. Обратите внимание, что номер 2 — единственное неожиданное поведение:
nexus-without-mac-success
:users
Файл не прошел проверку MAC, аутентификация прошла успешноnexus-with-mac-fail
:users
Файл имел правильный MAC-адрес, но аутентификация не пройдена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
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содержит следующее:
freeradius
- содержание/etc/freeradius
logs
- четыре журнала, описанные вышеwg102.cfg
- конфигурация точки доступаsnapshot.tar.gz
- tarball, содержащий все вышеперечисленное
решение1
Вы не передали атрибуты внешнего запроса внутреннему серверу.
Устанавливается (в copy_tunnel_request = yes
eap.conf eap{peap{}}
или mods-available/eap).
https://github.com/FreeRADIUS/freeradius-server/blob/master/raddb/mods-available/eap#L594
Вызов файлов на внутреннем сервере не имеет доступа к атрибуту Calling-Station-ID во внешнем запросе, не соответствует ни одной записи и, следовательно, не устанавливает атрибут управления NT-Password.