tacacs+ на freeBSD

Итак, сегодня ставим такакс.
Ставить бум вот этот демон. Протокол разработала сама циска :) Мануал нашелся на циске.ком
Ставим:

mon# cd /usr/ports/net/tac_plus4
mon# make install clean

Далее тестируем демона на основе предложеного циской файла:

# Set up accounting file if enabling accounting on NAS
accounting file = /var/log/tac.log

# Enable password setup for everyone:
user = $enable$ {
login = cleartext “cisco”
}

# Group listings must be first:
group = admin {
# Users in group ‘admin’ have cleartext password
login = cleartext “admin”
expires = “Dec 31 1999”
}

group = operators {
# Users in group ‘operators’ have cleartext password
login = cleartext “operator”
expires = “Dec 31 1999”
}

group = transients {
# Users in group ‘transient’ have cleartext password
login = cleartext “transient”
expires = “Dec 31 1999”
}

# This user is a member of group ‘admin’ & uses that group’s password to log in.
# The $enable$ password is used to enter enable mode. The user can perform all commands.
user = authenuser {
default service = permit
member = admin
}

# This user is limitted in allowed commands when aaa authorization is enabled:
user = telnet {
login = cleartext “telnet”
cmd = telnet {
permit .*
}
cmd = logout {
permit .*
}
}

# user = transient {
# member = transients
# service = exec {
# When transient logs on to the NAS, he’s immediately
# zipped to another site
# autocmd = “telnet #.#.#.#”
# }
# }

# This user is a member of group ‘operators’
# & uses that group’s password to log in
user = authenuser {
member = operators
# Since this user does not have ‘default service = permit’ when command
# authorization through TACACS+ is on at the router, this user’s commands
# are limited to:
cmd = show {
permit ver
permit ip
}
cmd = traceroute {
permit .*
}
cmd = logout {
permit .*
}
}

Я обнаружил файлег /usr/local/etc/tac_plus.conf.example, его трогать пока не стал, создал свой tac_plus.conf и положил туда упомянутый выше текст.
Посмотрим как демон отпарсит данный файл:
# tac_plus -P -C /usr/local/etc/tac_plus.conf
У меня он сразу ругнулся на двух одинаковых юзеров authenuser. Пришлось одного

user = authenuser {
member = operators

заменить на

user = authenuser1 {
member = operators

Дальше всё отпарсилось нормально. Теперь посмотрим как оно работает:
# tac_plus -l /var/log/tac_plus.log -d 16 -C /usr/local/etc/tac_plus.conf
Запустили с уровнем отладки 16 :) Проверим запустился ли демон:
# ps ax | grep tac
Теперь мониторим логи:

[root@mon /usr/local/etc]# tail -f /var/log/tac_plus.log
Fri Jun 13 12:29:37 2008 [53852]: Reading config
Fri Jun 13 12:29:37 2008 [53852]: Version F4.0.4.14 Initialized 1
Fri Jun 13 12:29:37 2008 [53852]: tac_plus server F4.0.4.14 starting
Fri Jun 13 12:29:37 2008 [53853]: Backgrounded

UPD: Как выяснилось позже, демон запускается от рута, а потом даунгрейдится до юзера tacacs. Соответственно после этого уже не может писать в фалик /var/log/tac.log. Надо сделать так:
# chown tacacs /var/log/tac_plus.log
# chmod 0700 /var/log/tac_plus.log

Пришло время настроить железку на такакс авторизацию. Поскольку передо мной стояла задача в первую очередь сделать такакс для длинковских свичей, сразу на них и будем тестить.
Раздобыл DES-3028, прописал на нем айпишник, шлюз.
Далее залил на него вот такие чудесные команды:
disable authen_policy
create authen server_host 88.201.x.x protocol tacacs+ port 49 key "tackey" timeout 5 retransmit 2
create authen_login method_list_name tac_login
config authen_login method_list_name tac_login method tacacs+ local
create authen_enable method_list_name tac_login
config authen_enable method_list_name tac_login method tacacs+ local
config authen application telnet login method_list_name tac_login
config authen application telnet enable method_list_name tac_login
enable authen_policy

Дальше было много секса с конфигом tac_plus.conf
Пока что-то рабочее выгляидт так:

mon# cat tac_plus.conf
key = “tackey”
accounting file = /var/log/tac_plus.acct

user = admin {
default service = permit
login = cleartext “admin”
}

user = tacbilling {
default service = permit
login = cleartext “xxx”
}

# Enable password setup for everyone:
user = $enable$ {
login = cleartext “xxx”
}

Еще немного секса и вопросов на форуме длинк. Выяснилось, что протоколо tacacs+ поддерживается свичами dlink очень в кастрированом варианте. Аккаутинг не поддерживется, соответственно, контролировать права юзера можно только сказав ему пароль enable или не сказав :) Логи введенных команд увидеть не получится.

Чтобы запускалось автоматом добавляем в /etc/rc.conf
tac_plus_enable="YES"
Похоже, что по умолчанию он не пишет никакие логи. Если есть необходимость, то придется править rc.d скрипт, т.к. в конфигурационном файле я такой фичи не нашел.

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s