AAA (authentication, authorization, accounting), tacacs+, RADIUS
AAA (authentication, authorization, accounting),
tacacs+, RADIUS
Сервер доступа (tacacs+, RADIUS) -
это программа, которая крутится на
UNIX-компьютере и отвечает на запросы киски типа: есть ли
такой
пользователь, какие у него права и ведет
журнал посещений.
Собственно AAA есть authentication
(установление личности
пользователя), authentication
(проверка полномочий) и accounting (учет
использования ресурсов). Для каждой из трех
функций
используется
поименованный список методов,
примененный к
интерфейсу. При
необходимости
использования любой функции AAA IOS
"пробегает" по этому списку пытаясь
соединиться с
соответствующим сервером. Если
соединиться не удается
(локальная БД отвечает всегда), то IOS
переходит к
следующему методу из списка. Если
методов в списке не осталось, то
регистрируется отказ. По
умолчанию, к каждому
интерфейсу
применяется список методов по имени default. Если не
требуется что-то необычное, то
рекомендуется
определить ровно один свой список
методов с именем default и пусть он
применяется ко всем
интерфейсам.
Как
конфигурировать сервер TACACS+ смотри
отдельную главу, для
конфигурирования RADIUS глава еще(?) не
написана. Cisco позволяет
использовать все атрибуты TACACS+ при работе с RADIUS при
помощи vendor specific attribut (cisco-avpair= "shell:priv-lvl=15"). NAS
привязывается к серверу так (надо
включить AAA и
определить параметры серверов, можно
определить несколько TACACS+ или RADIUS
серверов - в этом случае NAS будет
пробовать их по очереди):
aaa new-model # будем
использовать tacacs+, а не старые
варианты
aaa processes число #
количество
параллельных процессов,
обслуживающих AAA
(количество
одновременно заходящих
пользователей). У меня загрузка второго
процесса составляет 10% от
загрузки 1го, так что, думаю, что двух
достаточно.
show ppp queues #
показывает, сколько AAA
процессов запущено и их
статистику (странное название и
странные числа он
показывает)
tacacs-server host
IP-адрес-tacacs+-сервера [single-connection] [port
порт(49)] [timeout
секунд] [key
ключ-шифровки] # tac_plus 4.0.2 не
поддерживает single-connection; можно
указывать несколько серверов, они будут
пробоваться по очереди
tacacs-server key key <пароль> # ключ, с
помощью которого шифруются
сообщения между киской и tacacs+
сервером
tacacs-server retransmit retries #
число попыток
достучаться до сервера (по
умолчанию - 2)
tacacs-server timeout seconds #
сколько ждать, чтобы
убедиться, что сервер не работает (по
умолчанию - 5 секунд)
ip tacacs source-interface subinterface-name #
задать исходный IP-адрес TACACS
пакетов
tacacs-server directed-request #
включен по умолчанию;
управляет
использованием имен
пользователей в виде:
имя@сервер; если включен, то на
указанный сервер
(проверяется, что он указан в
конфигурации, иначе вся строка
посылается на сервер по
умолчанию) посылается короткое имя
пользователя, если выключен - вся строка на
сервер по умолчанию. В
документации не описано действие ключа restricted.
radius-server host IP-address [auth-port
порт] [acct-port порт] non-standard # non-standard
означает реализацию cisco и
обеспечивает работу ключей key и configure-nas
radius-server key ключ
radius-server configure-nas # радиус
сервер будет снабжать
информацией о
статических маршрутах и пулах IP
адресов
radius-server retransmit retries
radius-server timeout seconds
radius-server dead-time minutes
radius-server vsa send [accounting | authentication] #
позволять
использовать VSA (vendor specific attribut)
ip identd # поднять ident сервер
authentication
Для
установления личности
определяется список методов
идентификации и
применяется к
определенному
интерфейсу.
Проверка при входе на линию:
aaa authentication login
{имя-списка | default } метод1 [
метод2 ] ...
Методы при проверке на входе бывают
следующие:
-
tacacs+ -
использовать сервер TACACS+
-
none -
удостоверять личность без
проверки
-
enable -
использовать пароль
администратора (enable password) для
проверки личности
-
krb5 -
использовать сервер Kerberos 5
-
krb5-telnet -
использовать сервер Kerberos 5
соединяясь с ним через telnet
-
line -
использовать пароль,
привязанный к линии
-
local -
использовать локальную БД имен
-
radius -
использовать сервер RADIUS
Для
использования сервера kerberos
необходимо иметь версию IOS с
поддержкой шифровки.
Применить список методов к линии(ям):
-
line тип-линии
номер-линии
[конечный-номер-линии-из-интервала]
-
login authentification { default |
имя-списка-методов }
Пример:
aaa authentication login default tacacs+ enable #
по-умолчанию проверяем каждый вход на линию с
помощью tacacs+ сервера, а если он не
отзывается, то
спрашиваем пароль
суперпользователя. Т.к.
используется имя default, то он будет
действовать на всех линиях.
Если
пользователи
подсоединяются с RAS по PPP, минуя
интерфейс командной строки, то для
проверки их личности
необходимо определить список методов
установления личности при
соединении PPP, по
умолчанию никакой проверки не
производится (список default не
используется):
aaa authentication ppp
{имя-списка | default } метод1 [
метод2 ] ...
Применить список методов к
интерфейсам (if-needed только для TACACS и XTACACS, callin
вызывает
аутентификацию только для входных
соединений, one-time
позволяет вводить имя и пароль в одной
строке; д.б.
установлена encapsulation ppp на
интерфейсе):
-
interface
тип-интерфейса
номер-интерфейса
-
ppp authentication {chap | pap | chap pap | pap chap | ms-chap } [if-needed]
{default | list-name} [callin] [one-time]
Методы при проверке личности во время
установления
PPP-соединения бывают
следующие:
-
tacacs+ -
использовать сервер TACACS+
-
radius -
использовать сервер RADIUS
-
none -
удостоверять личность без
проверки
-
local -
использовать локальную БД имен
-
krb5 -
использовать сервер Kerberos 5
-
if-needed - не делать
проверку, если она уже была
произведена при входе на линию
Пример:
aaa authentication ppp default if-needed none # при
включении PPP,
производим фиктивную проверку
пользователя, если не
проверяли его раньше (может это уже
можно выключить?), т.к.
используется имя default, то сами
интерфейсы
конфигурировать не надо.
Проверка личности при переходе в
привилегированный режим:
aaa authentication enable default
метод1 [ метод2 ] ...
Методы при проверке личности при входе в
привилегированный режим:
-
enable -
использовать пароль
администратора (enable password) для
проверки личности
-
line -
использовать пароль,
привязанный к линии
-
none -
удостоверять личность без
проверки
-
tacacs+ -
использовать сервер TACACS+
-
radius -
использовать сервер RADIUS
Бывает еще двойная проверка (access-profile, ip trigger-authentication,
show ip trigger-authentication, clear ip trigger-authentication)
и
автоматическая двойная проверка, но это
какакя-то муть.
Аутентификация без AAA (как только AAA
сконфигурирован, то он имеет больший
приоритет)
-
установление пароля на линию (в режиме
конфигурации линии), до 80 букв и цифр
(должен начинаться с буквы):
password
пароль
login
-
проверка имени
пользователя (в
глобальном режиме
конфигурации, password и autocommand д.б.
последними в строке, можно
использовать несколько строк на одно имя -
информация будет
накапливаться),
используется также для CHAP (чтобы
отвечать на CHAP-запросы имя должно
соответствовать имени хоста, на
удаленном хосте это имя тоже д.б.
определено с тем же
секретом):
username имя [nopassword | password
тип-шифровки
пароль | password
пароль] [callback-dialstring
номер-телефона] [callback-rotary
номер-группы-rotary] [callback-line [tty]
line-number [ending-line-number]]
[access-class
номер-ACL] [privilege
уровень ] [autocommand
команда ] [noescape ] [nohangup ]
Что касается длин имени и пароля:
безопасным является
использование имен и паролей длиной до 8
символов
включительно. Более длинные имена и пароли (якобы до 25
символов, буквы и цифры и пробелы, первый
символ - буква)
обрабатываются по-разному в разных
версиях IOS. CHAP секрет - до 11
символов. tac_plus пароль,
шифрованный с помощью crypt - до 8
символов.
-
установка пароля на
привилегированные команды
enable [secret] [level
уровень-привилегий ] {password |
encryption-type encrypted-password}
рекомендуется
использовать опцию secret (пароль будет
храниться в
шифрованном виде). Первый уровень
привилегий дается каждому
пользователю при входе по
умолчанию, 15 уровень - режим
суперпользователя, команды
изменения уровня (enable, disable, exit, help)
находится на нулевом уровне. encryption-type:
-
7 (для enable без secret,
собственный алгоритм
шифрования, есть программа
декодирования)
-
5 (для enable secret,
необратимое
шифрование)
-
0
(незашифрованный текст)
-
шифровать пароли (а также прочие ключи)
service password-encryption
-
переместить
определенную команду на другой уровень (очень
удобно для clear line ;)
privilege mode level level command
(где mode - командный режим: exec, configure, interface, line и др.)
-
дать всем
пользователям, входящим с
определенной линии
указанный уровень
привилегий (в режиме
конфигурации линии)
privilege level level
-
посмотреть текущий уровень
привилегий
show privilege
-
перейти на другой уровень (в режиме EXEC)
enable уровень
Тонкая настройка:
-
aaa authentication local-override #
позволяет
использовать локальную базу
пользователей перед
обращением к другим методам, но такие
пользователи
получаются абсолютно
бесправными (даже EXEC не могут
запустить, т.к. не проходят
авторизацию).
-
timeout login response seconds #
сколько секунд IOS будет ждать ввода имени или
пароля (30 секунд, есть еще
количество попыток)
-
aaa authentication password-prompt text-string
(если он не заменен внешним
сервером)
-
aaa authentication username-prompt text-string
(если он не заменен внешним
сервером)
-
aaa authentication banner delimiter string
delimiter
-
aaa authentication fail-message delimiter string
delimiter
-
аутентификация при выходных звонках или когда
дозвонившийся тоже хочет
убедиться, что попал куда хотел (PAP)
ppp pap sent-username username password password
-
отказаться отвечать на запросы CHAP (но
выдавать такие запросы самому)
ppp chap refuse [callin]
-
отвечать на запросы CHAP только после того, как
собеседник
представится (действует по
умолчанию)
ppp chap wait secret
-
выдавать себя за указанный хост (по
умолчанию посылается
собственное имя NAS) для соседей, имя
которых не найдено в списке
пользователей
ppp chap hostname hostname
-
определить секретное слово (до 11
символов) для CHAP для соседей, имя
которых не найдено в списке
пользователей
ppp chap password secret
-
количество попыток (по
умолчанию 3)
tacacs-server attempts count
authorization
Проверка прав доступа
(полномочий)
производится в случаях:
-
exec (атрибуты
терминальной сессии)
-
command (проверка прав на
исполнение команд, в т.ч.
конфигурации)
-
network (соединение PPP, SLIP, ARAP)
-
reverse access (для
обратного telnet,
установление личности
потребуется в любом случае), только tacacs+ или radius
Для определения
полномочий
определяется список методов
определения
полномочий и
применяется к
определенному
интерфейсу. Так же как и в случае с
аутентификацией, список по имени default
применяется к
интерфейсу по умолчанию. Прежде , чем
конфигурировать
авторизацию,
необходимо включить AAA на NAS и
сконфигурировать
аутентификацию, TACACS+,
локальную БД
пользователей и/или RADIUS сервера.
Методы проверки
полномочий
-
tacacs+ -
использовать сервер TACACS+ для
получения AV пар с
полномочиями
-
if-authenticated - все
аутентифицированные
пользователи получают
полномочия
-
none -
полномочия не
проверяются
-
local -
используется локальная BD,
определяемая командами username
(только небольшая часть
возможностей доступна)
-
radius
-
kerberos instance map
Конфигурация
именованного списка методов
авторизации
aaa authorization [network | exec |
command level | reverse-access ]
[имя | default ]{ tacacs+ |
if-authenticated | none | local | radius |
krb5-instance}
Для
аутентифицированных
пользователей, зашедших с
консольной линии,
авторизация не
производится.
Привязка
поименованного списка методов к линии или
интерфейсу (в
соответствующем режиме
конфигурации):
authorization {arap | commands level |
exec | reverse-access} {default |
list-name}
или
(одновременно
определяется список методов
авторизации для SLIP)
ppp authorization {default | list-name}
Запретить
авторизацию команд
конфигурации:
no aaa authorization config-command
Примеры:
aaa authorization exec default tacacs+ if-authenticated #
проверяем права на запуск EXEC (shell так у киски
называется) с помощью сервера tacacs+, а если его нет, то
даем разрешение, если личность
пользователя
удостоверена - только
благодаря этой строчке tacacs+ сервер
возвращает
автокоманду (в нашем случае telnet или ppp)
aaa authorization commands 1 default tacacs+ if-authenticated #
проверяем права на
исполнение команд уровня 1
(непривилегированных) с помощью сервера tacacs+, а если его
нет, то даем
разрешение, если личность
пользователя
удостоверена
aaa authorization commands 15 default tacacs+ if-authenticated
# проверяем права на
исполнение команд уровня 15
(привилегированных) с помощью сервера tacacs+, а если его нет, то
даем разрешение, если личность
пользователя
удостоверена
aaa authorization network default tacacs+ if-authenticated #
проверка прав, если кто-то лезет к нам по сети, с
помощью сервера tacacs+, а если его нет, то даем
разрешение, если личность
пользователя
удостоверена
Пример
авторизации обратного telnet-a (raccess {}
обеспечивает доступ к любому порту, если raccess
вообще нет, то и доступа не будет) :
aaa authorization reverse-access tacacs+
часть
конфигурационного файла для tac_plus (внутри
описания
соответствующего
пользователя или группы)
service = raccess {
port#1 = cat1/tty2
port#2 = cat2/tty5
}
accounting
Так же как и для
аутентификации и
авторизации
определяется список методов учета и
применяется к
определенному
интерфейсу или линии. По
умолчанию
применяется список по имени default. Если
примененный список не
определен, то учет не
производится.
Методы учета:
-
tacacs+ - AV пары учета
посылаются на tacacs+ сервер
-
radius - AV пары учета
посылаются на RADIUS сервер
Типы
учитываемых событий:
-
network - PPP, SLIP и ARAP сессии,
включают счетчики байт и пакетов
-
exec - учет
терминальных EXEC-сессий
-
command - учет отдельных команд?
-
connection - учет
информации о исходящих
соединениях (telnet, rlogin, LAT, TN3270, PAD)
-
system - события
системного уровня (только default
список и только tacacs+)
Объем информации:
-
stop-only -
посылается информация только о
завершении события
-
wait-start -
посылается информация о начале события и о его
завершении, ожидается
подтверждение от TACACS+ или RADIUS
сервера о получении этой
информации (необходим, если нужен учет
максимального числа
одновременных сессий в tac_plus)
-
start-stop -
посылается информация о начале события и о его
завершении
-
none - ничего не посылать
Конфигурация
именованного списка методов учета:
aaa accounting {system | network | exec
| connection | commands level} {default
| list-name} {start-stop | wait-start |
stop-only | none} [method1
[method2...] ]
Затем применяем
определенный ранее метод учета к линии
accounting {arap | exec | connection |
commands level} {default |
list-name}
или интерфейсу
(одновременно
определяется список методов
авторизации для SLIP)
ppp accounting {default | list-name}
Мелкие настройки:
-
aaa accounting suppress null-username # не
посылать учетные записи, если имя
пользователя - пустая строка (aaa authentication login method-list
none)
-
aaa accounting update {newinfo | periodic
number} # регулярно посылать учетную
информацию при
изменениях/периодически (ранее по
умолчанию посылались update newinfo)
Посмотреть учетную
информацию о текущих сессиях:
show accounting
|