Сетевые технологии
Централизованная аутентификация и авторизация
Уровни привилегий (ролевая модель) — пример конфигурации сервера

Ролевая модель позволяет отнести каждого пользователя (в данном случае, не имеющему локальной учётной записи) к одной из типовых ролей, определённых локально на устройстве. Для каждой роли определёны область видимости конфигурационного дерева и права read-write/read-only. Это существенно менее громоздкий способ, нежели персонально описывать полномочия каждого пользователя на устройстве (для локальных пользователей) или покомандно на сервере TACACS+ (для не определённых локально).

В галактике Cisco, как известно, все чатлане дифференцируются по уровню приоритета, от 0 до 15. Прямого аналога ему в ОС Linux, в общем случае, нет. В качестве эквивалента в NSG Linux 2.1 определены роли с фиксированными именами lvl-0lvl-14. Наивысший приоритет 15 является синонимом малиновых штанов роли admin.

ПРИМЕЧАНИЕ. По умолчанию, данные роли, как и все вновь созданные роли — пустые, т.е. не содержат никакого дерева конфигурации и имеют права только read-only. Каждая роль, которая используется фактически, должна быть настроена согласно требованиям конкретного сетевого решения.

В конфигурации сервера для нелокального пользователя должен быть указан сервис shell и уровень приоритета (для однозначных чисел — без ведущего нуля) или название роли (за исключением роли user, предполагающей индивидуальную настройку пользователя). Если указано то и другое, то уровень приоритета имеет приоритет.

Пример конфигурации:

services
: cisco-like-ssh
: : enable          = true
: http
: : aaa-policy      = "http-server"
system
: aaa
: : cisco-like-ssh
: : : 1
: : : : type        = "tacacs"
: : : : port        = 4949
: : : : secret      = nsg
: : : : server      = "X.X.X.X"
: : : : _keep       = true
: : http-server
: : : 1
: : : : type        = "tacacs"
: : : : port        = 4949
: : : : secret      = nsg
: : : : server      = "X.X.X.X"
: : : : _keep       = true

При этом по умолчанию per-command-auth=false.

Пример конфигурации сервера с комментариями:

#!/usr/local/sbin/tac_plus
id = spawnd {
    listen = { port = 4949 }
}
id = tac_plus {
    host = any {
        debug = ALL -HEX
        key = "nsg" address = 0.0.0.0/0
    }

# Заходит с ролью admin
        user = usra {
        debug = ALL
        pap = clear psw
                service = shell {
                        set priv-lvl = 15
                }
        }

# Заходит с ролью lvl-7
        user = usrb {
        debug = ALL
        pap = clear psw
                service = shell {
                        set priv-lvl = 7
                }
        }

# Ошибка: Bad AV-pair 'priv-lvl=16'
        user = usrc {
        debug = ALL
        pap = clear psw
                service = shell {
                        set priv-lvl = 16
                }
        }

# Ошибка: User nsg is defined locally, can't accept role/priv-lvl from remote server
        user = nsg {
        debug = ALL
        pap = clear psw
                service = shell {
                        set priv-lvl = 7
                }
        }

# Заходит с ролью admin
        user = usrd {
        debug = ALL
        pap = clear psw
                service = shell {
                        set nsg-role = admin
                }
        }

# Заходит с ролью lvl-7
        user = usre {
        debug = ALL
        pap = clear psw
                service = shell {
                        set nsg-role = lvl-7
                }
        }

# Ошибка: Role 'lvl-07' is not configured
        user = usrf {
        debug = ALL
        pap = clear psw
                service = shell {
                        set nsg-role = lvl-07
                }
        }

# Ошибка: Role 'user' is not configured
# Хотя такая роль есть в списке, но не может быть применена к нелокальному
# пользователю
        user = usrg {
        debug = ALL
        pap = clear psw
                service = shell {
                        set nsg-role = user
                }
        }

# Заходит с ролью admin, так как priv-lvl приоритетнее nsg-role
        user = usrh {
        debug = ALL
        pap = clear psw
                service = shell {
                        set nsg-role = lvl-7
                        set priv-lvl = 15
                }
        }
}

© Network Systems Group 2015–2026 Отдел документации