Добрый день!
Начну с конца. Потребоволся дополнительный атрибут для хранения значения, предназначенного для серверных нужд. Очень хочется иметь возможность менять его значение через файл users.
А теперь начало. Есть LDAP, есть умные свичи (Cisco 2960). Задача — аутентифицировать пользователей по 802.1x или по MAC адресам (это нужно для принтеров и особых случаев) и раскидать по разным VLAN`ам пользователей из разных групп. Для удобства пользователей настроен Login Mapping, тоесть, пользователю вместо логина можно ввести только уникальную его часть. Чтобы это реализовать, я добавил в файл dictionary запись:
ATTRIBUTE Mapped-User-Name 3001 string
Во время аутентификации, с помощью модуля attr_rewrite, помещаю в атрибут Mapped-User-Name истинный логин пользователя, который узнаю с помощью внешнего скрипта:
attr_rewrite login_mapping { attribute = Mapped-User-Name searchin = packet searchfor = ".+" replacewith = "%{exec:/usr/share/trueoffice/network/login_mapping.php %{User-Name}}" append = no new_attribute = yes max_matches = 1 }
Затем все общение с сервером LDAP происходит на основе этого атрибута.
Эта схема чудесно работала, пока не встала необходимость аутентифицировать хосты по MAC. Список авторизованных MAC`ов я решил хранить в users-подобном файле authorized_macs (руководствовался мануалом с сайта freeradius), но разрешить доступ в сеть конкретному MAC`у мне мало. Необходимо привязать хосты к пользователям в LDAP`е для того, чтобы узнать, в какой он группе и выдать соответствующий VLAN.
Я мечтаю сделать привязку в файле authorized_macs примерно таким способом:
00-23-5A-CC-FB-5D Auth-Type := Accept, Mapped-User-Name := "Andrey.Polovov-2010.ict" Fall-Through = no DEFAULT Auth-Type := Reject
Так вот, мне не удается никаким образом поменять в users-подобном файле (да и в смом users тоже) Собственный атрибут Mapped-User-Name, удается это сделать только через модуль attr_rewrite.
Во время дебага, когда дело доходит до модуля files, вывод информации очень скуден. Говорит, что нашел совпадение в файле и всё.
Версия radiusd: FreeRADIUS Version 2.0.5, for host i686-pc-linux-gnu.
ОС: Gento 32-битная.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1