|
Ссылки
Базовые понятияTACACS - протокол между клиентами и сервером (49/tcp): Authentification (проверка тот ли пользователь за кого он себя выдает), Authorization (права выполнять то или иное действие) и Accounting (учет затраченных ресурсов). Используется Cisco в IOS для расширения внутренних средств контроля за пользователями (невозможно каждый раз переконфигурировать киску, если появился новый клиент) с помощью внешнего сервера. Имеет три модификации: tacacs, xtacacs, tacacs+. Первые две имеют историческое значение. Фирма Cisco дарит исходники тестового tacacs+ демона всем желающим (если знаешь, где искать ;). К сожалению, он несмотря на развитие перманентно остается в состоянии альфа-версии. Весь поток информации между сервером и NAS (network access server) шифруется с использованием общего секрета (key) и MD5. Установка
Я взял версию F4.0.2.alpha. Конфигурирование tacacs+
Подробное описание
синтаксиса есть в
документации, так что я его опущу. Имя файла
конфигурации задается ключом _-C при
запуске tac_plus. В начале файла должен
задаваться ключ (им
шифруются все
передаваемый пакеты, так что его
необходимо тщательно скрывать, знание ключа
позволяет извлечь пароли
пользователей - для борьбы с этим
надо перейти на IOS 11.2 и
включить поддержку DES в tac_plus). Всю, что начнается с # до конца строки считается комментарием. Если # нужен сам по себе (в паролях, например), то он д.б. заключен в кавычки.
Для каждого вида
деятельности
описываются группы. У меня их две: заход на BBS
Теперь описания обычных
пользователей выглядят так: Проверка подлинности клиента (authentification)В описании группы задаются параметры общие для всех членов группы. В описании пользователя указываются специфичные для данного пользователя параметры (перекрывают значения параметров в описании группы). Группы могут входить в состав других групп (число уровней иерархии не ограничено). Внутри фигурных скобок могут быть команды:
Специальные пользователи: $enabуровень$, где уровень - это уровень привилегий в EXEC IOS. Позволяет задать внешне-управляемый пароль для перехода на другой уровень привилегий. Задействуется командой: "aaa auth enable default tacacs+". Проверка прав (authorization).По умолчанию, NAS разрешает вошедшему пользователю все, если ее не сконфигурировать передавать запросы к демону. Демон, уж если запрос попал к нему, наоборот запрещает все по умолчанию. Демон может запретить выполнение команды или использование сервиса или модифицировать их параметры.
Авторизация команд
конфигурируется заданием
регулярных выражений в качестве
шаблонов для сравнения
запрошенной
пользователем команды
(синтаксис аналогичен egrep) и
действия "deny" или "permit": Используется первый подошедший шаблон. Если не подошел ни один, то команда запрещается. Все имена команд предварительно расширяются до их полного вида.Если нужно разрешить все или почти все, то используется строк:
Если
разрешается
выполнение хотя бы одной команды, то неявно
разрешается запуск EXEC, но можно
поменять параметры СЕРВИСА exec Авторизация сервисов. При попытке пользователя запустить сервис, NAS посылает демону запрос состоящий из набора AV-пар (attribut=value или attribut*value, если значение необязательно). Например, авторизация PPP/IP состоит из следующих запросов:
Каждый запрос обрабатывается так: ищется в описании пользователя или группы часть соответствующая сервису и протоколу. Затем для каждой обязательной AV пары, пришедшей с NAS, ищется значение атрибута из списка обязательных. Если нашли, AV пара передаются на выход. Если не нашли, ищем первое соответствие среди списка необязательных. Если нашли, передаем на выход. Если не нашли ни там ни там, то в зависимости от авторизации по умолчанию: deny - запретить команду (сервис?), permit - пропустить AV пару на выход. Для опциональной AV пары, пришедшей с NAS, ищется значение атрибута из списка обязательных. Если нашли, AV пара с демона - на выход. Если не нашли, ищем первое соответствие среди списка необязательных. Если нашли, передаем на выход AV пару с демона (при обоих поисках приоритет имеет точное соответствие). Если не нашли ни там ни там, то в зависимости от авторизации по умолчанию: deny - удалить AV пару, permit - пропустить AV пару с NAS на выход. После всего этого, для каждой обязательной AV пары на демоне, проверятся есть ли соответствующая ей пара на выходе, и если нет, то добавляем AV пару с демона на выход. Необязательность AV пары на демоне задается словом optional перед именем атрибута.
Программа
дополнительной
авторизацией до tacacs. Сервер доступа
передает tacacs+ серверу пакет запроса (поля
пакета запроса можно
передавать программе
предварительной
авторизации в виде
параметров) и набор AV пар
(передаются на
стандартный ввод
программме по одной на строке в формате
имя=значение и ожидаются на
стандартном выводе
программы - пробелы
запрещены!). Вызов
программы
оформляется так:
Программа будет вызываться несколько раз, т.к. приходит несколько запросов на аутехтификацию/авторизацию (у меня 4: shell, ppp/ip, ppp/lcp, еще раз ppp/ip). Программа должна передать AV-пары на свой стандартный выход (м.б. изменив их - я вставляю timeout, чтобы киска сама отрубала клиента, перерасходовавшего лимит). Коды возврата: 0 - авторизация разрешена, AV-пары не передаются на NAS; 1 - авторизация запрещена; 2 - авторизация разрешена, модифицированные AV-пары передаются на NAS со статусом AUTHOR_STATUS_PASS_REPL, дальнейшая обработка запроса не делается (включая как ту, что определена конфигурацией tacacs+ сервера, так и программу пост-обработки), нельзя использовать при авторизации комманды.
Программа
дополнительной проверки после tacacs
(вместе они не
работают, во всяком случае в версии 2.1).
Позволяет ограничить вход для
определенных
пользователей, категорий
пользователей в заданное время или на
заданный телефонный номер.
Аналогично, но программа будет вызвана уже после
обработки запроса tacacs+
сервером: Для отладки используйте "debug aaa authorization". Программы пре- и поставторизации вызываются через sh. Если программа не существует sh возвращает код возврата, зависящий от версии Unix. tacacs+ не обрабатывает случай зависания программы пре- и поставторизации. Программы пре- и поставторизации имеют те же права, что и tacas+ (лучше, если не root). Кавычки в AV-парах посылаемых на стандартный вывод использовать не надо (никто не будет их удалять). AV-пары авторизации (если разделены знаком равенства, то это обязательный аргумент, если звездочкой, то опциональный):
Учет (account).
В следующей строке должно быть задано имя
учетного файла Дополнительные AV-пары при учете (мугут использоваться любые AV-пары, определенные для авторизации):
Конфигурирование NAScallback (не проверял)
В
конфигурацию NAS
добавляем:
Конфигурация tacacs+: ОтладкаПроверка синтаксиса конфигурационного файла: tac_plus -P tac_plus -d уровень-отладки должен сбрасывать отладочную печать в /var/tmp/tac_plus.log. К сожалению, в этот файл попадают только сообщения о запуске tac_plus и все. Отлаочную печать мне удалось получить только на консоль, что в моей конфигурации (а/ц терминал) невозможно использовать. Решение проблемМестные особенности (устарело)Подсчет времени, который затратил каждый пользователь на PPPTACACS сервер заносит в свою базу данных (при нынешней конфигурации) запись о каждом конце сеанса PPP пользователя:
процедура извлекает из этой базы данных все записи за последние 86400 секунд (сутки) и суммирует потраченное каждым пользователем время. Структура нашего конфигурационного файланаш конфигурационный файл изготавливается из базы пользователей WorldGroup состоит из трех частей:
Запуск tacacs сервераcrontab пользователя bog содержит строчку, каждый час запускающую tacacs_reload.sh, которая либо запускает tacacs_сервер (если он не был запущен ранее) с конфигурационным файлом или извещает запущенный ранее сервер о необходимости заново прочитать конфигурационный файл. Учет времени использования каждого модема.С помощью процедуры из учетной базы данных TACACS сервера извлекаются данные за последние сутки, сортируются и суммируется траффик (в КБ) и время (в минутах) по ключу <имя терм. сервера, номер линии>. |
|||||||||||||||||
With any suggestions or questions please feel free to contact us |