TACACS+
Autor
Margus Kurnikov AK21
Sissejuhatus
TACACS+ (Terminal Access Controller Access-Control System Plus) on võrguseadmete ligipääsukontrolli protokoll, mis hõlmab endas nii autentimise, autoriseerimise kui ka aruandluse teenuseid. Andmevahetuseks kasutatakse TCP porti 49.
Erinevalt RADIUS'st, mis on TACACS+ alternatiiv, eristab viimast autoriseerimise funktsionaalsuse lahutamine, mis võimaldab paindlikumat ligipääsukontrolli - kes võib käivitada käske, milliseid käske, millises seadmes. Iga kasutaja poolt sisestatud käsk saadetakse kesksesse TACACS+ serverisse autoriseerimiseks, kus kontrollitakse, kas vastavat käsku on lubatud käivitada konkreetsel kasutajal või grupil. TACACS+ on võimalik luua käskude käivitamisele näiteks kasutaja-, seadme-, või ajapõhiseid reegleid.
TACACS+ protokolli tugi on olemas levinud suuremate tootjate võrguseadmetes - Cisco, Juniper/Netscreen, HP, Alcatel/Lucent, Ericsson jt.
Antud kirjutises käsitlen lihtsaid TACACS+ seadistamisvõimalusi.
Paigaldamine
TACACS+ teenus paigaldatud Ubuntu 12.04-le.
Testitava ruuterina kasutusel Cisco 1812.
TACACS+ teenuse paigaldus:
apt-get install tacacs+
Teenuse seadistamine
Konfiguratsioonifaili manual:
man tac_plus.conf
Aruandluse logifail:
/var/log/tac_plus.acct
TACACS+ konfiguratsioonifaili asukoht:
/etc/tacacs+/tac_plus.conf
Algupärane konfiguratsioonifail:
# Created by Henry-Nicolas Tourneur(henry.nicolas@tourneur.be)
# See man(5) tac_plus.conf for more details
# Define where to log accounting data, this is the default.
accounting file = /var/log/tac_plus.acct
# This is the key that clients have to use to access Tacacs+
key = testing123
# Use /etc/passwd file to do authentication
#default authentication = file /etc/passwd
# You can use feature like per host key with different enable passwords
#host = 127.0.0.1 {
# key = test
# type = cisco
# enable = <des|cleartext> enablepass
# prompt = "Welcome XXX ISP Access Router \n\nUsername:"
#}
# We also can define local users and specify a file where data is stored.
# That file may be filled using tac_pwd
#user = test1 {
# name = "Test User"
# member = staff
# login = file /etc/tacacs/tacacs_passwords
#}
# We can also specify rules valid per group of users.
#group = group1 {
# cmd = conf {
# deny
# }
#}
# Another example : forbid configure command for some hosts
# for a define range of clients
#group = group1 {
# login = PAM
# service = ppp
# protocol = ip {
# addr = 10.10.0.0/24
# }
# cmd = conf {
# deny .*
# }
#}
user = DEFAULT {
login = PAM
service = ppp protocol = ip {}
}
# Much more features are availables, like ACL, more service compatibilities,
# commands authorization, scripting authorization.
# See the man page for those features.
Kasutajate autentimist on võimalik tac_plus's seadistada kolmel moel:
- Autentimine lokaalse passwd faili alusel - /etc/passwd
- Autentimine /etc/tac_plus/tac_plus.conf faili lisatud DES salajaste võtmetega
- Autentimine PAM-ga LDAP serveri pihta
Käsitlen kahte esimest varianti:
Autentimine passwd faili põhjal
Lisan TACACS+ võtme , mis tuleb ka hallatava(te)sse ruuteri(te)sse seadistada (sellest juttu edaspidi), kommenteerin välja rea, kus määratakse autentimisandmete allikaks /etc/passwd fail.
Loon grupi "net_admins", omistan Cisco kõrgeima ligipääsutaseme - privilege level 15. Kasutaja "margus" määran grupi "net_admins" liikmeks.
.
.
.
key = y97A14T2#741zQ+
.
.
.
default authentication = file /etc/passwd
.
.
.
group = net_admins {
default service = permit
login = file /etc/passwd
enable = file /etc/passwd
service = exec {
priv-lvl = 15
}
}
user = margus {
member = net_admins
}
.
.
.
Autentimine DES salajase võtmega
Loon grupi "uusgrupp", madalaima ligipääsutasemega - privilege level 0.
Kasutaja "jaan" lisan loodud gruppi ja defineerin krüpteeritud parooli.
Parooli krüpteerimiseks kasutan käsku tac_pwd.
.
.
.
key = y97A14T2#741zQ+
.
.
.
group = uusgrupp {
default service = permit
service = exec {
priv-lvl = 0
}
}
.
.
.
user = jaan {
login = des UT.e3EErKERm2
member = uusgrupp
}
.
.
.
Autoriseermine
Autoriseerimine võimaldab keelata hallatavas võrguseadmes teatud käskude käivitamist. Need reeglid on omistatavad nii kasutajatele kui gruppidele. Reeglid on keelavad või lubavad.
Lihtne näide, kus on loodud grupp "piiratud_ligip22s", mille liikmetele on lubatud ligipääs vaid ruuterile IP-ga 172.16.1.103.
Grupi liikmetel on keelatud käivitada käske "configure" ega "debug".
.
.
.
acl = ruuter1_acl {
permit = 172.16.1.103
}
group = piiratud_ligip22s {
default service = permit
login = file /etc/passwd
enable = file /etc/passwd
service = exec {
priv-lvl = 15
}
cmd = configure {
deny "."
}
cmd = debug {
deny "."
}
acl = ruuter1_acl
}
user = uno {
member = piiratud_ligip22s
}
.
.
.
Cisco AAA seadistamine
Lihtsustatud AAA konfiguratsioon Cisco ruuteris
! luuakse uus AAA skeem, millega lubatakse sisestada allolevad käsud aaa new-model ! ! Käsib seadmel iga sisse logiva kasutaja nime ja parooli valideerida TACACS+ serveri pihta aaa authentication login default group tacacs+ enable ! ! Kui kasutaja on autoriseeritud, siis sisselogimisel viiakse ta kohe exec (enable) režiimi aaa authorization exec default group tacacs+ if-authenticated ! ! Autoriseeritakse privilege level 15 kasutajaid ja kui TACACS+ server pole kättesaadav, siis kasutatakse lokaalset kasutajakontot aaa authorization commands 15 default group tacacs+ ! ! Salvestab aruandlust privilege level 15 kasutajate kohta: aaa accounting commands 15 default start-stop group tacacs+ ! ! TACACS+ serveri IP tacacs-server host 172.16.1.100 ! ! TACACS+ serveri võti tacacs-server key y97A14T2#741zQ+ !
Tõrkeotsing
Kontrollime, kas TACACS+ protsess jookseb:
ps -ef | grep tac_plus
Peale igat tac_plus.conf konfiguratsioonimuudatust, tuleb taaskäivitada TACACS+ teenus:
/etc/init.d/tacacs_plus restart
Kui teenus ei peaks pärast konfiguratsioonimuudatust käivituma,
* Restarting TACACS+ authentication daemon tacacs+ [fail]
siis tuleb viga otsida tac_plus.conf failist.
Kasutatud allikad
http://en.gentoo-wiki.com/wiki/TACACS_Server_using_tac_plus
http://www.stben.net/tacacs/users_guide.html
http://www.debianhelp.co.uk/tacas.htm
http://www.cisco.com/en/US/docs/ios/12_1/security/command/reference/srdathen.html