TACACS+ на Linux с аутентификацие через Active Directory
В сети присутствует множество различных гайдов на эту тему, но поднять сервис на Linux и связать его с Active Directory в течении 30-60 минут не удалось. Предлагаю свой путь решения задачи, с подробными комментариями.
Приступим к установке сервиса. В качестве ОСи используется CentOS.
Устанавливаем необходимые служебные пакеты
Все операции производим под «root»
(соответственно домашняя директория /root)
Установка Tac Plus
Добавляем директории для файлов аккаунтинга
Добавляем Tac Plus в автозагрузку
Проверка включения в автозагрузку
Правим конфигурационный файл
!!! После каждого изменения конфига сервис должен быть перезапущен (service tac_plus restart)
Пример рабочего конфигурационного файла (нужно заменить содержимое tac_plus.cfg, предварительно внеся коррективы в прокомментированные поля)
id = spawnd {
listen = { port = 49 }
spawn = {
instances min = 1
instances max = 10
}
background = yes
}
id = tac_plus {
access log = ">/var/log/tac_plus/access/%Y%m%d.log"
accounting log = ">/var/log/tac_plus/acct/%Y%m%d.log"
mavis module = external {
setenv LDAP_SERVER_TYPE = "microsoft"
setenv LDAP_HOSTS = "ldaps://domain.name:636"
setenv LDAP_SCOPE = sub
setenv LDAP_BASE = "dc=domain,dc=name"
setenv LDAP_FILTER = "(&(objectclass=user)(sAMAccountName=%s))"
setenv LDAP_USER = "aduser@domain.name"
setenv LDAP_PASSWD = "passw0rd"
setenv FLAG_USE_MEMBEROF = 1
exec = /usr/local/lib/mavis/mavis_tacplus_ldap.pl
}
login backend = mavis
user backend = mavis
host = world {
address = ::/0
welcome banner = ""
enable 15 = crypt $1$eqIkg6p0$jzhK5.
key = "TACACSPASSWORD"
}
group = ADMIN {
message = "[Admin privileges]"
default service = permit
service = shell {
default command = permit
default attribute = permit
set priv-lvl = 15
}
}
group = VOIP {
message = "[VoIP-admin privileges]"
default service = permit
service = shell {
default command = permit
default attribute = permit
set priv-lvl = 15
cmd = interface {
permit "Lo*"
permit "Se*"
deny .*
}
cmd = aaa { deny .* }
cmd = username { deny .* }
cmd = line { deny .* }
cmd = delete { deny .* }
cmd = boot { deny .* }
cmd = enable { deny .* }
cmd = archive { deny .* }
cmd = router { deny .* }
cmd = ip {
permit "address *"
deny .*
}
cmd = tacacs-server { deny .* }
cmd = radius-server { deny .* }
cmd = privilege { deny .* }
cmd = erase { deny .* }
cmd = write {
permit "memory"
deny .*
}
cmd = format { deny .* }
}
}
}
Проверяем правильность конфига (если все ОК, то ничего не выведет)
Создаем группы в AD
В Active Directory необходимо создать 2 группы (исходя из нашего конфига): tacacsadmin и tacacsvoip.
Tac Plus отрезает префикс «tacacs» при соотношении группы, указанной в AD, группе в конфиге и переводит оставшиеся символы в верхний регистр.
Таким образом tacacsadmin соответвствует ADMIN, а tacacsvoip соответствует VOIP (изменить данное поведение можно поигравшись атрибутами: AD_GROUP_PREFIX и REQUIRE_TACACS_GROUP_PREFIX в конфиге).
Группы указаны в конфиге большими буквами не случайно!
Добавляем пользователей в созданные группы.
Запуск и остановка сервиса TACACS
Конфигурация сервиса AAA на оборудовании Cisco
tacacs server TACSRV1
!IP-адрес tacacs-сервера
address ipv4 172.16.2.2
!ключ должен совпадать с тем, что указан в конфиге на сервере
key TACACSPASSWORD
timeout 2
!
aaa new-model
aaa group server tacacs+ TACSERVICE
server name TACSRV1
aaa authentication login default group TACSERVICE local
aaa authentication login CONSOLE local
aaa authentication enable default group TACSERVICE enable
aaa authorization config-commands
aaa authorization exec default group TACSERVICE local
aaa authorization exec CONSOLE local
aaa authorization commands 15 default group TACSERVICE local
aaa accounting commands 15 default start-stop group TACSERVICE
!
line con 0
login authentication CONSOLE
line vty 0 15
Методика дебага
1. Проверка работы модулей LDAP (должно вернуть пустую строку без ошибок). Ошибки в случае не установленного пакета perl-LDAP.
2. Проверка связки TACACS - LDAP. Должно вернуть в поле RESULT - ACK. В случае ошибки проверить блок конфига, ответственный за интеграцию с AD.
<source lang="bash">
3. Проверка, что сервис запущен и слушает порт tcp 49
4. Для того, чтобы увидеть обращения к сервису
5. Дебаг запросов обрабатываемых сервисом
Благодарю за внимание!
Источники информации и вспомогательные ссылки:
http://packetroute.wordpress.com/2012/12/12/tacacs-ad-centos-free/
http://www.pro-bono-publico.de/projects/howto-tac_plus-ads.html
http://habrahabr.ru/post/194750/
http://habrahabr.ru/post/217669/
|