Ролевая модель позволяет отнести каждого пользователя (в данном случае, не имеющему локальной учётной записи) к одной из типовых ролей, определённых локально на устройстве. Для каждой роли определёны область видимости конфигурационного дерева и права read-write/read-only. Это существенно менее громоздкий способ, нежели персонально описывать полномочия каждого пользователя на устройстве (для локальных пользователей) или покомандно на сервере TACACS+ (для не определённых локально).
В галактике Cisco, как известно, все чатлане дифференцируются по уровню приоритета, от 0 до 15. Прямого аналога ему в ОС Linux, в общем случае, нет. В качестве эквивалента в NSG Linux 2.1 определены роли с фиксированными именами lvl-0 … lvl-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 | Отдел документации |