Я пытаюсь ограничить каждого пользователя небольшим набором 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 - единственное неожиданное поведение:
nexus-without-mac-success
: The users
файл не прошел проверку Mac и аутентификация прошла успешно nexus-with-mac-fail
: The 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, содержащий все вышеперечисленноеВы не передали атрибуты во внешнем запросе внутреннему серверу.
Устанавливать 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.