Перейти к содержанию

Получение привилегированного доступа через RADIUS

Настройка обеспечивает получение пользователем заданного уровня привилегий (Privilege Level) на коммутаторах серии CIT L3200 непосредственно при аутентификации через сервер RADIUS, без необходимости вводить дополнительный пароль команды enable. Функция применяется в сценариях централизованного управления правами доступа, когда уровень привилегий каждого оператора определяется политиками RADIUS-сервера.

Типовые сценарии применения:

  • Предоставление операторам NOC уровня привилегий 8 (operators) для мониторинга без права изменения конфигурации.
  • Предоставление администраторам уровня привилегий 15 (admin) для полного управления коммутатором через SSH.
  • Разграничение доступа для нескольких групп инженеров в рамках единой инфраструктуры AAA.
  • Аварийный вход с уровнем 15 при недоступности RADIUS-сервера (fallback на локальную аутентификацию).
  • Аудит и учет сессий с фиксацией уровня привилегий, полученного каждым пользователем.

Необходимые условия и предварительные требования

Для выполнения настройки необходимо:

  • Режим доступа: Privileged EXEC (уровень 15) или режим Global config – для внесения изменений в конфигурацию AAA и line.
  • Минимальная версия ПО: 5.3.0 и выше.
  • Доступ к серверу FreeRADIUS версии 3.x с правами на редактирование файла словаря.
  • Сетевая связность между коммутатором и RADIUS-сервером (UDP-порты 1812 и 1813).

Текущие ограничения:

  • Атрибут ITLook-Exec-Privilege (VSA Vendor ID 3087, subtype 16) является проприетарным VSA (Vendor-Specific Attribute) платформы CIT L3200 и не совместим со стандартным словарем FreeRADIUS. Стандартный словарь FreeRADIUS (Vendor ID 27975, subtype 1) не поддерживается – при его использовании коммутатор не распознает атрибут. Атрибуты Cisco (Cisco-AVPair = "shell:priv-lvl=15") также не поддерживаются.
  • Настройка выполняется одновременно на коммутаторе (CIT L3200) и на сервере FreeRADIUS. Обе части конфигурации обязательны.

Note

Примечание: команды show running-config и show who не изменяют конфигурацию устройства и могут выполняться в режиме Privileged EXEC без риска для работающей сети.

Основная информация о применяемых технологиях

AAA (Authentication, Authorization, Accounting)

AAA – фреймворк централизованного контроля доступа. На коммутаторах CIT L3200 AAA управляет:

  • Authentication – проверкой подлинности пользователя при входе (login) и при переходе в привилегированный режим (enable).
  • Authorization – определением разрешенных действий после успешной аутентификации (в том числе уровня привилегий).
  • Accounting – учетом сессий и выполненных команд.

RADIUS и VSA (Vendor-Specific Attribute)

RADIUS – протокол сетевой аутентификации, работающий по UDP. Для передачи платформо-специфичных параметров, не входящих в стандарт RFC 2865, используется механизм VSA. Каждый производитель регистрирует собственный Vendor ID в реестре IANA. Коммутаторы CIT L3200 ожидают уровень привилегий в атрибуте VSA с параметрами:

  • Vendor ID: 3087 (ITLook)
  • Subtype: 16
  • Тип данных: integer

Именно эти параметры необходимо задать в словаре FreeRADIUS, поскольку стандартный словарь (Vendor ID 27975, subtype 1) платформой не принимается.

Назначение применяемых команд и конфигурации

Команда Режим Назначение
radius-server <name> ip-address <ip> key <key> config-aaa Регистрирует RADIUS-сервер с указанием IP-адреса и общего секретного ключа
server-group <name> radius-server <server> config-aaa Создает группу серверов AAA и связывает с ней RADIUS-сервер
aaa authentication login method <name> server-group <grp> local config-aaa Определяет метод аутентификации при входе (login): сначала RADIUS, затем локально
aaa authentication enable method <name> server-group <grp> local config-aaa Определяет метод аутентификации для перехода в режим enable
aaa authorization method <name> server-group <grp> local config-aaa Определяет метод авторизации (получение уровня привилегий от RADIUS)
aaa accounting login method <name> server-group <grp> config-aaa Включает учет (accounting) сессий входа
login authentication aaa method <name> auth-type pap config-line Привязывает метод аутентификации к линии (console / vty), тип PAP
enable authentication aaa method <name> config-line Привязывает метод аутентификации enable к линии
login authorization aaa method <name> config-line Привязывает метод авторизации к линии vty
login accounting aaa method <name> config-line Привязывает метод учета к линии vty
show who Privileged EXEC Отображает активные сессии и уровни привилегий подключенных пользователей
show running-config Privileged EXEC Отображает текущую конфигурацию устройства
show logbuffer Privileged EXEC Отображает буфер системных сообщений (syslog)

Конфигурация выполняется в следующем порядке: сначала регистрируются RADIUS-серверы и создаются группы и методы AAA в узле config-aaa, затем методы привязываются к конкретным линиям доступа (line console, line vty). Параллельно на RADIUS-сервере добавляется словарь VSA с корректными параметрами Vendor ID и subtype.

Пример конфигурирования

Схема соединений

1
2
3
  [Клиентская машина]          [Коммутатор CIT L3200]        [RADIUS-сервер]
  192.168.1.3 (SSH)  --------> 192.168.1.20 (vlan1)  -----> 192.168.1.3:1812/1813
                               SW1                           FreeRADIUS v3.2.x

Коммутатор SW1 является NAS (Network Access Server). Клиентская машина подключается по SSH к управляющему IP-адресу коммутатора. RADIUS-сервер развернут на той же машине, с которой выполняется SSH-подключение (192.168.1.3).

Начальное состояние

На коммутаторе SW1 заданы: hostname, IP-адрес управления 192.168.1.20/16 на interface vlan 1, локальный пользователь root группы administrators. AAA не настроена. На RADIUS-сервере запущен FreeRADIUS 3.2.x в Docker, файл словаря /usr/share/freeradius/dictionary.centec присутствует в стандартной поставке, файл пользователей расположен по пути /etc/freeradius/mods-config/files/authorize (либо users в зависимости от конфигурации).

Пошаговые инструкции

Часть 1. Настройка RADIUS-сервера (FreeRADIUS)

Шаг 1: Редактирование словаря VSA для CIT L3200

Открыть файл словаря на RADIUS-сервере:

nano /usr/share/freeradius/dictionary.centec

Заменить содержимое блока Centec на следующее:

1
2
3
4
5
6
7
8
9
VENDOR          Centec                          3087

BEGIN-VENDOR    Centec
#
# CIT L3200 Privilege Attributes
#
ATTRIBUTE       Centec-Exec-Privilege           16      integer

END-VENDOR      Centec

Ключевые изменения по сравнению со стандартным словарем FreeRADIUS:

  • VENDOR ... 27975 → 3087 (Vendor ID изменен на ITLook – именно этот ID ожидает коммутатор CIT L3200).
  • Номер атрибута 1 → 16 (subtype, по которому коммутатор идентифицирует атрибут привилегий).

Note

Примечание: путь к словарю может отличаться в зависимости от версии и способа развертывания FreeRADIUS. В Docker-контейнере словарь, как правило, монтируется из хостовой системы или расположен внутри контейнера по пути /usr/share/freeradius/. Файл необходимо скопировать в правильное место до перезапуска сервиса.

Шаг 2: Добавление пользователя с атрибутом привилегий

Открыть файл пользователей RADIUS (путь зависит от конфигурации, обычно /etc/freeradius/mods-config/files/authorize или users):

nano /etc/freeradius/mods-config/files/authorize

Добавить запись пользователя:

1
2
3
user1 Cleartext-Password := "password1"
    Reply-Message = "Hello, %{User-Name}",
    ITLook-Exec-Privilege = 15

Атрибут ITLook-Exec-Privilege = 15 передается в ответе RADIUS как VSA (Vendor ID 3087, subtype 16) со значением 15. Коммутатор интерпретирует это значение как уровень привилегий, присваиваемый пользователю при входе. Значение 15 соответствует полному административному доступу; допускается указание любого уровня от 1 до 15.

Note

Примечание: название атрибута в файле пользователей (ITLook-Exec-Privilege) является псевдонимом (alias), определенным в словаре. Фактически в пакете RADIUS передается VSA с Vendor ID 3087 и subtype 16. Если псевдоним не определен в словаре, допускается использование формата Centec-Exec-Privilege = 15 при условии корректно настроенного словаря.

Шаг 3: Перезапуск FreeRADIUS

1
2
3
4
5
# При использовании Docker Compose:
docker compose restart

# При использовании systemd:
systemctl restart freeradius

Убедиться в отсутствии ошибок при запуске – в выводе должна присутствовать строка:

freeradius-server | Ready to process requests   <--- сервер готов к работе

Часть 2. Настройка коммутатора CIT L3200 (SW1)

Шаг 4: Переход в режим глобальной конфигурации

1
2
3
SW1> enable
SW1# configure terminal
SW1(config)#

Выполняется вход в режим Privileged EXEC, затем переход в режим глобальной конфигурации. Все последующие команды вводятся из режима config или его подрежимов.

Шаг 5: Переход в узел конфигурации AAA и регистрация RADIUS-сервера

1
2
3
SW1(config)# aaa
SW1(config-aaa)# radius-server RADIUS1 ip-address 10.99.0.200 key StrongSecret
SW1(config-aaa)# server-group RADIUS_GROUP radius-server RADIUS1

Команда radius-server регистрирует сервер с именем RADIUS1, IP-адресом и общим секретным ключом (key). Команда server-group объединяет зарегистрированный сервер в группу RADIUS_GROUP, которая впоследствии используется в методах AAA. IP-адрес и ключ необходимо заменить на актуальные значения для конкретной инсталляции.

Шаг 6: Создание методов AAA

1
2
3
4
SW1(config-aaa)# aaa authentication login method RADIUS_LOGIN server-group RADIUS_GROUP local
SW1(config-aaa)# aaa authentication enable method RADIUS_ENABLE server-group RADIUS_GROUP local
SW1(config-aaa)# aaa authorization  method RADIUS_AUTH server-group RADIUS_GROUP local
SW1(config-aaa)# aaa accounting login method RADIUS_ACCT server-group RADIUS_GROUP

Создаются четыре метода AAA:

  • RADIUS_LOGIN – аутентификация при входе через PAP, с fallback на локальную базу.
  • RADIUS_ENABLE – аутентификация при переходе в привилегированный режим.
  • RADIUS_AUTH – авторизация (получение уровня привилегий от RADIUS через VSA).
  • RADIUS_ACCT – учет сессий.

Note

Примечание: ключевое слово local в конце строк authentication и authorization обеспечивает резервную аутентификацию по локальной базе при недоступности RADIUS-сервера. Для метода accounting резервный механизм не предусмотрен.

Шаг 7: Выход из узла AAA

SW1(config-aaa)# exit
SW1(config)#

Шаг 8: Привязка методов AAA к линии VTY (SSH/Telnet)

1
2
3
4
5
6
SW1(config)# line vty 1 32
SW1(config-line)# login authentication aaa method RADIUS_LOGIN auth-type pap
SW1(config-line)# enable authentication aaa method RADIUS_ENABLE
SW1(config-line)# login authorization aaa method RADIUS_AUTH
SW1(config-line)# login accounting aaa method RADIUS_ACCT
SW1(config-line)# exit

Команды привязывают созданные методы AAA к диапазону виртуальных терминальных линий 1–32. Параметр auth-type pap указывает на использование протокола PAP для передачи учетных данных на RADIUS-сервер. Метод login authorization обеспечивает получение уровня привилегий (VSA) из ответа RADIUS после успешной аутентификации.

Шаг 9: (Опционально) Привязка методов AAA к консольной линии

Если требуется RADIUS-аутентификация на консоли:

1
2
3
4
SW1(config)# line console 1
SW1(config-line)# login authentication aaa method RADIUS_LOGIN auth-type pap
SW1(config-line)# enable authentication aaa method RADIUS_ENABLE
SW1(config-line)# exit

Риск потери доступа

Внимание: при привязке RADIUS к консольной линии в случае недоступности RADIUS-сервера вход будет возможен только через fallback (local). Рекомендуется проверить наличие локального пользователя с уровнем 15 до применения этой настройки.

Шаг 10: Сохранение конфигурации

SW1(config)# end
SW1# write

Полный вывод выполненных конфигураций

Устройство SW1 (коммутатор CIT L3200):

SW1# show running-config
!
aaa
 radius-server RADIUS1 ip-address 10.99.0.200 key $9$422r$ccdaeed1a126c658f045da932cc49a1e
 server-group RADIUS_GROUP radius-server RADIUS1
 aaa accounting login method RADIUS_ACCT server-group RADIUS_GROUP
 aaa authorization  method RADIUS_AUTH server-group RADIUS_GROUP local
 aaa authentication  enable method RADIUS_ENABLE server-group RADIUS_GROUP local
 aaa authentication login method RADIUS_LOGIN server-group RADIUS_GROUP local
!
line console 1
 no monitor
 timeout 10 0
 login authentication aaa method RADIUS_LOGIN auth-type pap
 enable authentication aaa method RADIUS_ENABLE
line vty 1 32
 length 24
 no monitor
 timeout 10 0
 login authentication aaa method RADIUS_LOGIN auth-type pap
 login authorization aaa method RADIUS_AUTH
 login accounting aaa method RADIUS_ACCT
 enable authentication aaa method RADIUS_ENABLE
!
interface vlan 1
 ip address 192.168.1.20/16
!

Note

Примечание: поле key в выводе show running-config отображается в зашифрованном виде (алгоритм $9$). Вводить ключ при настройке следует в открытом виде – коммутатор выполнит его шифрование автоматически.

RADIUS-сервер – файл словаря /usr/share/freeradius/dictionary.centec:

1
2
3
4
5
6
7
8
9
VENDOR          Centec                          3087

BEGIN-VENDOR    Centec
#
# CIT L3200 Privilege Attributes
#
ATTRIBUTE       Centec-Exec-Privilege           16      integer

END-VENDOR      Centec

RADIUS-сервер – запись пользователя (файл authorize / users):

1
2
3
user1 Cleartext-Password := "password1"
    Reply-Message = "Hello, %{User-Name}",
    ITLook-Exec-Privilege = 15

Изучение состояния устройства

SW1 – проверка активных сессий командой show who

После подключения пользователя по SSH выполнить:

1
2
3
4
SW1# show who
    Line      Location                Idle      Pri           Orig-Pri      User
   1  con 1   Console                 00:03:55  admin(15)     admin(15)     root
*  2  SSH 1   192.168.1.3             00:00:00  admin(15)     admin(15)     user1   <--- уровень привилегий 15 присвоен при входе

Столбец Pri отображает текущий уровень привилегий пользователя. Столбец Orig-Pri – изначально назначенный уровень. Если оба поля показывают admin(15), коммутатор корректно получил VSA от RADIUS-сервера и присвоил уровень привилегий непосредственно при аутентификации, без ввода команды enable.

Пример при неправильно настроенном словаре (уровень не передается):

1
2
3
4
SW1> show who
    Line      Location                Idle      Pri           Orig-Pri      User
   1  con 1   Console                 00:04:08  admin(15)     admin(15)     root
*  2  SSH 1   192.168.1.3             00:00:00  guests(1)     guests(1)     user1   <--- уровень 1 (guests) – VSA не распознан

Уровень guests(1) означает, что коммутатор не получил или не распознал атрибут ITLook-Exec-Privilege. В этом случае необходимо проверить корректность словаря FreeRADIUS (Vendor ID и subtype).

SW1 – просмотр системного журнала командой show logbuffer

1
2
3
4
5
6
7
SW1# show logbuffer
2026/02/18 17:56:27.393 Switch %01-6-CLI-CMD(l):who.[Host=192.168.1.3 User=user1]
2026/02/18 17:55:37.123 Switch %01-4-CLI-LOGIN(l):[ssh]User user1 at host(192.168.1.3) successfully log on.   <--- успешный вход пользователя
2026/02/18 17:55:37.123 Switch %01-6-DEFAULT-INFO(l):User user1 at host(192.168.1.3) successfully log on.
2026/02/18 17:55:36.559 Switch %01-6-SSH-SSHSRV(l):lastlog_openseek: /var/log/lastlog is not a file or directory!
2026/02/18 17:55:31.254 Switch %01-6-SSH-SSHSRV(l):Child connection from 192.168.1.3 2 0:57654
2026/02/18 17:55:31.243 Switch %01-6-SSH-SSHSRV(l):Host(192.168.1.3 2 0) is allowed to log on

Сообщение CLI-LOGIN: successfully log on подтверждает успешную аутентификацию. Сообщение lastlog_openseek: /var/log/lastlog is not a file or directory является информационным и не влияет на работу функции – оно связано с отсутствием файла lastlog в среде выполнения и может быть проигнорировано.

Note

Примечание: в текущей версии ПО (5.3.0) в системном журнале не фиксируется, какой именно уровень привилегий был получен от RADIUS. Единственным способом проверки назначенного уровня является команда show who.

Рекомендации по выполнению команд и настроек

Порядок применения

Порядок применения. Конфигурацию словаря RADIUS-сервера необходимо выполнить и проверить до привязки методов AAA к линиям коммутатора. Если сначала применить настройки на коммутаторе, а словарь остается некорректным, пользователи будут получать уровень guests(1) вместо ожидаемого.

Проверка словаря

Проверка словаря. Перед перезапуском FreeRADIUS рекомендуется выполнить синтаксическую проверку:

freeradius -XC

Вывод не должен содержать ошибок, связанных с файлом dictionary.centec.

Резервная аутентификация

Резервная аутентификация. Ключевое слово local в методах authentication и authorization обеспечивает вход при недоступности RADIUS-сервера. Локальный пользователь с уровнем привилегий 15 должен существовать на коммутаторе до применения AAA-конфигурации. В противном случае при недоступности RADIUS-сервера вход станет невозможным.

Метод enable на консольной линии

Метод enable на консольной линии. При тестировании рекомендуется первоначально оставить консольную линию (line console 1) с локальной аутентификацией (login authentication local), привязав RADIUS только к VTY-линиям. Это позволит сохранить аварийный доступ на случай ошибки в настройках.

Совместимость словаря

Совместимость словаря. Стандартный словарь FreeRADIUS dictionary.centec (Vendor ID 27975, subtype 1), поставляемый с FreeRADIUS 3.x из коробки, не поддерживается коммутаторами CIT L3200. Атрибуты Cisco (Cisco-AVPair = "shell:priv-lvl=15") также не принимаются. Необходимо использовать исключительно описанный VSA (Vendor ID 3087, subtype 16).

Уровни привилегий

Уровни привилегий. На коммутаторах CIT L3200 доступны уровни 1–15. Уровень 15 соответствует группе administrators (полный доступ). Уровень 8 – группе operators. Уровень 1 – группе guests (только команды просмотра). Соответствие уровней группам определяется конфигурацией устройства и может быть изменено.

История возникновения команды

Версия ПО

Поддержка получения уровня привилегий через RADIUS VSA (Vendor ID 3087, subtype 16) реализована в программном обеспечении коммутаторов серии CIT L3200 начиная с версии 5.3.0.

Настройка выполнена на версии ПО 5.3.0.

Ссылка на внешнюю документацию

Стандарт

Применимые стандарты:
RFC 2865 (RADIUS)
RFC 2866 (RADIUS Accounting)
RFC 2868 (RADIUS Attributes for Tunnel Protocol Support).