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 (Authentication, Authorization and Accounting - AAA) teenuseid.
TACACS+ on kasulik võrguseadmete halduse korraldamisel, kuna teenus võimaldab võrguseadmete kasutajaid ja ligipääsuõigusi tsentraalselt hallata, ehk väldib olukorda, kus võrguadministraator peaks kümnetes/sadades seadmetes haldama seadmete lokaalseid kasutajakontosid. Piisab vaid igasse seadmesse lisada identne AAA konfitükk.
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.
TACACS+ näol on tegemist Cisco poolt arendatud vabavaraga.
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 või lubada 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" ja "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 } . . .
Kasutajate eemaldamine
passwd faili põhjal autentimisega piisab vastavast masinast kasutaja eemaldamisest ja korrektne oleks ka tac_plus.conf failist vastava kasutaja konfiguratsioon eemaldada.
DES salajase võtmega autentimisel tuleb eemaldada kasutajapõhine konfiguratsioon tac_plus.conf failist.
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