Централизованный доступ на Cisco оборудование используя Linux сервер с TACACS+
TACACS Plus является протоколом последнего поколения из серии протоколов TACACS.
TACACS — это простой сеансовый протокол управления доступом.
Использовался на серверах доступа ARPANET.
TACACS+ пользуется транспортным протоколом TCP. «Демон» сервера «слушает» порт 49, который является портом протокола TCP, выделенным для протокола TACACS. Этот порт зарезервирован для выделенных номеров RFC в протоколах UDP и TCP. Все текущие версии TACACS и расширенные варианты этого протокола используют порт 49.
Фундаментальным структурным компонентом протокола TACACS+ является разделение аутентификации, авторизации и учёта (AAA — Authentication, Authorization, Accounting).
Транзакции между клиентом TACACS+ и сервером TACACS+ идентифицируются с помощью общего «секрета», который никогда не передается по каналам связи. Обычно этот секрет вручную устанавливается на сервере и на клиенте. TACACS+ можно настроить на шифрование всего трафика, который передается между клиентом TACACS+ и демоном сервера TACACS+.
В примере будет настроен сервер, который принимает решение, разрешить или не разрешить определённому пользователю подключиться к оборудованию.
К сожалению под RHEL/CentOS 7 не нашел нормального рабочего пакета, а собирать с сорсов не хочется.
(Если уж и собирать с сорсов, то на BSD, пакет tac_plus4
, но об этом в следующий раз).
Установка Tacacs+
Добавим новый репозиторий /etc/yum.repos.d/nux-misc.repo
[nux-misc] |
Сохраним файл и установим пакет tac_plus
:
yum --enablerepo=nux-misc install tac_plus |
На этом установка завершена.
Конфигурация
Вся конфигурация TACACS+ хранится в одном файле /etc/tac_plus.conf
Первый и главный параметр в данном конфигурационном файле это ключ, раскомментируем его и сгенерируем, также необходимо будет внести данный ключ на каждом сетевом устройстве, которое собираемся контролировать с помощью сервера TACACS+.
key = "сгенерированный_ключ" |
Далее настраиваем список контроля доступа (ACL).
Используются регулярные выражения для того, чтобы настроить адреса и сети, которым разрешено использовать TACACS+ сервер. Изменим данный параметр на нужную нам сеть.
acl = default { |
Затем мы можем настроить IP-адрес устройства, которым хотим управлять, а также подсказку, которая показывает пользователя, который пытается авторизоваться на устройство.
# Example of host-specific configuration: |
Следом идут групповые параметры.
По умолчанию имеется группа admin
со включенной PAM-авторизацией, что означает, что мы будем использовать пользовательскую базу нашего Linux сервера. По умолчанию группа администраторов также подвержена ACL.
# Group that is allowed to do most configuration on all interfaces etc. |
Обратим внимание на следующую группу.
Группа sysadmins
аналогична группе admin
, а также обратим внимание, что им разрешено использовать некоторые команды.
# A group that can change some limited configuration on switchports |
После групповой конфигурации можно увидеть правила для пользователей.
При создании правила для нового пользователя, не забываем убедиться в том, что он создан в системе.
Далее следует блок для авторизации сервиса RANCID.
RANCID - это программное обеспечение, которое может контролировать сетевые устройства и проверять, была ли изменена их конфигурация, проверять таблицу маршрутизации, регистрировать изменения, выполнять команды для извлечения определенной информации.
Более подробно я о нем расскажу в одной из моих следующих статей.
# User account configured for use with "rancid" |
Последним параметром в конфигурационном файле является существующий enable
пароль на оборудовании, который мы можем использовать.
# Global enable level 15 password, generate a new one with tac_pwd |
У нас сформировалось небольшое представление о конфигурации TACACS+.
Попробуем создать нового пользователя и проверить работу авторизации.
Создаем нового пользователя и проверяем авторизацию
[root@tacacs /]# adduser roman |
[root@tacacs /]# service tac_plus start |
Не забываем добавить сервис TACACS+ в автозагрузку.
[root@tacacs /]# chkconfig --add tac_plus |
Разрешаем порт 49/tcp
на нашем файрволе.
Подключаемся на Cisco оборудование и настроим его для работы с TACACS+ сервером.
Нам нужно использовать команду aaa new-model
, в противном случае команды будут недоступны. Сообщим коммутатору использовать TACACS+ для аутентификации, но если сервер недоступен, коммутатор будет использовать локальную авторизация. Я настраиваю тот же ключ, который был использован в файле конфигурации tac_plus
.
c2960#conf t |
Теперь попробуем подключиться на коммутатор с использованием нового пользователя.
[root@tacacs /]# telnet 129.168.2.10 |
После входа в систему с именем пользователя roman
и паролем у нас есть доступ к коммутатору.
Переход в привилегированный режим (enable) с использованием внешнего сервера AAA
Чтобы перейти в режим enable
, введите команды аутентификации (привилегии уровня 15).
Вводим следующее:
aaa authentication enable default group tacacs+ enable |
Будет запрашиваться только пароль, имя пользователя — $enab15$
. Следовательно, имя пользователя $enab15$
должно быть определено на сервере AAA.
Если сервер TACACS+ не отвечает, нужно ввести разрешающий пароль, локально настроенный на маршрутизаторе.
Авторизация выполнения
Команда aaa authorization exec
определяет, обладает ли пользователь правами на запуск оболочки выполнения. Это средство должно вернуть информацию о профиле пользователя, такую как данные автокоманд, время ожидания простоя, таймаут сеанса, список доступа, привилегии и другие факторы, индивидуальные для каждого пользователя.
Авторизация выполнения выполняется только по линиям VTY и TTY.
В следующем примере используется TACACS+.
Пример 1. Одинаковые методы аутентификации выполнения для всех пользователей
Сначала используется команда аутентификации:
aaa authentication login default group tacacs+ local |
Все пользователи, которые хотят войти на сервер доступа, должны авторизоваться, используя TACACS+ (первый метод) или локальную базу данных (второй метод).
Вводим следующее:
aaa authorization exec default group tacacs+ local |
Примечание. В этом примере, если не указано ключевое слово local
и сервер AAA
не отвечает, то авторизация никогда не будет возможной и произойдет сбой соединения.
Примечание. В приведенных ниже примерах добавлять какие-либо команды на маршрутизаторе не требуется, а нужно только настроить профиль на сервере доступа.
Назначение уровней привилегий выполнения с сервера AAA
Если пользователю, выполняющему вход на сервер доступа, разрешено непосредственно входить в привилегированный режим enable
, настройте следующую AV-пару Cisco на сервере ААА
:
priv-lvl=15 |
Это означает, что пользователь перейдет непосредственно в режим enable
.
Примечание. Если для первого метода ответ не получен, то используется локальная база данных. Однако пользователь не войдет непосредственно в режим enable
, ему придется ввести команду enable
и указать разрешающий пароль (enable
).
Доступ с правами выполнения с использованием протокола TACACS+, затем локального метода
aaa authentication login default group tacacs+ local |
В приведенной выше команде:
- именованный список — это список по умолчанию (
default
); - существуют два метода аутентификации (групповой TACACS+ и локальный).
Все пользователи проходят аутентификацию на сервере TACACS+ (первый метод). Если сервер TACACS+ не отвечает, то используется
локальная база данных маршрутизатора (второй метод).
Для локальной аутентификации определите имя пользователя и пароль:
username xxx password yyy |
Так как используется список по умолчанию в команде aaa authentication login
, аутентификация при входе в систему будет автоматически выполнена для всех соединений при входе в систему (таких как TTY, VTY, консоль и AUX).
Примечание. Сервер (TACACS+) не отвечает на запрос aaa authentication
, отправленный сервером доступа, если отсутствует IP-соединение, если сервер доступа неправильно определен на сервере ААА, либо если сервер ААА неправильно определен на сервере доступа.
Примечание. Если использовать пример, приведенный выше, не включая ключевое слово local
, то получится следующее:
aaa authentication login default group tacacs+ |
Примечание. Если сервер AAA не отвечает на запрос проверки подлинности, аутентификация закончится неудачно (поскольку маршрутизатор не имеет альтернативного способа).
Примечание. Ключевое слово group
позволяет группировать имеющиеся серверные хосты. Данная возможность позволяет выбирать подмножество настроенных серверных хостов и использовать их для той или иной службы.
Доступ к консоли с использованием пароля линии
Расширим конфигурацию, так чтобы при входе на консоль выполнялась только аутентификация по паролю, заданному для линейной консоли 0.
Список CONSOLE определен и применяется к линейной консоли 0.
Вводим следующее:
aaa authentication login CONSOLE line |
В приведенной выше команде:
- именованный список – это CONSOLE;
- существует только один способ аутентификации (линейный)(консольный порт).
После того, как создан именованный список (в данном случае CONSOLE), чтобы он вступил в силу, его необходимо применить к линии или интерфейсу. Для этого используется команда login authentication имя_списка:
line con 0 |
Список CONSOLE переопределяет список методов по умолчанию для линии консоли 0. Чтобы получить доступ к консоли, введите пароль cisco
(настроен для линии консоли 0). Список по умолчанию по-прежнему используется для соединений TTY, VTY и AUX.
Примечание. Для аутентификации доступа к консоли по локальному имени пользователя и паролю используйте следующую команду:
aaa authentication login CONSOLE local |
Примечание. В этом случае в локальной базе данных маршрутизатора должны быть настроены имя пользователя и пароль. Список необходимо также применить к линии или интерфейсу.
Примечание. Чтобы аутентификация отсутствовала, используйте команду:
aaa authentication login CONSOLE none |
Примечание. В данном случае аутентификация при доступе к консоли отсутствует. Список необходимо также применить к линии или интерфейсу.
Методы
Методы аутентификации в aaa
. Перечислю наиболее распространенные:
- Local — база данных логинов и паролей храниться на самом сетевом устройстве. Требует
username {password | secret}
. - Local-case — тот же самый метод, что и
local
, но чувствительный к регистру при вводе логина. - Enable — для аутентификации требуется
enable{password | secret}
. - Line — для аутентификации требуется пароль
line
- None — аутентификация не требуется, доступ к устройству предоставляется без ввода логина и пароля.
- Group {tacacs+ | radius} — подключение серверов с установленным Tacacs+ или Radius для расширения возможностей конфигурации
aaa
.
• Group {group-name} — позволяет настроить группу серверов с установленным Tacacs+ или Radius или настроить частный сервер группы.