Давно ничего не писал, а интересного было много, в частности разворачивание AAA для доступа на железки.
Задача была следующей:
Есть две группы, одни с полным доступом, вторые с очень ограниченным (доступ не на все железки и не ко всем командам) надо сделать возможность заходить по доменным учеткам. Железки роутеры Cisco 881 и свичи Catalyst 2960, сервер контроля доступа Cisco ACS 5.4, протокол TACACS+ (Radius не поддерживает в полной мере все приятные фишки, хоть и попроще).
В начале немного теории о том, что такое AAA и с чем его едят:
AAA это модель состоящая из трех основных, независимых компонентов - Authentication, Authorization, Accounting.
Аuthentication - аутентификация - сопоставление учетных данных предоставленных пользователем и данных существующих в системе, может быть в самом разном виде начиная от логина\пароля, до сертификатов и смарт-карт.
Authorization - авторизация - проверка наличия прав на выполнения того или иного действия у пользователя.
Accounting - учет всех выполненных действий.
TACACS+ являет собой дальнейшее развитие протокола TACACS компанией Cisco. Данный протокол позволяет устанавливать отдельно каждый из трех описанных выше сеансов, без необходимости устанавливать предыдущий. Работает по протоколу TCP, слушает 49 порт.
Детальное описание работы протокола в рамках каждого сеанса можно посмотреть либо на сайте Cisco.com или на википедии.
Начать можно с настройки сервера ACS 5.4.
1. В начале надо добавить устройство, с которого следует ожидать запросы на авторизацию Network Recourses > Network Devices and AAA clients > create вводите
имя и ip адрес,
можно ввести одиночный адрес, подсеть или диапазон адресов, после чего выбираем
тип сервера
TACACS+, задаем Shared Secret - tacacs. Так же можно указать тип устройства и его месторасположение, по этим данным в дальнейшем можно делать более гибкие правила доступа.
2. Добавим
домен контроллер, с которого будем брать информацию о пользователях которых дан
доступ к сети Users and identity stores > External identity stores > active directory > join\ test connection, в поле name вводим hostname домен-контроллера,
а так же учетный данные пользователя у которого есть права на доступ к DC, после чего жмем test connection
и join. Когда все пройдет удачно, то запись о данном
контроллере изменит статус на Joined and
Connected . Переходим на вкладку Directory Groups, жмем Select и выбираем нужную нам группу, после чего
кнопкой Add добавляем её в список.
3. Требуется создать Shell Profiles (Policy Elements > Authorization and Permissions > Device Administration) для каждой категории пользователей которые будут авторизироваться. Жмём Create вводим название группы (в начале создадим группу с полными правами) и переходим на вкладку Common Tasks, где требуется выставить Default Privilige static 15 (можно выставить минимальный и максимальный уровень), можно добавить время тайм-аутов и простоя, опционально.
Рис.1
По аналогии создается необходимый профиль для ограниченной группы.
4. Теперь требуется создать набор разрешенных команд для каждой группы. Полный набор команд создается очень просто - требуется лишь выставить галочку Permit any command that is not in the table below, и не вносить команды в список. Для ограниченного списка команд надо выбрать какие команды разрешить. Логика примерно такая - первое слово это команда, все остальное аргументы, "*" можно заменять все значения. Финальный вид будет примерно следующим:
Рис.2
5. Далее создаются собственно правила доступа, тут
логика следующая: создается Access Services, к которому относится Identity (
наш AD) и authorization (набор правил,
который содержит условие и результат). Для выбора того, какой Access Services будет
использоваться служит Service Selection Rules в котором
задается условие, а результатом будет Access Service. В качестве условия может выступать протокол, тип
устройств и их расположение (эти данные вводятся при добавлении устройств в Network Devices and AAA clients). А
теперь поэтапно:
5.1 Создаем
Access Service > Create вводим имя, выбираем User Selected Service Type параметр Device Administration,
в которой отмечает identity и authorization, жмем next и выбираем
протоколы для запросов, для авторизации через AD следует выбрать MSChapV2 и PEAP, в котором отмечает MSChapV2.
Рис. 3.1 Пример
настройки Access Service
Теперь когда Access Service создан, требуется определить источник, откуда ему брать данные для авторизации (в данном случае уже добавленный ранее домен контроллер). Для чего слева, в меню созданного Access Service выбирается меню Identity, и в режиме Single result selection надо выбрать наш домен.
Вот и подошли к самой интересной части - созданию правил.
Слева выбирается пункт Authorization.
Максимальную гибкость в создании правил дает кнопка Customize, она позволяет выбрать нужные поля для условия и результата. В самом просто варианте для условия потребуется членство в группе, а как результат Shell Profile и Command Set.
Создаем новое правило. Выбираем группу в AD, профиль и набор команд, тут сложного ничего нету. Главное изменить правило по умолчанию, которое находится в самом низа на Deny (по умолчанию стоит allow, иначе все можно будет).
Теперь перейдем к настройке роутера:
Задача такова: весь удаленный доступ должен проходить через ACS, доступ с консольного порта, на случай отсутствия связи через предустановленную учетную запись.
Приступим:
Включение расширенной модели AAA
aaa new-model
Необходимо добавить информацию про каждый ACS сервер который будет использоваться:
tacacs server DC-ACS-1
address ipv4 192.168.1.124
key TacacsKey
В некоторых старых системах описание проходит следующим образом:
tacacs-server host 192.168.1.124
tacacs-server host 192.168.1.125
tacacs-server directed-request
tacacs-server key TacacsKey
Создается группа, которая объединяет несколько серверов в группу и в случае недоступности одного, система обращается к следующему.
aaa group server tacacs+ DC-ACS
server name DC-ACS-2
server name DC-ACS-1
ip tacacs source-interface Vlan1
Сервера можно прописывать как по имени, так и по IP. Имя требует наличие рабочего DNS (вполне логично).
Далее следует настройка различных сеансов, можно настраивать как default значение сеанса, так и задавать новое имя. В данном случае default будет настраиваться для удаленных подключений и LocalDB для консольного порта.
aaa authentication login default group DC-ACS local (указывает использовать группу DC-ACS для аутентификации, если она недоступна то локальную базу УЗ)
aaa authentication login LocalDB local (использовать только локальную базу УЗ)
aaa authorization exec default group DC-ACS local if-authenticated (для запуска командной оболочки использовать группу DC-ACS, требует обязательную удачную аутентификацию)
aaa authorization exec LocalDB local if-authenticated (тоже, но с использованием локальной базы)
aaa authorization commands 1 default group DC-ACS local if-authenticated (требует авторизировать на сервере команды для уровня enable 1, при обязательной успешной аутентификации)
aaa authorization commands 15 default group DC-ACS local if-authenticated (тоже но для enable 15)
aaa authorization commands 15 LocalDB local if-authenticated
aaa authorization console (требует авторизацию при подключении к консольному порту)
aaa accounting exec default start-stop group DC-ACS (вести учет доступа к командной строке, подробнее в описании протокола)
aaa accounting commands 1 default start-stop group DC-ACS (вести учет всех команд уровня enable 1, на серверах группы DC-ACS)
aaa accounting commands 15 default start-stop group DC-ACS (тоже но для enable 15)
aaa accounting update newinfo (обновлять данные, подробнее в описании протокола)
Теперь надо создать учетную запись и настроить доступ на использование созданных групп
username admin password Pa$$w0rd
enable secret $3cR3t
Настройка консольного порта
line con 0
authorization commands 15 LocalDB (авторизация команд в локальной базе, на самом деле локальной базы нету, что разрешает все команды, но группу указать надо, иначе роутер будет ломиться на сервер, а в случае отсутствия связи это приведет к тому, что ничего нельзя будет сделать)
authorization exec LocalDB (использование локальных учетных данных для доступа к командой строке)
logging synchronous (полезная команда, позволяет не перебивать ввод команд выводом результата выполнения других)
login authentication LocalDB (использование локальной учетки для доступа к роутеру)
Настройка удаленного доступа
line vty 0 4
exec-timeout 60 0
timeout login response 180
logging synchronous
transport input ssh
Указание использовать SSH, тут никаких групп не прописывается, т.к. по умолчанию используется группа default, которая была выше определена.
Для того, чтобы увидеть как ведется учет доступа надо в ACS во вкладке Monitoring and Reports выбрать monitoring and report viewer. Слева в разделе Reports > Catalog > AAA Protocol > TACACS_Accounting>Run и выбрать период времени за который отобразить активность пользователей.
Вот такая штука, очень удобная и полезная, данная статья была лишь примером возможного использования, технология очень гибкая.
Комментариев нет:
Отправить комментарий