Пришлось как-то раз заняться довольно абсурдным занятием - установка на Windows сервиса Tacacs+. Связано это с тем, что в конторе отродясь не было серверов на Linux, а сетевого оборудования развелось довольно много + штат сотрудников IT отдела составлял 9 человек.
Присутпим. На tacacs.net скачиваем дистраибутив и выполняем установку по-умолчанию. При установке, возможно, инсталятор предложит ввести ключ для шифрования соединения между сервером авторизации и сетевым устройством. Можно не указывать, а потом ввести вручную через файл конфигурации. Всё, можно лезть в конфигу. Все ссылки на конфижные файлы есть на меню "Пуск" в соответствующих разделах.
- tacplus.xml - основной файл конфигурации.
В этом файле только два параметра которые я поменял:
<Port>49</Port> #порт на котором будет работать Tacacs+.
<LocalIP>192.168.4.6</LocalIP> #IP адрес сервера который будет слушать запросы.
<AccountingLog RolloverDays="30" RolloverMB="10" DeleteDays="90" LoggingLevel="Information"> </AccountingLog> #параметры логирования. Оставил только логи входа на оборудование и вводимые команды.
- Далее правим файл clients.xml.
Смысл в том, что бы в нужных группах указать пароль для шифрования соединения между сервером авторизации и сетевыми устройствами и разрешённые сети для авторизации.
У меня это выглядит так:
LOCALHOST GROUP
<ClientGroup Name="LOCALHOST">
<Secret ClearText="Nc2f22p44jo4(*#" DES=""></Secret> - пароль можно указывать в зашифрованном виде в параметре DES="", но я отнёсся к этому без фанатизма.
<Clients>
<Client>127.0.0.1</Client>
</Clients>
</ClientGroup>
INTERNAL GROUP
<ClientGroup Name="INTERNAL">
<Secret ClearText="Nc2f22p44jo4(*#" DES=""></Secret>
<Clients>
<Client>10.0.0.0/8</Client>
<Client>172.16.0.0/12</Client>
<Client>192.168.0.0/16</Client> - сети из которых принимаются запросы на авторизацию от сетевых устройств.
</Clients>
</ClientGroup>
DEFAULT GROUP
<ClientGroup Name="DEFAULT">
<Secret ClearText="Nc2f22p44jo4(*#" DES=""></Secret>
<Clients>
<Client>.*</Client>
</Clients>
</ClientGroup>
</ClientGroups>
</Clients>
- Плывём дальше - authentication.xml
В этом файле мы правим настройки для обмена информации с контроллером домена. Т.е. от какого пользователя (служебного) будет запрашиваться принадлежность пользователей к той или иной группе. Пользователи здесь подразумеваются те, которые будут пытаться авторизоваться на сетевое оборудование.
<UserGroup>
<Name>operator</Name>
<AuthenticationType>Windows_Domain</AuthenticationType>
<LDAPServer>192.168.4.6:389</LDAPServer>
<LDAPUserDirectorySubtree>OU=IT,OU=Office,OU=PCS,DC=pcs,DC=local</LDAPUserDirectorySubtree>
<LDAPGroupName>operator</LDAPGroupName>
<LDAPAccessUserName>ssv</LDAPAccessUserName>
<LDAPAccessUserPassword ClearText="" DES="GuuHJQ/11AT1En3kcYmc6mrg=="></LDAPAccessUserPassword>
</UserGroup>
<UserGroup>
<Name>adm</Name>
<AuthenticationType>Windows_Domain</AuthenticationType>
<LDAPServer>192.168.4.6:389</LDAPServer>
<LDAPUserDirectorySubtree>OU=IT,OU=Office,OU=PCS,DC=pcs,DC=local</LDAPUserDirectorySubtree>
<LDAPGroupName>adm</LDAPGroupName>
<LDAPAccessUserName>ssv</LDAPAccessUserName>
<LDAPAccessUserPassword ClearText="" DES="GuuHJQ/11AT1En3kcYmc6mrg=="></LDAPAccessUserPassword>
</UserGroup>
<UserGroup>
<Name>monitoring</Name>
<AuthenticationType>Windows_Domain</AuthenticationType>
<LDAPServer>192.168.4.6:389</LDAPServer>
<LDAPUserDirectorySubtree>OU=IT,OU=Office,OU=PCS,DC=pcs,DC=local</LDAPUserDirectorySubtree>
<LDAPGroupName>monitoring</LDAPGroupName>
<LDAPAccessUserName>ssv</LDAPAccessUserName>
<LDAPAccessUserPassword ClearText="" DES="GuuHJQ/11AT1En3kcYmc6mrg=="></LDAPAccessUserPassword>
</UserGroup>
В отдельном блоке прописываются настройки для каждой группы доступа. В примере это группы operator, adm и monitoring. К настройкам относятся IP адрес и порт на котором работает контроллер домена, путь к служебной учётке, группа доступа и, собственно, сама учётка с паролем. Пароль, кстати, тут указан в зашифрованном виде. В наборе приложений Tacacs+ есть утилитка для шифрования:
cd /d "C:\Program Files\TACACS.net"\
C:\Program Files\TACACS.net>tacdes.exe password
Encrypted password is HCv368BmiLGqNYfQNF74mA==
Или из соответствующего пункта меню в меню "Пуск".
- Финишная прямая - authorization.xml
Тут прописываются правила использования команд для уже получивших доступ на сетевое оборудование пользователей.
<!-- Version 1.2 -->
<Authorizations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Authorizations>
<Authorization>
<UserGroups>
<UserGroup>Network Engineering</UserGroup>
</UserGroups>
<ClientGroups>
<ClientGroup>LOCALHOST</ClientGroup>
<ClientGroup>INTERNAL</ClientGroup>
</ClientGroups>
<AutoExec>
</AutoExec>
<Shell>
<Permit>.*show.*</Permit> <!--This will allow all show commands -->
<Deny>.*</Deny> <!--This will deny all other commands -->
</Shell>
<Services>
</Services>
</Authorization>
<Authorization>
<UserGroups>
<UserGroup>adm</UserGroup>
</UserGroups>
<Shell>
<Permit>write.*</Permit>
<Permit>.*</Permit> <!--This will allow all commands -->
<!--<Deny>.*</Deny> This will deny all other commands -->
</Shell>
<AutoExec>
<Set>priv-lvl=15</Set>
</AutoExec>
</Authorization>
<Authorization>
<UserGroups>
<UserGroup>operator</UserGroup>
</UserGroups>
<Shell>
<Permit>show.*</Permit>
<Permit>ping.*</Permit>
<Permit>traceroute.*</Permit>
<Permit>clear.*</Permit>
<Permit>configure terminal</Permit>
<Permit>ip route.*</Permit>
<Deny>.*</Deny> <!--This will deny all other commands -->
</Shell>
<AutoExec>
<Set>priv-lvl=15</Set>
</AutoExec>
</Authorization>
<Authorization>
<UserGroups>
<UserGroup>monitoring</UserGroup>
</UserGroups>
<Shell>
<Permit>.*</Permit>
<!-- <Deny>.*</Deny> -->
</Shell>
<AutoExec>
<Set>priv-lvl=1</Set>
</AutoExec>
</Authorization>
<!-- DEFAULT PROFILE -->
<Authorization>
<Shell>
<Permit>.*</Permit> <!--This will allow all show commands -->
<!--<Deny>.*</Deny> This will deny all other commands -->
</Shell>
</Authorization>
</Authorizations>
</Authorizations>
В xml прописаны правила с примерами, которые можно оставить без изменений. Добавил только свои группы и настройки к ним.
Прежде чем запускать процесс имеет смысл проверить работает ли связность с контроллером домена:
C:\Program Files\TACACS.net>tactest.exe -s 192.168.4.6 -k <ключ из clients.xml> -u ssv -p <пароль для служебного пользователя>.
Если всё нормально, то в конце отчёта увидите Success 1. И на по следок проверяем конфигурационные файлы:
C:\Program Files\TACACS.net\tacverify.exe
Сообщит о файле и строке в которой найдены ошибки.
Ну, и:
C:\>net stop tacacs.net C:\>net start tacacs.net
Вся оригинальная документация по настройке находится на tacacs.net
В разделе сетевого оборудования смотрите настройки Tacacs+ для коммутаторов D-Link DES 30xx серии и маршрутизатора Cisco.
Если их создать, то в какую директорию нужно положить ?