CISCO RBAC часть 1

CISCO RBAC (Role-Based Access Control) —  изучаем разграничение прав доступа к устройству CISCO с помощью Уровня привилегий.

Постановка задачи

Специалисты IT-отдела в больших организациях выполняют самые разнообразные операции на оборудовании. Уровень доступа к сетевому оборудованию должен предоставляться в зависимости от выполняемых обязанностей. Берём следующее:

  • Специалист хелп-деска на телефоне и ему нужно иногда просмотреть вывод команд show, конфигурацию сетевого устройства, чтобы выяснить какие-то основные параметры, почитать дискрипшены, если нет данных в базе знаний IT-отдела;
  • Специалист 1 линии поддержки обслуживает рабочие станции и ему нужно переносить порты коммутатора из одной VLAN в другой с сохранением конфигурации коммутатора;
  • Администратор, соответственно ему уже нужен полный доступ.

CISCO IOS предлагает 2 способа разграничения доступа к сетевому устройству:

  • Уровень привилегий;
  • Интерфейс командной строки (CLI) на основе ролей (Role-Based CLI Access)

Все примеры выполнены в виртуальной среде EVE-NG:

S1# show ver
Cisco IOS Software, vios_l2 Software (vios_l2-ADVENTERPRISEK9-M), Version 15.2(C                                                                                                                                   ML_NIGHTLY_20150414)FLO_DSGS7

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

Наиболее распространенный и простой метод настройки прав.

Всего 16 уровней привилегий, с 0 по 15. Логика такая: чем выше уровень, тем больше привилегий. Переходить с одного уровня на другой можно с помощью команды enable номер_уровня:

CISCO RBAC

  • Команда enable без указания уровня, это вход на уровень 15;
  • Уровень 0 — имеет только 5 команд: disable, enable, exit, help, logout. Не используется.

Есть 2 уже настроенных уровня привилегий:

  • Пользовательский режим — уровень 1, минимальный уровень привилегий, по умолчанию пользователь входит именно на этот уровень, нельзя просматривать или изменять конфигурацию.
  • Привилегированный режим — уровень 15, максимальный уровень привилегий, можно полностью просматривать и полностью изменять конфигурацию;
  • Уровни 2-14 — не имеют предварительной настройки и как раз могут быть использованы для внедрения различных прав.

Многим организациям преднастроенных уровней 1 и 15 вполне достаточно. Например, на RADUIS-сервере создаются 2 группы пользователей и 2 политики, первая политика для первой группы с уровнем доступа 1, вторая политика для второй группы с уровнем доступа 15. Первая группа — посмотреть настройки, попинговать что-то с устройства или трассировку запустить (ping и traceroute доступны для уровня 1), вторая — администраторы.


Пример 1

Посмотрим на уровень 1:

S1> show privilege

Current privilege level is 1

S1> ?
...
ping Send echo messages
...
traceroute Trace route to destination
...
S1> show ? 

aaa              Show AAA values
acircuit         Access circuit info
adjacency        Adjacent nodes
alps             Alps information
ancp             ANCP information
aps              APS information
... - команды show доступны, но если промотать вниз команды running-config среди них нет

S1> reload

Translating "reload"...domain server (255.255.255.255) - перезагрузить устройство нельзя

S1> show interf g0/0

GigabitEthernet0/0 is up, line protocol is up (connected)
Hardware is iGbE, address is 5000.0001.0000 (bia 5000.0001.0000)
MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
... - возможно просмотреть различную информацию

Важно отметить что команды, доступные на каком-то уровне, будут доступны для всех уровней выше. Второй момент: если команда была настроена на каком-то уровне, то её нельзя настроить на уровнях ниже.

Пример 2

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

S1# enable 
S1# configure terminal
S1(config)# enable secret Cisco15

Вот и всё, на этом настройка для администратора завершена 🙂

Настройка нового уровня привилегий

Настройка нового уровня производится из под привилегий уровня 15. Просмотр текущего уровня:

S1# show privilege

Сначала задаётся пароль для нового уровня привилегий:

S1(config)# enable secret level номер_уровня пароль

Затем идёт непосредственное добавление команд для нового уровня с помощью команды privilege:

privilege mode {level номер_уровня | reset } command
----------------------------------------------------
mode - режим конфигурирования для которого предназначается команда (exec, configure, interface, line), режимов очень много, дальше будет понятнее

Далее тут:

level номер_уровня command - привязывание команды к уровню  
reset command - отвязывание команды

После того как команды добавлены, нужно нужно зайти с уровня 15 на настраиваемый уровень и проверить их работу.

Пример 3

Настроим права для специалиста хелп-деска с уровнем 2 для просмотра конфигурации. Напоминаю, что для уровня 2 уже доступны все команды уровня 1 (полезные: пинг, трассировка и просмотр различных настроек).

Задание пароля уровня 2

Сначала нужно настроить пароль для нового уровня. Без пароля будет ругаться, точнее с более высокого уровня зайти можно, с более низкого нет, вот так это выглядит:

S1# show privilege

Current privilege level is 15

S1# enable 2 
S1# - всё ok, перешли с 15 уровня на 2
S1# enable 1
S1> enable 2

% No password set - с уровня 1 зайти на "беспарольный" уровень 2 уже нельзя

S1> enable 0
S1> enable 1

% No password set - то же самое

S1> enable
- ввод пароля уровня 15
S1# config t
S1(config)# enable secret level 2 Сisco2
Проверка уровня 2

Пока для уровня 2 мы ничего не настраивали (кроме пароля),  зайдём на этот уровень и посмотрим:

S1# enable 2
S1# clear ?

aaa             Clear AAA values
ancp            Clear ANCP neighbor TCP connections
bsc             Clear counters in <show bsc> command
bstun           Clear counters displayed in show bstun
call            Call
..

А вот это уже плохо, по умолчанию доступна очистка процессов. Перенесём команду на 15 уровень:

S1# enable
- ввод пароля уровня 15
S1# config t
S1(config)# privilege exec level 15 clear
S1(config)# end
S1# enable 2
- ввод пароля уровня 2
S1# clear ?

% Unrecognized command
Просмотр конфигурации

Ожидаемо получаем для 2 уровня привилегий:

S1# show running-config  
          ^ 
% Invalid input detected at '^' marker.

Конфигурация не выводится. Хорошо, разрешаем show running-config в явном виде и ещё раз проверим:

S1# enable
S1# config t
S1(config)# privilege exec level 2 show running-config
S1(config)# end
S1# enable 2
S1# show running-config

Building configuration...

Current configuration : 115 bytes
!
! Last configuration change at 15:56:39 UTC Thu Jan 23 2020
!
boot-start-marker
boot-end-marker
!
!
!
!
!
!
end

Выводится пустая конфигурация. Пустая, так как в режиме конфигурирования нет доступа ни к 1 элементу. Команду show running-config для 2 уровня отвяжем, раз она не работает как надо. Тут надо отметить что если отвязывать команду через no, то она появится на 15 уровне:

S1# enable 
S1# config t
S1(config)# no privilege exec level 2 show running-config
S1(config)# end
S1# show run
...
privilege exec level 15 show running-config
...

Поэтому правильно отвязывать только через reset:

S1(config)# privilege exec reset show running-config
Разрешение команды more

Команда more даёт возможность просматривать содержимое файлов прямо из консоли. Поэтому чтобы дать права на просмотр конфигурации для уровня 2:

S1# enable
S1# config t
S1(config)# privilege exec level 2 more system:running-config
S1(config)# end 
S1# enable 2 
S1# more system:running-config

!
! Last configuration change at 15:58:56 UTC Thu Jan 23 2020
!
version 15.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
service compress-config
!
hostname S1
...
--More-- - выводится полная конфигурация

Окончательно для уровня 2 будет:

...
privilege exec level 2 more
privilege exec level 15 clear
...

Пример 4

Настроим для для специалиста первой линии сохранение конфигурации и перенос портов между VLANs для уровня 3:

S1# config t
S1(config)# enable secret level 3 Cisco3
S1(config)# privilege exec level 3 write memory
S1(config)# privilege exec level 3 configure terminal
S1(config)# privilege configure level 3 interface
S1(config)# privilege interface level 3 switchport access vlan
S1(config)# privilege exec level 3 show running-config
S1(config)# end

При такой настройке специалист не сможет ничего особенно испортить, например, если интерфейс транковый, то команда switchport access vlan на нём просто не применится. Проверяем:

S1# enable 3
S1# show privilege

Current privilege level is 3

S1# config t
S1(config)# ?

Configure commands:
 beep Configure BEEP (Blocks Extensible Exchange Protocol)
 cts       Cisco Trusted Security commands
 default   Set a command to its defaults
 end       Exit from configure mode
 exit      Exit from configure mode
 help      Description of the interactive help system
 interface Select an interface to configure
 no        Negate a command or set its defaults
 sasl      Configure SASL

S1(config)# interface g0/1
S1(config-if)# ?

Interface configuration commands:
 default    Set a command to its defaults
 exit       Exit from interface configuration mode
 help       Description of the interactive help system
 no         Negate a command or set its defaults
 switchport Set switching mode characteristics

S1(config-if)# switchport ?

access  Set access mode characteristics of the interface
  <cr>

S1(config-if)# switchport access vlan 3

% Access VLAN does not exist. Creating vlan 3

S1(config-if)# end
S1# write memory

Building configuration...
[OK]

S1# show vlan br
...
3    VLAN0003     active    Gi0/1
..
S1# show running-config

Building configuration...

Current configuration : 1747 bytes
!
!
interface GigabitEthernet0/0
!
interface GigabitEthernet0/1
switchport access vlan 3
..
 --More--

В режиме конфигурирования для уровня 3 определен доступ к интерфейсам, поэтому вывод конфигурации уже не пустой (но и не полный). Если нужен просмотр полной конфигурации, то опять же команда more system:running-config доступна.

Конечная конфигурация

Что же сохранилось в конфигурации после манипуляций с уровнями?

..
privilege interface level 3 switchport access vlan
privilege interface level 3 switchport access
privilege interface level 3 switchport
privilege configure level 3 interface
privilege exec level 2 more
privilege exec level 3 write memory
privilege exec level 3 write
privilege exec level 3 configure terminal
privilege exec level 3 configure
privilege exec level 3 show running-config
privilege exec level 3 show
privilege exec level 15 clear
..

Ассоциация с пользователем

Можно связать уровень привилегий и учетную запись пользователя на устройстве:

S1(config)# username Helpdesk privilege номер_уровня secret пароль

Тогда при входе на устройство пользователь автоматически получает связанный с ним уровень привилегий. Для создания такого пользователя необходимы привилегии уровня 15.

Недостатки

  • Не обеспечивается управление доступом к определенным интерфейсам, портам, логическим интерфейсам и слотам на устройстве (или ко всем, или ни к какому);
  • Команды, доступные на нижних уровнях привилегий, всегда выполняются на более высоких уровнях;
  • Команды, для которых специально задан более высокий уровень привилегий, недоступны для пользователей с более низкими привилегиями.
Вывод 

Уровень привилегий удобно использовать в основном когда нужно добавить буквально несколько команд. Если же команд нужно добавить много (но не все) для некоторого уровня, то очень громоздкая настройка и возможно не получится реализовать так, как ставится в задаче. 

Вот статья с сайта CISCO с некоторым описанием команды privilege.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *