Зарисовка о настройке TACACS+ с доменной авторизацией на Ubuntu 16.
Пакет, находящийся в репозиториях Ubuntu не подходит. Счачиваем или от сюда или с сайта разработчика.
Нужно установить ещё:
apt-get install libnet-ldap-perl
Содаём каталоги:
sudo mkdir /var/log/tac_plus
sudo mkdir /var/log/tac_plus/access
sudo mkdir /var/log/tac_plus/accounting
sudo mkdir /var/log/tac_plus/authentication
Распаковываем архив и переходим в директорию с исходниками:
bzip2 -dc DEVEL.tar.bz2 | tar xvfp -
cd /tmp/PROJECTS
Устанавливаем необходимый инструментарий:
apt-get install libpcre3-dev libpcre3-dev libpcre2-dev gcc make
Выполняем
make
При возниконовении ошибок типа:
./PROJECTS/mavis/mavis_parse.c: In function ‘cfg_close’:
./PROJECTS/mavis/mavis_parse.c:936:21: warning: unused parameter ‘url’ [-Wunused-parameter]
int cfg_close(char *url, char *buf, int buflen)
./PROJECTS/mavis/mavis_parse.c: In function ‘mavis_cond_eval’:
./PROJECTS/mavis/mavis_parse.c:2071:14: error: ‘sym’ undeclared (first use in this function)
parse_error(sym, "You're using PCRE syntax, but this binary wasn't compiled with PCRE support.");
./PROJECTS/mavis/mavis_parse.c:2071:14: note: each undeclared identifier is reported only once for each function it appears in
./PROJECTS/mavis/mavis_parse.c: In function ‘mavis_script_eval_r’:
./PROJECTS/mavis/mavis_parse.c:2241:19: error: ‘sym’ undeclared (first use in this function)
parse_error(sym, "Substring matching requires PCRE support.");
make[2]: *** [mavis_parse.o] Error 1
make[2]: Leaving directory `./PROJECTS/build/linux-3.19.0-80-generic-x86_64/mavis'
make[1]: *** [build] Error 2
make[1]: Leaving directory `./PROJECTS/mavis'
make: *** [dirs] Error 1
выполняем:
./configure --with-pcre
и снова
make
make install
Установка должна пройти без ошибок.
Создаём файл конфигурации:
id = spawnd {
listen = { address = 0.0.0.0 port = 49 }
spawn = {
instances min = 1
instances max = 10
}
background = yes
}
id = tac_plus {
access log = /var/log/tac_plus/access/access-%d-%m-%Y.txt
accounting log = /var/log/tac_plus/accounting/accounting-%d-%m-%Y.txt
authentication log = /var/log/tac_plus/authentication/authentication-%d-%m-%Y.txt
mavis module = external {
setenv LDAP_SERVER_TYPE = "microsoft"
setenv LDAP_HOSTS = "192.168.50.20:389 192.168.50.22:389"
setenv LDAP_BASE = "DC=domain,DC=local"
setenv LDAP_SCOPE = sub
setenv LDAP_FILTER = "(&(objectClass=user)(objectClass=person)(sAMAccountName=%s))"
setenv LDAP_USER = "Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра."
setenv LDAP_PASSWD = "SDsdkj$"
setenv UNLIMIT_AD_GROUP_MEMBERSHIP = 1
setenv EXPAND_AD_GROUP_MEMBERSHIP = 0
setenv AD_GROUP_PREFIX = ""
setenv REQUIRE_TACACS_GROUP_PREFIX = 0
exec = /usr/local/lib/mavis/mavis_tacplus_ldap.pl
}
login backend = mavis
user backend = mavis
pap backend = mavis
host = world {
address = 192.168.50.0/24, 192.168.60.0/24
prompt = "Your actions are recording...\n"
key = "TacKdey!f"
}
group = TACADM {
message = "[Admin privileges]"
default service = permit
service = shell {
default command = permit
default attribute = permit
set priv-lvl = 15
}
}
user = ssv {
member = TACADM
}
}
Права для файла конфигурации:
chmod 755 /usr/local/etc/tac_plus.cfg
Далее создаём технологическую учётку в домене с неограниченным сроком действия пароля и без возможности изменить его же.
и группу, для адинистраторов и операторов, например:
И в качестве члена этой группы добавляем какого-нибудь пользователя.
Проверяем конфижный файл на ошибки:
/usr/local/sbin/tac_plus -P /usr/local/etc/tac_plus.cfg
В ответ ничего не должны получить. Далее проверяем конфигурацию AD:
/usr/local/bin/mavistest -d -1 /usr/local/etc/tac_plus.cfg tac_plus TACPLUS <user> <password>
В качестве пользователя берём любого доменного пользователя. В ответ должны получить помимо всего прочего:
Input attribute-value-pairs:
TYPE TACPLUS
TIMESTAMP mavistest-6452-1515587476-0
USER zal1
PASSWORD Zal1
TACTYPE AUTH
Output attribute-value-pairs:
TYPE TACPLUS
TIMESTAMP mavistest-6452-1515587476-0
USER zal1
RESULT ACK
PASSWORD Zal1
SERIAL wNX4CrfmtNE190ITLDhtRA=
DBPASSWORD Zal1
TACMEMBER "MedPersonalNemDan"
TACTYPE AUTH
Далее копируем скрипт запуска процесса Tacacs+ из диретории куда распаковали иходники, в /etс/init.d/:
cp ./PROJECTS/tac_plus/extra/etc_init.d_tac_plus /etc/init.d/tac_plus
Права на файл:
chmod 755 /etc/init.d/tac_plus
chown root:root /etc/init.d/tac_plus
И стартуем процесс:
/etc/init.d/tac_plus start
В качестве проверки, что 49 порт прослушивается и сервис работает нормально:
netstat -tulpen | grep tac
service tac_plus status
Указываем на файл конфигурации:
/usr/local/sbin/tac_plus /usr/local/etc/tac_plus.cfg
Это всё.