В настоящее время у нас есть сервер Freeradius, используемый для аутентификации наших пользователей Wi-Fi на нашем сервере Active Directory. Связь между Freeradius и Active Directory осуществляется Winbind.
Чтобы пользователь мог получить авторизацию, он должен принадлежать к группе в Activer Directory. Это делается путем добавления аргумента к команде ntlm_auth.
Сейчас мы добавляем 802.1X в наши кабельные сети и хотели бы повторно использовать существующий сервер Radius для аутентификации в той же Active Directory.
Все будет так же, за исключением того, что авторизация будет зависеть от того, принадлежит ли пользователь к другой сети, отличной от сети Wi-Fi.
Я прочитал много вещей о freeradius в документации и убедился, что можно использовать условные обозначения и переменные. Поэтому мой план состоял в том, чтобы добавить в команду ntlm_auth переменную, которая будет содержать SID группы (как предложено на Списки рассылки Freeradius). SID группы будет зависеть от IP-адреса сетевого устройства, который должен содержаться в «NAS-IP-Address».
Это должен быть случай написания простого условного оператора и установки переменной. Тем не менее, мне не удалось это сделать, так как Freeradius не запускается каждый раз, когда я пытаюсь добавить условие в файлы конфигурации.
Итак, мои вопросы:
Как установить переменную в зависимости от IP-адреса NAS?
В каких файлах можно использовать такой синтаксис?
Unlang (условный язык, на который вы ссылаетесь) можно использовать только в подразделах виртуальных серверов (server {}
блоки).
Расширения вроде %{foo}
иногда может использоваться в таких элементах конфигурации модуля, как ntlm_auth
, но это зависит от элемента конфигурации. Примеры в файлах конфигурации модуля обычно подсказывают, можно ли использовать расширения.
Файлы конфигурации виртуального сервера можно найти в /etc/raddb/sites-available
или /etc/freeradius/sites-available
.
Самый простой способ добиться того, о чем вы просите, - это добавить дополнительную пару конфигураций в различные разделы клиентов вместо того, чтобы основывать что-то на NAS-IP-Address.
Например:
client my_client {
ipaddr = 127.0.0.1
secret = testing123
ad_group = <group>
}
Тогда вы можете использовать расширение %{client:ad_group}
чтобы передать значение ad_group в ntlm_auth
аргументы.