nixp.ru v3.0

25 мая 2017,
четверг,
19:21:16 MSK

DevOps с компанией «Флант»
Аватар пользователя Андрей Половов
Андрей Половов написал 8 мая 2010 года в 15:07 (1994 просмотра) Ведет себя как благородный джентельмен; открыл 2 темы в форуме, оставил 7 комментариев на сайте.

Добрый день!

Начну с конца. Потребоволся дополнительный атрибут для хранения значения, предназначенного для серверных нужд. Очень хочется иметь возможность менять его значение через файл 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-битная.