Поиск по этому блогу

20.07.2009

Работа с tacacs'ом

Tacacs - AAA-сервер. Используется для авторизации пользователей и разграничения прав доступа. На операционной системе FreeBSD достаточно просто устанавливается из портов. К сожалению, в некоторых репозиториях линуксов его больше нет.
После установки необходимо изучить скрипт запуска. Станет понятно, что в /etc/rc.conf следует добавить строку
tac_plus_enable="YES"

Далее необходимо написать конфигурационный файл /usr/local/etc/tac_plus.conf
Я решил, что пароль enable будет браться из tacacs, а так же пользователи с максимальным уровнем привилегий 15 (в cisco ios) будут заведены там же. Для начала следует зашифровать DES'ом пароли. Это можно сделать имеющейся в составе сервера утилитой tac_pwd.
#tac_pwd
Password to be encrypted: mypassword
EEC7t7Q9w8Ggs

Разумеется, для разных пользователей должны быть разные пароли, но в примере я буду использовать только один.
user =  $enable$ {
login = des EEC7t7Q9w8Ggs
}

user = admin {
login = des EEC7t7Q9w8Ggs
service = exec {
default attribute = permit
priv-lvl = 15
}
}

user = operator {
login = des EEC7t7Q9w8Ggs
service = exec {
default attribute = permit
priv-lvl = 1
}
}

Очевидно, что на оборудовании тоже необходимо сделать изменения. Пусть это будет коммутатор.
tacacs-server host 10.0.0.254

aaa new-model
aaa authentication login default group tacacs+ local
aaa authentication enable default group tacacs+ enable none
aaa authorization exec default group tacacs+ local
aaa accounting exec default start-stop group tacacs+
aaa accounting commands 15 default start-stop group tacacs+
aaa accounting network default start-stop group tacacs+
aaa accounting connection default start-stop group tacacs+
aaa accounting system default start-stop group tacacs+

Проверка. Вводятся пароли, указаные в tacacs'е
$ telnet 10.0.0.250
Trying 10.0.0.250...
Connected to 10.0.0.250.
Escape character is '^]'.


User Access Verification

Username: admin
Password:

Switch#
..
$ telnet 10.0.0.250
Trying 10.0.0.250...
Connected to 10.0.0.250.
Escape character is '^]'.


User Access Verification

Username: operator
Password:

Switch>en
Password:
Switch#

В конфигурационный файл следует добавить строку с указанием файла, в который будет сохраняться аккаунтинговая инофрмация. В моем случае, настройки по-умолчанию не подходят, так как не использую Syslog, через который осуществляет логирование событий процесс tac_plus. Итак:
accounting file = /log/tac.acct

Проверка логирования.
Mon Jul 20 14:23:56 2009    10.0.0.250    admin    tty1    10.10.10.11    start    task_id=12    timezone=UTC    service=shell
Mon Jul 20 14:24:21 2009 10.0.0.250 admin tty1 10.10.10.11 stop task_id=12 timezone=UTC service=shell priv-lvl=15 cmd=show running-config
Mon Jul 20 14:25:36 2009 10.0.0.250 admin tty1 10.10.10.11 stop task_id=13 timezone=UTC service=shell priv-lvl=15 cmd=ping 10.0.0.250
Mon Jul 20 14:26:38 2009 10.0.0.250 admin tty1 10.10.10.11 stop task_id=14 timezone=UTC service=shell priv-lvl=15 cmd=configure terminal
Mon Jul 20 14:26:40 2009 10.0.0.250 admin tty1 10.10.10.11 stop task_id=15 timezone=UTC service=shell priv-lvl=15 cmd=interface FastEthernet 2/0/10
Mon Jul 20 14:26:41 2009 10.0.0.250 admin tty1 10.10.10.11 stop task_id=16 timezone=UTC service=shell priv-lvl=15 cmd=shutdown
Mon Jul 20 14:26:43 2009 10.0.0.250 admin tty1 10.10.10.11 stop task_id=17 timezone=UTC service=shell priv-lvl=15 cmd=no shutdown
Mon Jul 20 14:26:52 2009 10.0.0.250 admin tty1 10.10.10.11 stop task_id=18 timezone=UTC service=shell priv-lvl=15 cmd=hostname SWitch-1
Mon Jul 20 14:27:24 2009 10.0.0.250 admin tty1 10.10.10.11 stop task_id=12 timezone=UTC service=shell disc-cause=9 disc-cause-ext=2 pre-session-time=6 elapsed_time=208

Таким образом, логируется:
  • подключение
  • отключение
  • команды, выполненые в конфигурационом режиме
  • команды, выполненные в командном(?) режиме
Последнее невозможно выполнить через archive, но об это далее.

Хочу отметить несколько важных вещей.
1. Можно enable хранить/менять в tacacs'e
aaa authentication enable default group tacacs+ enable none

Пока оборудование будет подключено к сети - пароль будет браться с сервера, а не с конфигурационного файла. Для того, чтобы использовать цисковский enable необходимо выключить tacacs или отключить оборудование от сети.
2. Можно задать уровень, на котором будут отсылаться пакеты с командами.
aaa accounting commands 15 default start-stop group tacacs+

3. Можно создать группы пользователей, которым можно разрешить доступ только на определенное оборудование.

Для реализации п.3 используются списки доступа в конфигурационном файле tacacs. Например:
acl = USSR {
permit =^10.112.112.112$
deny =^10.
}

group = USSR {
default service = permit
service = exec {
default attribute = permit
priv-lvl = 15
}
acl = USSR
}
user = comrade {
login = des EEC7t7Q9w8Ggs
member = USSR
}